USACO
Rainbow6174
这个作者很懒,什么都没留下…
展开
-
USACO section2.3 Cow Pedigrees题解&代码
神奇的DP… 一棵节点数为i深度为j的树一定是由节点数为k深度为j-1的树和节点数为i-k-1深度为j-1的树和一个节点数为1深度为1的根节点组合出来的 由此可得dp方程dp[i][j]+=dp[k][j-1]*dp[i-k-1][j-1]/*ID:rainbow16LANG:C++TASK:nocows*/#include<stdio.h>int n,k;int dp[200][原创 2015-02-15 05:34:03 · 729 阅读 · 0 评论 -
USACO section2.4 Fractions to Decimals题解&代码
这道模拟倒是出乎意料地顺利… 只是大错不犯小错不断…比如忘记76位换行啊…比如前导零忘记算进位数里啊… 恩总之交了3次才A掉… 关于loop的小技巧就是将原分数化简后分母的因子中5的个数与2的个数的较大值为小数部分的非循环位数,这样只要在计算循环部分时遇到余数相同的情况就可以直接结束了/*ID:rainbow16LANG:C++TASK:fracdec*/#include<iostr原创 2015-03-01 16:19:27 · 617 阅读 · 0 评论 -
USACO section3.1 Humble Numbers题解&代码
居然又1A了~ 其实就是模拟吧23333 当前按照大小扩展到第N个Humble number时第N+1个Humble number一定是由集合中的每个素数分别乘以某一个Humble number得到的最小的大于第N个Humble number的数中选取最小的得到,又由Humber number的有序性可以使用pre数组记录当前素数乘到哪个Humber number来减少计算量/*ID:rain原创 2015-03-01 18:09:48 · 778 阅读 · 0 评论 -
USACO section3.1 Agri-Net题解&代码
hhh…最后发现数组开小了【炸毛】… 我的一个小时!一个小时啊魂淡! 浪费在这道裸最小生成树上! 我去冷静一会再交下一道…/*ID:rainbow16LANG:C++TASK:agrinet*/#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;struct node { int原创 2015-03-01 17:41:46 · 523 阅读 · 0 评论 -
USACO section2.4 Cow Tours题解&代码
把max()和min()用反了过了6组也是挺醉的,USACO数据也会这么水23333 一道写起来有点麻烦的题目,并查集+floyd就可以了…/*ID:rainbow16LANG:C++TASK:cowtour*/#include<iostream>#include<stdio.h>#include<math.h>using namespace std;char temp[155]原创 2015-03-01 16:00:59 · 588 阅读 · 0 评论 -
USACO section2.4 The Tamworth Two题解&代码
很简单的模拟…需要避免产生循环的情况,所以设置vis数组记录step 但是需要注意的是使用scanf(“%c”,&m[i][j])的话scanf会等到遇到第一个非可读字符的时候结束… 这样的话j就不是准确的了… 恩…看了15min才看出来…果然是该去休息了…/*ID:rainbow16LANG:C++TASK:ttwo*/#include<stdio.h>char m[10][10原创 2015-02-15 06:53:03 · 569 阅读 · 0 评论 -
纪念一下,怎么说也是到Section 3了
一个寒假又是发生了各种令人措手不及的事情呢,不知道该算美好还是会成为以后的弱点,以及其实题已经写了很多,只是一直处于失联状态不能交题测试罢了。 总归是彻底断了这些乱七八糟的事情了,正轨get√ 寒假刷完USACO还是非常危险的orz,一天9道…恩,作业什么的果然还是去死好了原创 2015-03-01 16:25:47 · 452 阅读 · 0 评论 -
USACO section2.4 Bessie Come Home题解&代码
模拟题啦,floyd得到最短路,然后直接找到最短可达路径即可 注意点是’M’和’m’并不是同一个牧场,区分大小写的是不同牧场,因此共有51个牧场和1个谷仓/*ID:rainbow16LANG:C++TASK:comehome*/#include<iostream>#include<stdio.h>#include<string.h>#define MAX 0xfffffffusi原创 2015-03-01 16:09:49 · 891 阅读 · 0 评论 -
USACO section3.1 Score Inflation题解&代码
嘛,1A真是一件很令人开心的事情…但是完全开心不起来啊… 我居然在前一道最小生成树上卡了那么长时间…现在还没过… 我就是太傻了orz 裸完全背包不解释…恩…/*ID:rainbow16LANG:C++TASK:inflate*/#include<iostream>#include<stdio.h>using namespace std;int dp[10005],s[10005原创 2015-03-01 17:35:53 · 546 阅读 · 0 评论 -
USACO section2.3 Zero Sum题解&代码
只需要按位数搜索,记录sum为0的情况 优先度为’ ‘>’+’>’-‘,需要记录的是之前位数可以计算出的值la和当前被操作的数no,下一个被操作数为p,当前位数后的符号即为s[p] 需要注意的一些小细节是在不加入操作符增加no时no>=0?no*10+p:no*10-p,在添加’-‘后下一个操作数将会是-p/*ID:rainbow16LANG:C++TASK:zerosum*/#inc原创 2015-02-15 05:44:44 · 688 阅读 · 0 评论 -
USACO section2.2 Party Lamps题解&思路
按两次灯就相当于没按…那么四个按钮就都分别只有两种状态:被按了和没有被按 枚举2^4种情况,如果这些情况需要的按键次数小于等于题目所给的次数且剩余按键次数是2的整数倍,那么这是一种符合要求的操作…然后暴力地比较所有需要比较的位数… 为什么这道题没有代码呢… 因为我发现这道题的操作是有每6位一循环的特点的…然后作死用了位运算…代码太感人…原创 2015-02-15 04:20:57 · 574 阅读 · 0 评论 -
USACO section2.3 Controlling Companies题解&代码
将每种可能都枚举一下就可以了… 我在test 9卡了很久…很容易漏掉一些控制关系… 避免这种情况的方法是验证所有不可能控制的情况,即排除法… 对于所有当前不能确认的关系(i,j)都重新验证即可/*ID:rainbow16LANG:C++TASK:concom*/#include<stdio.h>#include<iostream>using namespace std;int原创 2015-02-15 05:59:19 · 791 阅读 · 0 评论 -
USACO section2.3 Longest Prefix题解&代码
恩…简洁明了的搜索就可以了… 对于每一种可能的情况都递归求其最长前缀… 然后就没了233 代码并不是本人所写…由风格显而易见…/*ID:rainbow16LANG:C++TASK:prefix*/#include<cstdio>#include<algorithm>#include<cstring>const int MAXN=200000+20;char dict[210]原创 2015-02-15 04:33:39 · 625 阅读 · 0 评论 -
USACO section2.2 Subset Sums题解&代码
恩...连交三次才过...又被USACO的数据教做人...首先这题是一道很简单的01背包...或者说递推...只要O(n^3)就可以了...然后...ll大法好...最后...为什么我会忘记中间数可能不是整数这个事实...我也不知道.../*ID:rainbow16LANG:C++TASK:subset*/#include#includeusing namespa原创 2015-02-13 00:10:44 · 587 阅读 · 0 评论 -
USACO section2.2 Preface Numbering题解&代码
统计页码...根据题目规则可以发现,对于每个数来说它的每一位都可以看做独立的罗马数字恩...对所有的页码,统计其不同数字不同位置的数字个数,按照规则加起来就可以了.../*ID:rainbow16LANG:C++TASK:preface*/#include#includeusing namespace std;struct node{ int k[5];};nod原创 2015-02-12 23:36:17 · 601 阅读 · 0 评论 -
USACO section2.2 Runaround Numbers题解&代码
果然大半夜困成狗根本不能做题...用了memset()没加string.h也是醉醉的...最简单粗暴的暴力...一个小优化或许是如果待检验数字有两个数字相等直接排除.../* ID: rainbow16LANG: C++ TASK: runround */ #include#include#includeusing namespace std;int a[10],k[1原创 2015-02-13 01:34:03 · 626 阅读 · 0 评论 -
USACO section2.3 Money Systems题解&代码
显而易见的完全背包… 很容易看出dp方程为dp[i]+=dp[i-val[j]],其中i是表示的钱数,val[j]是第j个面值,dp[i]是方法数/*ID:rainbow16LANG:C++TASK:money*/#include<stdio.h>int n,v,val[30];long long dp[10005];int main(void){ freopen("mo原创 2015-02-15 05:50:43 · 572 阅读 · 0 评论 -
USACO section2.4 Overfencing题解&代码
我不会说我因为getline()的问题卡了两天的… 先在Test 6卡了一个小时…发现数组开小了,然后卡在Test 9… 最后调出来发现是自己读入错了,能过八组也是奇迹…/*ID:rainbow16LANG:C++TASK:maze1*/#include<stdio.h>#include<string.h>#include<iostream>using namespace std原创 2015-03-01 14:50:52 · 805 阅读 · 2 评论