
usaco
DickensTone
这个作者很懒,什么都没留下…
展开
-
usaco Broken Necklace
这题在输出解释的时候已经给了我们一个很好的解法。与其判断在哪里剪短,还不如直接加一条项链(str)在后面。/**LANG: C++PROG: beadsID: grttman1**/#include #include #include #includeusing namespace std;const int maxn = 1000 + 5;char str[maxn *原创 2017-09-15 09:43:47 · 287 阅读 · 0 评论 -
usaco Subset Sums
题意:给你一个n,代表有1到n个数。求有多少对字串(假如每个串的和为A,B),A = B = n个数的和 / 2。我们可以求出所有满足要求的不同的串,串数除以2,便为答案。dp[i][j]表示,前i个数,组成和为j有多少种方法。对于每一个数,我们有两种方案,选,那么dp[i][j] = dp[i - 1][j - num[i]], 不选,那么dp[i][j] = dp[i- 1][原创 2017-12-02 16:48:12 · 204 阅读 · 0 评论 -
usaco Healthy Holsteins
奶牛需要v种一定量的维他命。给你g种食物和他们维他命含量,求出最少需要哪几种食物,即可满足要求。每种食物只能喂一次。这题可以直接搜索:对于每种食物,有两种选择,选它或者不选。依靠这两种判断就可以简单搜索了。/**TASK: holsteinID: DickensToneLANG: C++**/#include#includeusing namespace std;c原创 2017-11-19 09:49:11 · 272 阅读 · 0 评论 -
usaco The Castle
题意:给你一个矩形房间,判断有多少个房间,以及最大的房间,以及去掉一堵墙后最大的房间面积,以及是那一堵墙。条件:输入的时候,输入的是房间的状态t,t由1或2或4或8组成。代表西,北,东,南有墙。看下二进制1 是00001, 2是00010, 4是00100, 8是01000。那么位运算很容易算出由哪些墙组成。输出墙的时候,面积的优先级>靠西>靠南且方向只能有N和E组成,代表当要去除南边的墙原创 2017-11-01 17:31:40 · 204 阅读 · 0 评论 -
usaco Prime Palindromes
题意:给a,b。找出a - 》 b 范围内又是回文串又是素数的数。看了看别人的博客,偶数个数组成的回文串一定不是素数。还有,开头是偶数的数,也不是,这个很容易想到。求素数的时候用到了唯一分解定理算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3......Pnan,这里P1P2P3......Pn均为质数,其中原创 2017-10-24 16:25:53 · 273 阅读 · 0 评论 -
usaco Arithmetic Progressions
思路来自此处点击打开链接这道题目的题意很搞人啊,arithmetic progression是等差数列。就算不知道意思,应该也是能推断出来的(反正我是看了题解才知道)。输入两个数m,n。n代表数列的长度,m代表(0 输出首项和公差。输出顺序是从小到大,公差为第一优先级,首项为第二优先级。这一题暴力很容易想到,可是需要优化。首项,我们可以在给定m能求出的p^2 + q^2范围里查找。公差转载 2017-10-15 11:01:49 · 326 阅读 · 0 评论 -
usaco Number Triangles
题意:给一个数字三角形,每个数字可以向左下或右下相加,求最大的和。额,看到了就直接dp了。/**TASK: numtriID: DickensToneLANG: C++**/#include#include#define max(x, y) (x > y ? x : y)const int maxn = 1000 + 5;int dp[maxn][maxn];int m原创 2017-10-22 19:19:36 · 177 阅读 · 0 评论 -
usaco Superprime Rib
题意:给一个数n,你要求出所有满足条件的n位数。条件为,比如abcdef这6位数,必须满足,a,ab,abc,abcd,abcde,abcdef都为素数。直接dfs,每增加一个数判断是否为素数。因为唯一分解定理,所以我们只需算出最大数maxn的sqrt(maxn)内的素数,就能快速判断一个素是否为素数。/**TASK: sprimeLANG: C++ID: DickensTone原创 2017-10-28 15:39:41 · 286 阅读 · 0 评论 -
usaco Ski Course Design
好吧,暴力都不会了。。。。点击打开链接题意:有n座山峰,可以增加或减小他们的高度,使得它们互相没有超过17的高度差。改变一座山峰的x高度,需要花x* x的经费。求最小的经费。这题暴力枚举就能过。我们可以枚举区间,比如0 - 17 , 1 - 18.。。。。。。。这样就能过啦。但是我们可以减小区间的范围,0-最高峰。如果还让最高峰增加,那么绝对不是最佳方案。一开始我还想以枚举每座山峰为标转载 2017-10-05 10:56:22 · 347 阅读 · 0 评论 -
usaco Dual Palindromes
题意:给两个数n, s。找出比s大的前n个2-->10进制中至少两个是回文串的数。如果做了上一题,那么这一题并不难,因为都是考进制转换的。唯一需要注意的点是,是以2个以上(包括两个)进制2 --> 10能转转化为回文串。/*ID: DickensToneLANG: C++PROB: dualpal*/#includeconst int maxn = 33;int num[原创 2017-09-21 21:15:31 · 175 阅读 · 0 评论 -
usaco Mother's Milk
题意:给你三个杯子,体积分别为v1, v2, v3。其中第三个杯子是装满牛奶的。问:输出所有v1的杯子为空时,v3可能的体积。每次倒牛奶,结束时只能是倒入的杯子满了,或者是倒的杯子空了。这一题采用了暴力搜索/**TASK: milk3ID: DickensToneLANG: C++**/#include#include#include#include#includeus原创 2017-10-17 17:39:05 · 221 阅读 · 0 评论 -
usaco Palindromic Squares
这是一道考进制转换的题,唯一的难点就是不要知道进制如何转换就得意忘形。题意:给定一个数n, 求数的square,由十进制转换为B进制,看它是不是回文串。那么只要知道数如何转换为回文串就可以了。例:给数m(10进制),转换为B进制。先求得a = m % B, b = m / B。m = b * B + a。那么a就是B进制最后一个数。m = b / B。接着循环直到m = 0;代码 :原创 2017-09-20 16:29:11 · 242 阅读 · 0 评论 -
usaco Prime Cryptarithm
小暴力,题意有点坑,看了别人的才完全明白。题意:给你n个数。判断n个数能够形成多少种成立的算式。算式成立的标准是,*号必须由n个数代替。当然还有最坑的The partial products must be three digits long, even though the general case (see below) might have four digit partial pr原创 2017-09-27 21:41:40 · 301 阅读 · 0 评论 -
usaco Milking Cows
一题枚举,比较好实现的方法是,sort开始的时间。在枚举的时候,用pre和last维护区间。那么最长的挤奶时间是ans1 = max(ans1,last - pre);间隔时间在枚举的时候很好找,只要下一头奶牛的开始时间大于last便有间隔(已sort)/** PROG:milk2 LANG:C++ ID:DickensTone**/#include#in原创 2017-09-16 20:36:25 · 299 阅读 · 0 评论 -
usaco Barn Repair
这一题虽说水,可以开始自己居然没想到如何做。题意:牛棚的门坏了,你得修,所有棚排成一排,用固定数量的板子把有牛住的棚(每一块板子可以无限长),求被板子封住的门的最少数量。给你板子最多数m,牛棚的总数s,牛的数量c,和牛住的棚的编号。这是贪心专题,所以这一题只需要选择空余的房间数量就好了,求出牛住的最小编号Min,最大编号Max,那么只需要在Min -- > Max之间剔除最大连续空房间原创 2017-09-25 10:22:41 · 254 阅读 · 0 评论 -
usaco Mixing Milk
水题,水题,不多说。每次选择最便宜的就可以了。/**TASK: milkID: DickensToneLANG: C++**/#include#include#include#includeusing namespace std;const int maxn = 5000 + 5;struct node{ int cents; int tot;原创 2017-09-24 16:12:40 · 204 阅读 · 0 评论 -
usaco Friday the Thirteenth
找规律,1900的一月一日是星期last = 1,那么1月13日是星期((13 - 1)% 7 + last) = 6;last = 6;因为一月有31天,所以1月13离2月13是31天, 2月13日是星期 (31 % 7 + last) % 7 = 2; last = 2;以此类推。/**LANG: C++PROG: fridayID: grttman1**/#include原创 2017-09-15 10:29:03 · 165 阅读 · 0 评论 -
usaco Hamming Codes
求出n个在最长b位(二进制)汉明距离为d的数。题解:就是简单的枚举一个数,然后判断是否与以找到的数有冲突。因为b最大为8,所以枚举量最大为1/**ID: DickensToneLANG: C++TASK: hamming**/#includeint ans[64 + 5];int distance(int x, int y){ int m = x^y, cnt转载 2017-11-24 10:23:31 · 242 阅读 · 0 评论