跳至正文

USACO 3.3.2 Shopping Offers 解题报告

  • OI路程

这题我折腾了三天,一直在考虑怎么排除这种情况,怎么考虑到那种情况,虽然我想得到是DP,也是正确的方程,但是我也不知道怎么那么多现在觉得傻里傻气不需要考虑的问题,反正好傻就是,其实方程就是F[a1][a2][a3][a4][a5]=min{F[ a1-P[i][1] ][ a2-P[i][2] ][ a3-P[i][3] ][ a4-P[i][4] ][ a5-P[i][5] ]+P[i][0]},然后的话,就不难了,这里的细节处理有很多种方法,我的初始状态就是F[a1][a2][a3][a4][a5] = a1 [……]

继续阅读

USACO 3.3.1 Riding The Fences 解题报告

  • OI路程

应该说比较明显吧,一个欧拉路径,其实为什么能这么实现一个欧拉路径我自己都还没想清楚,更别指望我说的清楚,看着标程写的代码,唉,不算抄袭但也确实没理解为什么能这样,反正这就是一个欧拉回路的实现,代码如下: 晚点发上来,在Fedora里面。 2011-01-29 17:19 代码: de lang="c">/ ID: yylogoo1 PROG: fence LANG: C / #include int map[501][501]; int count[501]; int used[……]

继续阅读

USACO 3.2.6 Sweet Butter 解题报告

  • OI路程

刚刚打算用O(n^3)的算法,但超时百分百,马上就转型,用SPFA,每个节点用一次SPFA不会超时,因为这是一个稀疏图,800个节点却最多1450个,太给力了,每个节点用一次SPFA,然后判断是否为最优解,如此就够了,代码: / LANG: C ID: yylogoo1 PROG: butter / #include #include int n, p, c; int cows[500]; int map[801][800]; int link[801][800]; int count[800]; int di[......]

继续阅读

USACO 3.2.5 Magic Squares 解题报告

  • OI路程

就是纯模拟,先逆着模拟过去,再正着模拟回来就可以了,需要使用到康托展开: de lang="c">/ LANG: C ID: yylogoo1 PROG: msquare / #include #include #include int f[40320]; typedef int box[8]; int hash(box q) { int i, j, t = 0, k; int fac[8] = {0, 1, 2, 6, 24, 120, 720, 5040}; int sm[……]

继续阅读

USACO 3.2.4 Feed Ratios 解题报告

  • OI路程

这题网上普遍的解法都是什么高斯消原,什么解线性方程,我可真不懂,只看到有个人说暴力上能够干掉,我就暴力了咯,代码如下: de lang="c">/ LANG: C ID: yylogoo1 PROG: ratios / #include #include int need[3]; int have[3][3]; int ans[3]; int best = 300, last_ans; int tmp[3]; void check(void) { int i, t, s; int[……]

继续阅读

Fedora 删除旧内核

  • Linux

由于Fedora更新升级非常的频繁, 所以, 非常有必要清除陈旧的内核,方法如下:

1. 查看当前系统中已安装的内核相关包: [root@knityster ~]# rpm -qa | grep kernel kernel-headers-2.6.32.12-115.fc12.i686 kernel-firmware-2.6.32.12-115.fc12.noarch kernel-PAE-devel-2.6.32.11-99.fc12.i686 kernel-devel-2.6.32.12-115.f[......]

继续阅读

USACO 3.2.3 Spinning Wheels 解题报告

  • OI路程

转360次就一定会转回来,刚开始我还在想应该使用最小公倍数吧,后来想了想才发现用360就可以了,用最小公倍数麻烦的多,甚至可能还慢些! 然后忽然发现比较麻烦的一个地方就是每个轮子有5个孔,不好放在循环里,不知道怎么弄,看了下别人的建议,发现我好傻,直接使用数组记录就可以了,:-),每个空隙在数组中+1,最后等于5的就是。但是现在觉得可能这么也不好,因为如果出现了某一个轮胎上两个孔重叠不就可能出问题了,但是这个只出现在数据上,不合逻辑所以就没有这种数据吧,所以我AC了,但是这还是要考虑下,如果这样的话,还是是用数组[……]

继续阅读

USACO 3.2.2 Stringsobits 解题报告

  • OI路程

这题最开始,我是爆搜,从1向上递增地搜,没过,超时了;后来用深搜,直接搜位数小于等于l的,也超时了,实在没有办法了,到网上看了题解,天!好简单阿! f[i][j]代表i位长的且1最多为j的二进制数的个数,那么就有一个DP方程,f[i][j] = f[i – 1][j] + f[i – 1][j – 1] 因为第i位要么是1要么是0,如果是0那个数就是f[i – 1][l],如果是1就是f[i – 1][j – 1]。 之后,根据f[i][j]就可以确定输出了,从f[n][l]开始,如果m<=f[n -[……]

继续阅读