
usaco
silence401
早安,午安,晚安。
展开
-
usaco Shaping Regions
这就是usaco 前面的windows area的变形。/*ID:jinbo wuTASK:rect1LANG:C++*/ #include#include#includeusing namespace std;int max(int a,int b){ return a>b?a:b;}const int maxn=3000;int x0[maxn],x[maxn]原创 2017-04-19 16:54:12 · 330 阅读 · 0 评论 -
USCACO Buy Low, Buy Lower
求最长下降子序列简单,难点就是求序列的个数更难的就说处理重复序列。求个数代码还好理解判断重复就是从那个数字一直往前找如果找到一个和它相等的(假设这两个数字为ab),看看这两个数字之间有没有可以和后面数字既b组成序列的如果没有(dp[i]==1)这两个就相当于一个数字。那么就使这个数的cnt【i】=0用一会不用计算这个数字。然后再用大数字处理两个数之间的加就行了。/*ID:jinbo wu原创 2017-01-16 10:44:58 · 210 阅读 · 0 评论 -
usaco Job Processing(mark)
I am back.好长时间没写了。这题看题解具体思路不清晰先码/*ID: jinbo wuTASK: jobLANG:C++*/#includeusing namespace std;#define inf 0x3f3f3f3fint ta[1100],tb[1100],t1[1100],t2[1100];int a[1100],b[1100];int main(原创 2017-01-15 20:42:58 · 306 阅读 · 0 评论 -
usaco shuttle puzzle(dfs剪枝)
这题一看我也以为找规律,然后无法下手之后又想到bfs最后看题解是用dfs大神dfs用的出神入化。不过这题好像可以找规律。/*ID:jinbo wuTASK: shuttleLANG:C++*/#includeusing namespace std;int num;int way[100005];char s1[30],s2[30];int n;bool dfs(int原创 2017-02-06 19:39:30 · 335 阅读 · 0 评论 -
usaco letter game
这个代码是我转的,我自己写了好几次不是这里出错就是那里出错我实在受不了了。/* ID: jinbo wu LANG: C++ TASK: lgame */ #include #include #include #include #include #include #include原创 2017-02-06 13:12:24 · 225 阅读 · 0 评论 -
usaco Beef McNuggets
这两天贼烦,ccf炸了,还有一个烦心事。哎我都不知道自己能不能坚持下去了。马上期末考了。这段时间还是抓紧时间复习吧同时刷usaco的节奏要跟以前一样了,毕竟课少了。题解:只要你知道以下的数论结论,这道题就是水背包了:有两个数p,q,且gcd(q,p)=1,则最大无法表示成px+qy(x>=0,y>=0)的数是pq-q-p(对于n>pq-q-p,都可以表示原创 2016-12-19 23:03:46 · 393 阅读 · 0 评论 -
usaco Raucous Rockers(dp)
dp[i][j]表示到了第i张CD且第i张CD用了j分钟可以装的最多歌曲。/*ID:jinbo wuLANG:C++TASK: rockers*/#includeusing namespace std;int dp[30][30];int main(){ freopen("rockers.in","r",stdin); freopen("rockers.out","w",原创 2016-12-18 23:07:07 · 275 阅读 · 0 评论 -
usaco The Perfect Stall(二分匹配模板)
其实二分匹配都是很早之前看的不过又忘了现在再看看比第一次好理解多了。/*ID:jinbo wuTASK:stall4LANG:C++*/#includeusing namespace std;int link[250];bool vis[250];int n,m;int mat[250][250];bool dfs(int u){ for(int i=1;i<=m;i原创 2016-12-22 19:54:02 · 450 阅读 · 0 评论 -
usaco Drainage Ditches(网络流dinic模板)
模板题/*ID:jinbo wuTASK:ditchLANG:C++*/#includeusing namespace std;#define INF 0x3f3f3f3fint n,m;struct node{ int c,f;}e[250][250];queue q;int level[250];bool dinic_bfs(){ memset(leve原创 2016-12-21 20:12:00 · 310 阅读 · 0 评论 -
usaco Fence Loops
一开始完全没思路,百度了一下了解到是用floyd求最小环,于是我去百度了一下这个算法了解到了很多我之前不了解的flyod算法。好了既然知道用啥算法就写吧,然后发现懵逼了。这题是边的序号没有点。得自己化成点图。。。。。。。。于是我苦思冥想。终于想到了一个方法本来想着如果不对的话就一步一步的改谁知道竟然第一遍就all test OK 了哈哈。floyd求最小环我转到了上篇博客了。接下来说说我是怎么原创 2016-12-21 19:23:13 · 295 阅读 · 0 评论 -
usaco Electric Fence
一开始枚举点,交一次发现少判断一种情况最后实在没有耐心了去百度了原来还有这么个东西皮克定理 皮克定理说明了其面积S和内部格点数目a、边上格点数目b的关系:S = a + b/2 - 1。根据三角形面积公式求出S。如果知道了b,那么三角形内部格点数目a也就求出来了。可以证明,一条直线((0,0),(n,m))上的格点数等于n与m的最大公约数+1。即b=gcd(n,m)原创 2016-12-16 21:02:37 · 617 阅读 · 0 评论 -
usaco A game
这题有点懵逼。到现在都不知道他选的规则是啥。/*ID:JInbo wuTASK:game1LANG:C++*/#includeusing namespace std;int sum[200][200];int a[250];int dp[250][250];int main(){ freopen("game1.in","r",stdin); freopen("ga原创 2016-12-09 17:39:49 · 320 阅读 · 0 评论 -
usaco Stringsobits
dp好理解,下面的输出第i打个数是在太巧妙了。dp[i][j]表示i位上1个数少于j的个数。假设求第t大的数。当t>dp[i-1][j]的时候,假如第i位是0后面怎么凑都出凑不到t个出来。如果第i位是1他肯定比第i位时0的dp[i-1][j]个数大所以我们只要再找t-dp[i][j]大的数就可以了以此类推/*ID: jinbo wuLANG:C++TASK:kimbits*/#inclu原创 2016-11-27 22:08:28 · 294 阅读 · 0 评论 -
usaco Factorials
想到除2除5,没想到除后怎么办/*ID:jinbo wuTASK: fact4LANG: C++*/#includeusing namespace std;int main(){freopen("fact4.in","r",stdin);freopen("fact4.out","w",stdout);int sum=1;int n;cin>>原创 2016-11-25 23:09:01 · 254 阅读 · 0 评论 -
usaco contact
★Contact 联系奶牛们开始对用电波望远镜扫描牧场外的宇宙感兴趣.最近,他们注意到了一种非常奇怪的脉冲调制微波被从星系的中央发射出来.他们希望知道电波是否是被某些地外生命发射出来的,还是仅仅是普通的的星星的心跳.帮助奶牛们用一个能够分析他们在文件中记下的记录的工具来找到真相.他们在寻找长度在 A 到 B之间(含)在每天的数据文件中重复得最多的比特序列 (1 得最多的比特原创 2016-11-25 22:47:28 · 1374 阅读 · 0 评论 -
usaco Camelot
被这道BFS不带权图的最短路水题卡了三天,提交了80次。。。。。。就这样弱成渣了。。。。。。。。 这道题其实思路很简单,先求出每个点到所有点的最短路,然后枚举集合点,枚举接国王的骑士,枚举接国王的点,算出需要的距离。 总距离=Min{所有骑士到集合点的距离和-接国王的骑士到集合点的距离+国王到骑士接他的点的距离+骑士到接国王点的距离+其实从接国王的点走到集合点的距离} (当然原创 2016-12-13 22:52:51 · 556 阅读 · 0 评论 -
usaco Pollutant Control
/*ID:jinbo wuTASK:milk6LANG:C++*/#include#define INF 0x7fffffff using namespace std; int N,M; int level[205]; int Si,Ei,Ci; struct Dinic { int c; int f; }edge[205][205];原创 2017-02-08 17:22:49 · 425 阅读 · 0 评论 -
usaco Network of Schools
就是百度百科上的tarjan算法他把缩点什么的都总结好了。/*ID:jinbo wuTASK:schlnetLANG:C++*/ #includeusing namespace std;vector g[110];stack s;int x[110*100],y[110*100];bool instack[110];int belong[110],dfn[110],low原创 2017-02-27 19:41:29 · 260 阅读 · 0 评论 -
usaco Big Barn
好久没有自己独立做出题了。就是一个dp.画图就可以得出Dp关系/*ID:jinbo wuTASK:bigbrnLANG:C++*/#includeusing namespace std;bool a[1010][1010];int b[1010][1010];int main(){ freopen("bigbrn.in","r",stdin); freopen(原创 2017-02-27 20:20:05 · 266 阅读 · 0 评论 -
usaco Calf Flac(O(n)时间求回文串长度)
好高兴,为数不多的我没看题解的题·,我用的是O(n)时间求回文串长度的算法算法在我上一篇博客。然后就是注意细节了。/*ID:jinbo wuTASK: calfflacLANG:C++*/#includeusing namespace std;struct node{ char c; int n;}a[40010];string s;int p[40原创 2017-04-18 23:25:32 · 331 阅读 · 0 评论 -
usaco Cowxor (trie 树)
没想到trie树还可以用在这上面,厉害厉害。【分析】这是字母树的经典应用。首先因为是求xor的最大值,可以用前缀和计算xor值,然后n^2枚举即可。[cpp] view plain copy for (i=1;i for (j=1;j if ((sum[i]^sum[j-1])>ans) 就记录;转载 2017-04-18 21:26:26 · 425 阅读 · 0 评论 -
usaco Postal Vans(dp)
是哈密顿回路,然后。。。就不知道怎么写了 ,以前写过类似的不过情况没这么多也没这么复 usaco training 6.1.1 Postal Vans 题解标签: usaco training题解dp2014-03-18 10:49 1511人阅读 评论(0) 收藏 举报 分类:usaco题解(46) 版权声明:本文为转载 2017-04-03 16:34:42 · 877 阅读 · 0 评论 -
A Rectangular Barn
上一篇博客中提到了用O(n)的复杂度求矩形的最大面积,这里遍历每一行把每一行及其以上部分当作排列的矩形这样就可以求出最大的矩形面积了。/*ID:jinbo wuTASK: rectbarnLANG: C++*/#includeusing namespace std;int a[3010];bool vis[3010][3010];int main(){ freop原创 2017-04-17 23:41:20 · 427 阅读 · 0 评论 -
usaco Picture(离散化求线段周长)
usac前面有一题是递归求矩形覆盖面积的,学到不少东西离散化 把所有矩形离散化(就是将整个平面分成许多“竖条”或“横条”,对其操作),每个矩形都由四条边组成,分为纵边和横边。对纵边和横边分别扫描一次,以横边为例:每个矩形的两条横边中,称下面的为始边,上面的为终边。把每条横边以纵坐标从小到大排序,如果纵坐标相同,则应把始边排到终边之前。依次枚举每条横边如果当前边为始边,则转载 2017-04-01 20:45:59 · 383 阅读 · 0 评论 -
twofive(记忆搜索)
记忆搜索简单题解:刚看到这题的时候,毫无头绪。看了NOCOW上的题解才恍然大悟。这题卡了我4天。蛋疼的是,第二天的时候我已经改对了,但是将输出与样例比对时坑爹了.... 矩阵转编号:如矩阵ACEGI......只需求出以AB、ACD、ACEF、ACEFH......开头的矩阵的数目之和再加1即可。编号转矩阵:顺次枚举每一位,若当前方案开头的矩转载 2017-04-01 20:42:34 · 646 阅读 · 0 评论 -
usaco Character Recognition
/*ID :jinbo wuTASK:charrecLANG:C++*/#includeusing namespace std;string f1[550],f2[1250];int mi[1250][4],n1,n2;int mat[1250][550];string ss[1250];char ans[1250][4];int f[1250];string str=原创 2017-03-28 22:45:53 · 426 阅读 · 0 评论 -
prufer序列
prufer数列 编辑本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!Prufer数列是无根树的一种数列。在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2。它可以通过简单的迭代方法计算出来。它由Heinz Prufer于1918年在证明cayley定理时首次提出。转载 2017-03-07 20:56:43 · 1515 阅读 · 0 评论 -
usaco window arear(递归求矩形覆盖面积)
这种算法挺厉害的。画图很容易理解但是正确性很难证明。学习了,。这是到学校的第一份代码。新的一学期又开始了。/*ID;jinbo wuTASK:windowLANG:C++*/#includeusing namespace std;struct node { int x0,y0,x,y; int num;}w[77];int k;double ans;转载 2017-02-26 22:34:59 · 377 阅读 · 0 评论 -
usaco Telecowmunication(网络流)
这题跟前面一题很像吧就是建图有点麻烦。注意最后源点和汇点的选择一定得是2*a和2*b-1不然就是错的。/*ID:jinbo wuTASK:telecowLANG:C++*/#includeusing namespace std;#define inf 100000000struct node{ int c,f;}g[220][220];int ans[220];i原创 2017-03-08 15:09:58 · 335 阅读 · 0 评论 -
usaco street race(dfs)
一开始我觉得很麻烦但第一题好做由于数据较小直接每个点删后dfs就可以了,第二问我不知道如何判断有没有公共的道路,最后看别人的也挺简单的就是看分别从两条公路的起点开始dfs如果他们能到达同一点就代表有公共道路。那就好做了。/*ID: jinbo wuTASK: race3LANG: C++*/#includeusing namespace std;int g[55][55];bo原创 2017-01-28 20:23:08 · 310 阅读 · 0 评论 -
usaco snail trails(dfs)
dfs啊,我还写了好长时间,一天不如一天。/*ID:jinbo wuTASK: snailLANG:C++*/ #includeusing namespace std;char a[150][150];int dir[4][2]={0,1,1,0,0,-1,-1,0};bool vis[150][150];int n,m;int dfs(int x,int y,int d原创 2017-02-19 18:03:18 · 381 阅读 · 0 评论 -
usaco fencing the cows
百度一下原来叫凸包,所以转了一篇博客讲的挺清楚的。/*ID:jinbo wuTASK: fcLANG:C++*/ #includeusing namespace std;const int maxn=10005;int n;struct node{ double x,y;}p[maxn],P[maxn];double X(node A,node B,node C){原创 2017-02-10 14:30:50 · 341 阅读 · 0 评论 -
usaco frame up(所有拓扑排序的输出)
先根据图建图再拓扑排序。/**ID: jinbo wuTASK: frameupLANG:C++*/ #includeusing namespace std;map x1,x2,y3,y2,vis,v;char a[35][35];int b[35][35];char cnt[30];int du[35];bool vd[50];int n,m,l;char ans原创 2017-02-10 12:00:45 · 669 阅读 · 0 评论 -
usaco Canada Tour
没想到用dp,写完才发现这就是floyd求最大环。。。。。/*ID:jinbo wuTASK:tourLANG:C++*/#includeusing namespace std;bool g[110][110];int f[110][110];char s1[20],s2[20];map ma;int main(){ freopen("tour.in","r",std原创 2017-02-27 21:40:13 · 312 阅读 · 0 评论 -
usaco ★Stamps 邮票
★Stamps 邮票已知一个 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资.例如,假设有 1 分和 3 分的邮票;你最多可以贴 5 张邮票.很容易贴出 1 到 5 分的邮资(用 1分邮票贴就行了),接下来的邮资也不难:6 = 3 + 37 = 3 + 3 + 18 = 3 +原创 2016-11-24 19:15:41 · 760 阅读 · 0 评论 -
usaco ★Humble Numbers 丑数
★Humble Numbers 丑数对于一给定的素数集合 S = {p1, p2, ..., pK},来考虑那些质因数全部属于 S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它).这是个对于一个输入的 S 的丑数集合.注意:我们不认为 1 是一个丑数.你的工作是对于输入的集合 S 去寻找集合中的第 N 个丑数.longint(signe原创 2016-11-22 21:32:23 · 610 阅读 · 0 评论 -
usaco Home on the Range
dp关系式搞清楚就行了,我看题解的没想出来。a[i][j]=min(a[i+1][j],a[i][j+1],a[i+1][j+1])+1;他的右方下方右下方保证了他可以延伸的长度。/*ID: jinbo wuTASK: rangeLANG:C++*/#includeusing namespace std;int a[300][300];int cnt[300];int main(原创 2016-12-04 22:34:15 · 377 阅读 · 0 评论 -
usaco Ski Course Design
看了别人的题解才会做的,我怎么就想不到枚举调整到的高度呢?????????????????/*ID: jinbo wuLANG:C++TASK: skidesign*/#includeusing namespace std;int h[1005];int main(){ freopen("skidesign.in","r",stdin); freopen("skidesign原创 2016-11-01 19:08:57 · 313 阅读 · 0 评论 -
usaco wormhole(看了官方视频题解)
看了视频看懂了但是递归那块求所有匹配可能我真的写不出来,而且经常弄混。/*ID:jinbo wuLANG:C++TASK:wormhole*/#includeusing namespace std;int x[13];int y[13];int partner[13];int next_on_right[13];int n;bool circle(){ for(int原创 2016-11-01 17:20:35 · 566 阅读 · 7 评论 -
usaco Overfencing 穿越栅栏(BFS)
Overfencing 穿越栅栏农夫 John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个“完美的”迷宫:即你能从迷宫中的任意一点找到一条走出迷宫的路.给定迷宫的宽 W(12*H+1行,每行2*W+1的字符以下面给出的格式表示一个迷宫.然后计算从迷宫中最“糟糕”的那一个点走出迷宫所原创 2016-11-16 19:26:06 · 987 阅读 · 0 评论