- 博客(10)
- 收藏
- 关注
原创 USACO section2.4 The Tamworth Two题解&代码
很简单的模拟…需要避免产生循环的情况,所以设置vis数组记录step 但是需要注意的是使用scanf(“%c”,&m[i][j])的话scanf会等到遇到第一个非可读字符的时候结束… 这样的话j就不是准确的了… 恩…看了15min才看出来…果然是该去休息了…/* ID:rainbow16 LANG:C++ TASK:ttwo */ #include<stdio.h> char m[10][10
2015-02-15 06:53:03 568
原创 USACO section2.3 Controlling Companies题解&代码
将每种可能都枚举一下就可以了… 我在test 9卡了很久…很容易漏掉一些控制关系… 避免这种情况的方法是验证所有不可能控制的情况,即排除法… 对于所有当前不能确认的关系(i,j)都重新验证即可/* ID:rainbow16 LANG:C++ TASK:concom */ #include<stdio.h> #include<iostream> using namespace std; int
2015-02-15 05:59:19 790
原创 USACO section2.3 Money Systems题解&代码
显而易见的完全背包… 很容易看出dp方程为dp[i]+=dp[i-val[j]],其中i是表示的钱数,val[j]是第j个面值,dp[i]是方法数/* ID:rainbow16 LANG: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
原创 USACO section2.3 Zero Sum题解&代码
只需要按位数搜索,记录sum为0的情况 优先度为’ ‘>’+’>’-‘,需要记录的是之前位数可以计算出的值la和当前被操作的数no,下一个被操作数为p,当前位数后的符号即为s[p] 需要注意的一些小细节是在不加入操作符增加no时no>=0?no*10+p:no*10-p,在添加’-‘后下一个操作数将会是-p/* ID:rainbow16 LANG:C++ TASK:zerosum */ #inc
2015-02-15 05:44:44 688
原创 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:rainbow16 LANG:C++ TASK:nocows */ #include<stdio.h> int n,k; int dp[200][
2015-02-15 05:34:03 728
原创 USACO section2.3 Longest Prefix题解&代码
恩…简洁明了的搜索就可以了… 对于每一种可能的情况都递归求其最长前缀… 然后就没了233 代码并不是本人所写…由风格显而易见…/* ID:rainbow16 LANG:C++ TASK:prefix */ #include<cstdio> #include<algorithm> #include<cstring> const int MAXN=200000+20; char dict[210]
2015-02-15 04:33:39 624
原创 USACO section2.2 Party Lamps题解&思路
按两次灯就相当于没按…那么四个按钮就都分别只有两种状态:被按了和没有被按 枚举2^4种情况,如果这些情况需要的按键次数小于等于题目所给的次数且剩余按键次数是2的整数倍,那么这是一种符合要求的操作…然后暴力地比较所有需要比较的位数… 为什么这道题没有代码呢… 因为我发现这道题的操作是有每6位一循环的特点的…然后作死用了位运算…代码太感人…
2015-02-15 04:20:57 573
原创 USACO section2.2 Runaround Numbers题解&代码
果然大半夜困成狗根本不能做题...用了memset()没加string.h也是醉醉的... 最简单粗暴的暴力...一个小优化或许是如果待检验数字有两个数字相等直接排除... /* ID: rainbow16 LANG: C++ TASK: runround */ #include #include #include using namespace std; int a[10],k[1
2015-02-13 01:34:03 626
原创 USACO section2.2 Subset Sums题解&代码
恩...连交三次才过...又被USACO的数据教做人... 首先这题是一道很简单的01背包...或者说递推... 只要O(n^3)就可以了... 然后...ll大法好... 最后...为什么我会忘记中间数可能不是整数这个事实...我也不知道... /* ID:rainbow16 LANG:C++ TASK:subset */ #include #include using namespa
2015-02-13 00:10:44 586
原创 USACO section2.2 Preface Numbering题解&代码
统计页码... 根据题目规则可以发现,对于每个数来说它的每一位都可以看做独立的罗马数字 恩...对所有的页码,统计其不同数字不同位置的数字个数,按照规则加起来就可以了... /* ID:rainbow16 LANG:C++ TASK:preface */ #include #include using namespace std; struct node{ int k[5]; }; nod
2015-02-12 23:36:17 601
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人