跳至正文

技术

USACO 2.1.5 Hamming Codes 解题报告

这题的话,话说感觉就是一个暴力的枚举,没多余要考虑的,一方面对所有整数开始枚举,设当前枚举的是i,那么在用i和所有已知的海明码进行比较,海明距离大于等于D的话就成为一个新的海明码,一直枚举出N个海明码。 得出海明距离也很简单,就从第一个位开始,一个不同的就记录一下,我直接把8位都枚举一次,所以B这[……]

继续阅读

USACO 2.1.4 Healthy Holsteins 解题报告

咋一看,真是一个爆难的题目,但是仔细一想,其实也很简单,怎么个简单呢?对于每种食物来说,只有两种选择:吃或不吃,对吧,暴力枚举就是,只有2^15种方案,虽然数字还是非常大的,但是一秒钟的时限还是超不了,代码晚点发,在Linux下。 代码来了: / ID: yylogoo1 PROG: holste[......]

继续阅读

USACO 2.1.3 Sorting A Three-Valued Sequence 解题报告

首先用两个数组分别保存排了序的数组和没排序的数组,然后再根据这两个判断,当前这个位置上应该是放什么数,而实际上放的是什么数,如果两个位置上需要的都正好是对方所有的,那么这是最好的,进行循环,把所有这种的都交换掉,然后累计交换次数。 但是最后会有这么一种情况,三个位置需要的分别是1, 2, 3,而他[……]

继续阅读

Noip 2010 提高组 第三题 关押罪犯

  • OI路程

  这题的话,就是贪心,把最大的罪恶值的两个囚犯都不关在一个牢房里,反复的贪心,但是数据太大,不允许使用邻接表和邻接矩阵,用什么结构来保存呢?我觉得(也是网上的资料里的咯)使用动态分配是个方法,因为最多10000条边,根据实际情况来分配,这样不会有浪费的空间,也就不会导致空间爆掉了。

#include[……]

继续阅读

Noip 2010 提高组 第二题 乌龟棋

  • OI路程

  在考场上我的思想是这么的,f[n +
j] = max{当在n这个位置时还有布数为j的卡片|f[n] + map[n + j]},后来发现这么是不行的,因为f[n + j]不是最大但也可能有更好的取值,因为它可以留下另外一张卡片,只有10分呢!
  后来,我又想了另外一种算法,用一个维护一个栈,[……]

继续阅读

Noip 2010 提高组 第一题 机器翻译

  • OI路程

  纯水题,维护一个列队,作为内存列队,并且写两个操作:进列队、出列队;因为数据量十分的小(n<=1000)所以可以维护一个用于标记的数组,如果单词在列队中则置为1,不在则置为0,接着就是暴力——模拟就是。

#include <stdio.h>

int queue[[……]

继续阅读