跳至正文

USACO 2.4.1 The Tamworth Two 解题报告

  • OI路程

这题模拟的这个细节不用说把?就是俺顺序来,如果不知道的话看我的代码,这部分(deal函数)写的比较清楚,但是比较麻烦的问题是循环多久才结束呢?题目并没有说什么特殊条件那?呵呵,暗示的条件还是有的,在1010的牛和人在每个格子上最多就是4种方向吧?也就是说每个格子对每个人来说都有400种状态,那么400400就是所有的状态,如果在160000种情况都没有相遇的话那么一定是在死循环中间(即死追死跑。) 代码如下: de lang="c"> / LANG: C ID: yylogoo1 PRO[……]

继续阅读

USACO 2.3.5 Controlling Companies 解题报告

  • OI路程

读取a公司控制b公司的股份c,再把这个股份加给所有控制a的公司上,如果可以产生控制一个公司的情况,那么就控制该公司,并且把其公司占有其他公司的所有股份都自己加一份,如果有可以控制的情况,那么继续控制。 代码如下: / LANG: C ID: yylogoo1 PROG: concom / #include #define MAX 101 int have[MAX][MAX], con[MAX][MAX]; void con(int a, int b) { int i; if(con[a][b]){ r[......]

继续阅读

mount -n 的用途

  鸟哥的书上有这么一个例子,当计算机出问题了,当/etc只读时怎么挂载根目录,它用的指令是mount -n -o remount,rw / ,那么这个mount -n是什么意思呢?

[……]

继续阅读

USACO 2.3.4 Money Systems 解题报告

  • OI路程

这个题目就是一个无限背包的例子,没有任何的修改,没有任何的特殊化,直接把代码搬进去就是的: / LANG: C ID: yylogoo1 PROG: money / #include long long f[10000]; int main(void) { int i, j, t; int v, n; freopen("money.in", "r", stdin); freopen("money.out", "w", std[......]

继续阅读

USACO 2.3.3 Zero Sum 解题报告

  • OI路程

这个题目刚看到谁都觉得简单,爆容易,但是仔细一想,怎么去组合数字?怎么去把符号和数字放在循环里?都是需要解决的问题,我刚开始使用的是全局变量保存那些数据,忽然发现用全局的数据太复杂了,有好多数据需要改变再还原,所以只能用局部变量,每个函数拥有一套独立的参数变量,这样及时修改了也影响不到别的函数(这里有一种操作系统的感觉,一个程序被多次执行,每个进程独立的空间)。 这题谈不上什么算法不算法的,就是纯粹的暴力循环,每种情况都考虑一次。唯一要说的就是这个srch的参数: 1.now就是枚举的标示量,表示这是第几层枚举[……]

继续阅读

USACO 2.3.2 Cow Pedigrees 解题报告

这题我折腾了一个星期,真的好死心,一个多星期一直在查到底是哪里出了问题,从感觉上算法是没有错误的,而且能够拿90分,那问题到底出在哪里呢?这一题我反反复复得找,再看标程,对着看,终于昨晚上找到了,算法没有一点问题,实现上有问题,超过了int 的范围,所以数据就出现了错误,然后就OVER了。 题目的思路是这样的,f[i][j]代表i个节点构成j层的树的个数,那么dp方程就是f[i][j] = {2 f[k][j – 1] f[i – k – 1][l]}(l = 1….j – 2, k = 1..i – 2[……]

继续阅读

USACO 2.3.1 Longest Prefix 解题报告

这个题目我也不知道这算法叫什么,反正就是用f[i]记录第i个字符能否到达,如果可以到达再把所有的元素一个个和i之后的进行比较,如果完全相同那么就把f中那个元素的长度加上i的值标记为1。 其实怎么说呢,就是有一个大的数组记录第i个是否能够有那些元素组成,如果可以就从这里再和所有的元素比较下,如果有相匹配的话就产生了一个更长的前缀,把它标记,然后再进行循环。 如果还是没有懂的话,那就看代码吧: / LANG: C ID: yylogoo1 PROG: prefix / #include #include ch[......]

继续阅读