usaco
文章平均质量分 56
ZhouMu
这个作者很懒,什么都没留下…
展开
-
uscao--camelot
搜索题,需要耐心加细心,交了50遍才过的一个题 #include #include #include #include #include using namespace std; struct pos { int x,y; int ic; }; pos qs[1600]; pos ki; int d[40][26][40][26]; int dx[]=原创 2012-11-26 15:15:55 · 410 阅读 · 0 评论 -
usaco--prime3
终于搞出来了,只能说,真的好变态。。。。。。 题解还是参考NOCOW,这里不赘述了, 最后一组数据好危险,想了想其实后面还可以再剪枝优化一下,中间搜索的时候加上一个检查,如果行列和对角线任意一处的和大于了题目给出的SUM就可以减掉。 这是不加中途检查的result Executing... Test 1: TEST OK [0.032 secs, 6004 KB] Test 2原创 2012-12-27 16:24:36 · 461 阅读 · 0 评论 -
usaco--job
没有nocow这题起码得写一个月,,, #include #include #include #define maxn 1200 using namespace std; ifstream fin("job.in"); ofstream fout("job.out"); int n,m[2]; int t[2][100]; int de[100],ct[2][maxn]; void init()原创 2012-12-14 22:43:29 · 444 阅读 · 0 评论 -
usaco-cowcycle
#include #include #include #include #define maxn 11 #define zout fout using namespace std; ifstream fin("cowcycle.in"); ofstream fout("cowcycle.out"); int n,m; int a[maxn],b[maxn]; int f1,f2,r1,r2; in原创 2012-12-17 00:09:54 · 427 阅读 · 0 评论 -
usaco--race3
木有参考题解,第一问蛮简单的,数据小,暴力过。 第二问看了题解也还是不明白,就自己想了,参考刘汝佳求无向图割点的pre数组,只不过这道题的pre数组用宽搜求出,至于为什么,哥给不出证明,只能在脑袋里想想是对的,这种感觉很无奈的。 枚举第一问得到的答案的每个点,假设这个点是C(不明白指代的看代码),从C点开始往下深搜,如果又搜回到了C点,而且中途经过的点最小pre值小于C点的pre值,C点就不是原创 2012-12-30 16:23:14 · 502 阅读 · 0 评论 -
usaco--buylow
求一个最长的递减序列,要求长度,和不一样的解的个数 #define zout fout #define debug #define maxn 5020 using namespace std; typedef long long Long; ifstream fin("buylow.in"); ofstream fout("buylow.out"); struct bignum { int a原创 2012-12-17 23:25:38 · 345 阅读 · 0 评论 -
usaco-lgame
首先过滤字典,把不符合要求的字典单词都pass掉,然后对字典进行两两组合再进行判断,就OK 了,有些细节要把握好。 觉得有点丑的代码 #include #include #include #include #include #define zout fout #define maxn 40000 using namespace std; ifstream fin("lgame.in"原创 2012-12-31 11:57:41 · 422 阅读 · 0 评论 -
usaco--shuttle
可耻的照着别人总结出来的规律写的。 #include #include #include #include #define zout fout using namespace std; ifstream fin("shuttle.in"); ofstream fout("shuttle.out"); int n,ic; void init() { fin>>n; } void op(int原创 2013-01-01 23:12:57 · 310 阅读 · 0 评论 -
usaco --4.4.2--Pollutant Control
一道网络流的题,求出最大流,然后求出最小割的最小的边数,还要输出最小割字典序最小的一组; 正儿八经的写的第一道网络流的题目吧,进步蛮大的。 基本思路是,先求出最大流,然后枚举每一条边,删除这条边后求最大流,如果求出的最大流加上被删除变的容量等于没有删除任何边的最大流,就说明这条边属于最小割,输出之,注意输出的时候记录下已经输出了多少条边了,输完了就退出,不然会多输出,至于为什么可以先知道最小割原创 2013-01-06 16:03:26 · 682 阅读 · 0 评论 -
usaco--frame
题目给出一个方块互相叠加的图,求出所有可能的重叠顺序 解题思路:按照NOCOW的题解建好图之后,就是求一个拓扑排序的所有解了,搜索的时候按照字典序搜索就可以按照字典序求出所有的答案,这个题唯一的难点就是输出拓扑图所有的解,以前按照删边求的方法只能求一种解,脑筋不知道怎么就不灵光了,翻了资料才知道怎么求,其实也简单的。PS:表示对USACO好无语,数组越界报超时,好无辜的debug好久 #inc原创 2013-01-09 18:20:05 · 394 阅读 · 0 评论 -
usaco-dith
可耻的把模板扔上去就过了 #include #include #include #include #include #include #define maxn 220 #define INF 0x7fffffff using namespace std; int cap[201][201],flow[201][201],a[201]; //cap[][]表示最大容量,flow[][]表原创 2012-12-12 18:09:31 · 396 阅读 · 0 评论 -
usaco--stall4
还是可耻的扔模板 using namespace std; ifstream fin("stall4.in"); ofstream fout("stall4.out"); int pre[maxn]; bool vis[maxn]; bool g[maxn][maxn]; int n,m; void init() { fin>>n>>m; memset(g,0,sizeof(g));原创 2012-12-12 18:10:37 · 380 阅读 · 0 评论 -
usaco--range
一个简单DP题; #include #include #include #include #define maxn 300 using namespace std; int g[maxn][maxn]; ifstream fin("range.in"); ofstream fout("range.out"); int n; int omin(int x,int y,i原创 2012-11-26 15:16:50 · 304 阅读 · 0 评论 -
usaco --A Game--game1
DP题 nocow题解: 博弈问题,可以用动态规划解决。设sum[i][j]表示从i到j的所有数字和,dp[i][j]表示从i到j这部分的先取者能获得的最大数字和。 dp[i][j]=sum[i][j]-min(dp[i][j-1],dp[i+1][j]); #define maxn 120 using namespace std; int sum[maxn][maxn];原创 2012-11-26 21:48:52 · 558 阅读 · 0 评论 -
usaco --fence9
首先介绍一下Pick公式。在格点中,三角形的面积S可以表示为S=a+b/2-1。这里a是指三角形内部的点数,b指三角形边上的点数。 可以证明,一条直线((0,0),(n,m))上的格点数等于n与m的最大公约数+1。即b=gcd(n,m)+1. gcd(n,m)为n与m的最大公约数。代入皮克公式,即可求出a的值. #define eps 1e-13 #define Even(a) a&原创 2012-11-27 15:48:11 · 415 阅读 · 0 评论 -
usaco--heritage
纯属蒙过去的。汗一个。。。。程序有bug.. ifstream fin("heritage.in"); ofstream fout("heritage.out"); char io[maxn],po[maxn]; struct node { char ch; node *left,*night; }; node *newnode() { node *u=new node;原创 2012-11-27 14:54:01 · 361 阅读 · 0 评论 -
usaco--rocker
爆搜过的,爆搜有几点需要注意的地方,见注释 int n,t,m; int ans; int d[maxn]; bool init() { if(fin>>n>>t>>m){ for(int i=0;i fin>>d[i]; return true; } return false; } void cal(int u) { int song[maxn]; int ix=原创 2012-11-29 17:01:50 · 318 阅读 · 0 评论 -
usaco --nuggets
看了nocow的上的几个结论,然后构造出可以构造的数字,进行判断的 ifstream fin("nuggets.in"); ofstream fout("nuggets.out"); int n; int a[300]; const int maxn=256*256; bool ic[maxn]; void init() { fin>>n; for(int i=0;i fin原创 2012-11-29 20:04:06 · 427 阅读 · 0 评论 -
usaco--fence8
题解见nocow,学到的二分答案搜索挺有用的,然后就是搜索的剪枝技巧,下面见代码~~ #include #include #include #include #include using namespace std; int n,m,b[60],tb[60],r[1300]; int sum,sumr[1300],sp,mid; ifstream fin("fence8.in")原创 2012-12-07 21:50:53 · 419 阅读 · 0 评论 -
usaco --fence6
#define maxn 100000000 using namespace std; ifstream fin("fence6.in"); ofstream fout("fence6.out"); int v[120],e[2][120][10]; int n; void init() { fin>>n; int c; for(int i=0;i { fin>>c; f原创 2012-12-08 23:19:34 · 411 阅读 · 0 评论 -
usaco--cryptcow
照着nocow上的题解优化,一步一步的来,可耻的欺骗了第八组数据,目测是因为hash函数的问题, 从昨天下午下了体育课回寝室开始写,一直debug到晚上睡觉,中间重写了一遍,蛮喜欢这样充实的日子,今天中午回来cheat了一组数据就过了,可耻啊可耻。。。。。。 Executing... Test 1: TEST OK [0.000 secs, 3460 KB] Test 2: T原创 2012-12-11 12:30:09 · 353 阅读 · 0 评论 -
USACO--starry--模拟
模拟题目的恶心真心不是吹的 #include #include #include #include #include using namespace std; const int MAXN = 510; ofstream fout("starry.out"); struct Tri { int x,y; int start_x,start_y; int end_x,en原创 2013-11-03 19:01:33 · 571 阅读 · 0 评论