2013年7月26日

SDKD Single training #4未完成题目

摘要: A SPOJ RENT【已整理】B SPOJ HAN01【已整理】C SPOJ BALL1 http://www.spoj.com/problems/BALL1/D SPOJ POSTERS 【已整理】E SPOJ MARBLES 【已整理】 阅读全文
posted @ 2013-07-26 19:22 Primo... 阅读(103) 评论(0) 推荐(0)

SPOJ HAN01(典型汉诺塔)

摘要: 暑期个人赛第二场Problem A题意:给一挪动次数,要求写出此时的汉诺塔上的状态.思路:汉诺塔的典型利用,用递归实现即可。代码入下:#include #define M 64 long long n, k; int ai, bi, ci, a[M], b[M], c[M]; void f(int i, int x) { if(i==1) a[ai++] = x; if(i==2) b[bi++] = x; if(i==3) c[ci++] = x; } long long pow(int x, int o) { if(o==0) return 1; ... 阅读全文
posted @ 2013-07-26 16:16 Primo... 阅读(120) 评论(0) 推荐(0)

SPOJ RENT(简单动归)

摘要: 暑期个人赛第四场快被这道题搞死了。又是题意理解有误题意:有n个订单,每个订单有开始时间,占用时间,愿意支付的money3个参数,要求在这n个订单中选择不冲突的的订单使得money总和最大。思路:对订单的开始时间或者结束时间排序,然后用动归求最优解,如果对开始时间从小到大排序,则动归顺序应从后向前,如果对结束时间从小到大排序,则动归顺序应该从前向后。对于每个订单决策就是选择or丢去状态:dp[i]表示到第i个订单时,money所能取得的最大值状态转移:dp[i] = max(dp[i-1], dp[x]+piece[i]);代码如下:#include #include #include u... 阅读全文
posted @ 2013-07-26 15:12 Primo... 阅读(193) 评论(0) 推荐(0)

SPOJ MARBLES(简单组合)

摘要: 暑期个人赛第四场题意:把n个求分给k个颜色,思路:转化一下,将球的n-1个空隙插上隔板,那么答案就是c(n-1,k-1);代码如下:#include long long c(int n, int k) { if(n-k double c(int n, int k) { if(n-k<k) k = n-k; double c = 1.0; for(int i = 1; i <= k; ++i) c = c*(n-i+1)/i; return c; } int main () { int n, k, t; scanf("%d", &t); ... 阅读全文
posted @ 2013-07-26 12:21 Primo... 阅读(126) 评论(0) 推荐(0)

cf_332A - Down the Hatch!(水题)

摘要: 水题一道,就是题目描述太坑了。。。题意:对于每个序号为k*n+1的位置,若此位置前面三个字母是相同的,则答案加1.代码如下:#include char str[4000005]; int main () { int n; scanf("%d",&n); getchar(); gets(str); int ans = 0; for(int i = n; str[i]; i+=n) { if(str[i-1]==str[i-2]&&str[i-2]==str[i-3]) ans++; } ... 阅读全文
posted @ 2013-07-26 08:18 Primo... 阅读(108) 评论(0) 推荐(0)