上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页

2013年8月7日

HDU 4651 数论 partition 求自然数的拆分数

摘要: 别人的解题报告:http://blog.csdn.net/zstu_zlj/article/details/9796087我的代码: 1 #include 2 #define N 100020 3 const int mod = 1e9+7; 4 int p[N]; 5 void Partition() 6 { 7 p[0] =1; 8 for(int n=1; n = 0)18 p[n] = (p[n]+fac*p[t-k])%mod;19 p[n] %= mod;20 fac = -fac;2... 阅读全文

posted @ 2013-08-07 13:56 allh123 阅读(283) 评论(0) 推荐(0) 编辑

2013年8月6日

HDU 4647 Another Graph Game 想法类

摘要: 解题思路:若没有边权,则对点权从大到小排序即可。。考虑边,将边权拆成两半加到它所关联的两个点的点权中即可。。。因为当两个人分别选择不同的点时,这一权值将互相抵消。以上摘自杭电的解题报告。至于为什么,还想得不是很清楚····由于在处理时使用的是整数,整数/2,当为奇数时0.5就不见了,所以直接把点的权值翻倍,最后结果除以2,这算是一个技巧吧····贴代码: 1 #include 2 #include 3 #define N 100005 4 using namespace std; 5 long long int a 阅读全文

posted @ 2013-08-06 19:34 allh123 阅读(157) 评论(0) 推荐(0) 编辑

2013年8月5日

HDU 4638 树状数组 想法题

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638解题思路:题意为询问一段区间里的数能组成多少段连续的数。先考虑从左往右一个数一个数添加,考虑当前添加了i - 1个数的答案是x,那么添加完i个数后的答案是多少?可以看出,是根据a[i]-1和a[i]+1是否已经添加而定的,如果a[i]-1或者a[i]+1已经添加一个,则段数不变,如果都没添加则段数加1,如果都添加了则段数减1。设v[i]为加入第i个数后的改变量,那么加到第x数时的段数就是sum{v[i]} (1 2 #include 3 #include 4 #include 5 using 阅读全文

posted @ 2013-08-05 18:50 allh123 阅读(186) 评论(0) 推荐(0) 编辑

2013年8月3日

HDU 4640 状态压缩DP 未写完

摘要: 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640解题思路:首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个人是等价的,所以用dp[i][mask]表示i个人跑完mask这个状态的最小花费,所以首先枚举集合mask,对于dp[i][mask],枚举mask的子集v,dp[i][mask]可以由dp[1][v],dp[i-1][mask^v]转移过来,注意这里用来合并的集合是不能有重复的,这个类似背包……这样就可以算出对于每个状态三个人访问完的最小花费,之后对于给定的需要访问的状态,枚举包含这个给定状态的集合 阅读全文

posted @ 2013-08-03 21:38 allh123 阅读(356) 评论(0) 推荐(0) 编辑

poj 2955 Brackets 区间DP

摘要: 多做了几个区间DP后,还是有点感觉的,状态为什么要这样设计?状态转移方程为什么要这样写···像这个题,紧紧抓住两个准则,就是正则括弧的两种形式()[]左一段是正则的,右一段也是正则的,最优的结果要加起来这就是转移方程要写成dp[i][j] = max(dp[i][j],dp[i][k] + dp[k+1][j]]的原因。。。k在i和j的中间由于([])这种嵌套模式也是可以的,所以有if(a[i]与a[j]是匹配的) dp[i][j] = dp[i+1][j-1]+2```大概就是这样,细节自己注意一下就行贴代码: 1 #include 2 #include 3 # 阅读全文

posted @ 2013-08-03 19:28 allh123 阅读(167) 评论(0) 推荐(0) 编辑

做题推荐

摘要: 图论推荐:http://blog.csdn.net/shahdza/article/category/1376614http://blog.csdn.net/shahdza/article/details/6632538概率DP推荐http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.htmlhttp://www.cnblogs.com/183zyz/archive/2012/09/13/2683524.html区间DP专辑http://blog.csdn.net/liuqiyao_01/article/details/87974 阅读全文

posted @ 2013-08-03 18:46 allh123 阅读(166) 评论(0) 推荐(0) 编辑

HDU 4632 区间DP 取模

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序列的个数,有递推关系:dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]如果i和j位置出现的字符相同,那么dp[i][j]可以由dp[i+1][j-1]中的子序列加上这两个字符构成回文子序列,也就是dp[i][j]+=dp[i+1][j-1],注意边界特判一下就可以了(以上摘自杭电解题报告原文)里面忘了取模,结果输出的是负数,一直 阅读全文

posted @ 2013-08-03 16:56 allh123 阅读(341) 评论(0) 推荐(0) 编辑

线性筛法打素数表 可以做模板

摘要: 如果想了解详情,请点击下面链接:http://blog.sina.com.cn/s/blog_787c1f7b0100s0yx.html我的代码: 1 #include 2 #define N 5000005 3 bool v[N]; 4 int prime[N]; 5 int main() 6 { 7 int num=-1; 8 for(int i=2; i<N; ++i) 9 {10 if(!v[i]) prime[++num] = i;11 for(int j=0; j<=num && i*prime[j] < N; ++j)12... 阅读全文

posted @ 2013-08-03 14:57 allh123 阅读(260) 评论(1) 推荐(0) 编辑

Zoj 3529 A Game Between Alice and Bob 数论+博弈Nim 快速求数中有多少个素数因子

摘要: 本题涉及博弈论中的Nim游戏博弈。Nim游戏博弈详解链接:http://www.cnblogs.com/exponent/articles/2141477.html本题解题报告详解链接:http://blog.csdn.net/woshi250hua/article/details/7824609我的代码,写的较挫,4000多ms,压着时间过,时间限制是5s.我预处理了所有1-5*10^6的数的素因子个数,用的是dp的思想,先预处理1-5*10^6的数的最小素因子,存在a数组中,然后dp[i] = dp[i/a[i] ]+1;我觉得我代码最挫的地方是在求最小素因子时费时太多。。。。 1 #in 阅读全文

posted @ 2013-08-03 10:23 allh123 阅读(255) 评论(0) 推荐(0) 编辑

2013年8月2日

区间DP Zoj 3537 Cake 区间DP 最优三角形剖分

摘要: 下面是别人的解题报告的链接,讲解很详细,要注意细节的处理。。。以及为什么可以这样做http://blog.csdn.net/woshi250hua/article/details/7824433我的代码: 1 //其中求凸包用的是Andrew扫描算法,复杂度主要为排序O(n*logn),扫描为O(n) 2 #include 3 #include 4 #define INF 100000000 5 #define min(a,b) a=3。0,1,2特判,如果有需要的话26 int andrew(point p[],int n)27 {28 sort(p,p+n);29 in... 阅读全文

posted @ 2013-08-02 21:04 allh123 阅读(206) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页

导航