2013年7月30日

D - Judgment Day

摘要: 题目链接:HERE由于N≤10,可以暴力求出所有取出名字的可能情况,其中符合要求的取出个数最多的便是所求答案。有一个显而易见的剪枝就是当前取出的名字长度之和大于God手中的Long String 的长度时,该分枝便不可能符合要求,直接结束即可。AC Code: 1 #include 2 #include 3 #include 4 const long M=110000; 5 char s[M]; 6 long letter[30],name[20][30],vis[30],t,n,ans,s_len; 7 long len[20]; 8 void judge(long now){ 9 ... 阅读全文

posted @ 2013-07-30 22:43 SCNUACM 阅读(237) 评论(0) 推荐(0)

C - 子序列个数

摘要: 题目链接:Here设ans[i]为以前i个数为结尾的序列的总数,last[x]为以数x为结尾,长度大于1的序列的总数,vis[x]表示数x是否出现过,第i个数a[i]=x。若x没有出现过,则以第i个数为结尾的序列的个数为 ans[i-1]+1 (以 前i个数为结尾的序列后面加上一个x,在加上一个长度为1的序列x)若x出现过,则以第i个数为结尾的序列的个数为 ans[i-1]-last[x] (以 前i个数为结尾的序列后面加上一个x,但因为x曾经出现过,所以减去重复的部分last[x],另外取模的时候要注意加上mod。然后更新last[x]的值,显然这个值为 ans[i-1].最后ans[n]即 阅读全文

posted @ 2013-07-30 22:41 SCNUACM 阅读(387) 评论(0) 推荐(0)

B - A Simple Tree Problem

摘要: 题目链接:猛戳这里题目大意:给一棵多叉树,初始值都为0,o x为翻转以x为根的子树,q x为查询以x为根的子树有多少个1思路:这数据范围,暴力是不行的,怎么暴力都是不行的>__ 2 #include 3 4 const int MAX = 100010; 5 6 int flip[MAX*4], sum[MAX*4], cnt[MAX*4];//tree 7 int head[MAX], next[MAX], to[MAX], ecnt; 8 int beg[MAX], size[MAX], dfs_clock; 9 int y1, y2; 10 11 void tle... 阅读全文

posted @ 2013-07-30 22:36 SCNUACM 阅读(241) 评论(0) 推荐(0)

导航