上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 66 下一页
摘要: DP第二题,做过很多次了,这次没用记忆化搜索,而是先排序之后for循环进行动态规划.代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int N;struct Point { double x, y; void read() { scanf("%lf %lf", &x, &y); }}p[105];int main() { 阅读全文
posted @ 2013-01-05 18:39 沐阳 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 详见代码:#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>#define MAXN 100using namespace std;// 给定一个有数值的矩形,求出和最大的子矩形// 经典的DP问题/*思路:枚举所有的行,然后将这些行的列进行相加构成一个串 然后再进行一次一维空间上的DP即可 */int N, M[MAXN+5][MAXN+5], sum[MAXN+5][MAXN+5], seq[MAXN+5];int DP() { int Max = 阅读全文
posted @ 2013-01-04 22:41 沐阳 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 详见代码:#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;// 给定一个数N,求1-N的所有数与这个数的gcd之和// 观察gcd函数,我们可以得知那些与N互质的数的gcd一定为1,也就是欧拉函数 // 那么那些不互质的数有gcd(x, N) = d // 也就是gcd(x/d, N/d) = 1,所以我们继续求N/d的欧拉函数就可以了 int eular(int x) { // 直接对某一个数进行素因子分解求解 in 阅读全文
posted @ 2013-01-04 21:06 沐阳 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 详见代码:#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>#define MOD 9901// 9901是一个素数 using namespace std;int A, B; // 计算A^B的所有因子的和 int num[50], ex[50], idx; // 记录所有的因子和指数void deal(int x) { idx = -1; for (int i = 2; i <= (int)sqrt(double (x)); ++i) { if (x 阅读全文
posted @ 2013-01-04 20:08 沐阳 阅读(237) 评论(0) 推荐(1) 编辑
摘要: 详见代码:#include <cstdio>#include <cstring>#include <cstdlib>#define MOD 29using namespace std;/*求2004^x次方的所有因子对29取余,可能是由于这一年是闰年才选择的29 我们可以对2004进行分解 2004 = 2^2 * 3 * 167,很明显2^2 和 3 和 167 都是相互互质的因此就可以利用到一个数的因子和是一个积性函数这个性质,设S(N)为这个函数 又因为S(p^n) = 1+p+p^2+...+p^n,所以一个数被用素数的指数幂来表示的话就能够被分解化 阅读全文
posted @ 2012-12-31 22:55 沐阳 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题意:一言难尽,就不说了.解法:我们只要把握好要保留哪些状态以及每天会有哪些动作要进行更新就可以了.该题的话,我们只需要保留:A.每天有多少克隆士兵存活在命题者所设定的世界里面,当然每个士兵都有一个生存天数的属性.B.每天有多少士兵正在培养,每个培养体当然有一个已经培养的天数属性.然后我们就要定义一些动作出来,从培养体变成士兵,已经获得材料.代码如下:#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;int N, D, A, K, X;// 保留两个信息,即当天克 阅读全文
posted @ 2012-12-29 20:20 沐阳 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 阅读http://blog.csdn.net/niuxianzhuo/article/details/8285854后,深有感触。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;const int MOD = 2012;/* 给定一个边长为偶数个(N)方格组成的正方形 现在由内到外每一个四边形为一层,每个方格 由0,1组成,现在要求是不同层之间不能够有 两个1相邻,现在给定N,问多少种情况 这里有一个很巧妙的转化,即是将我们关心的 相同层的关系转化为不 阅读全文
posted @ 2012-12-13 15:12 沐阳 阅读(500) 评论(0) 推荐(0) 编辑
摘要: du熊学斐波那契ITime Limit : 2000/1000ms (C/Other)Memory Limit : 65535/32768K (C/Other)本次组委会推荐使用C、C++Problem Descriptiondu熊对数学一直都非常感兴趣。最近在学习斐波那契数列的它,向你展示了一个数字串,它称之为“斐波那契”串:11235813471123581347112358........聪明的你当然一眼就看出了这个串是这么构造的:1.先写下两位在0~9范围内的数字a, b,构成串ab;2.取串最后的两位数字相加,将和写在串的最后面。上面du熊向你展示的串就是取a = b = 1构造出来 阅读全文
posted @ 2012-12-13 15:11 沐阳 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 详见代码:#include <cstring>#include <cstdlib>#include <cstdio>#include <iostream>#define T 31LLUusing namespace std;typedef unsigned long long Int64;// 给定一个字符串,现在在这个串上进行一系列的动态操作// 难点是在这些动态的修改的过程中,问任意一段是否为回文串 // 思路是以某种方法来判定一个串是否相等,我们很容易想到字// 符串的hash处理,对就是插值取模,解决了字符串比较的问题// 选择插值取模的 阅读全文
posted @ 2012-12-10 22:14 沐阳 阅读(433) 评论(1) 推荐(0) 编辑
摘要: 这题的想法就是直接枚举1-m每一个数的数量,先给这n个数全排列,然后除以相同的数的阶乘就可以了。枚举的方法就是dfs了。这里分了两步来完成这个任务,首先找出前k个数的组合,然后再进行任意的组合。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>using namespace std;// 对于一个给定的m面色子,我们抛掷n次,前k大的数相加为p // 错误的思路为枚举最大的k个数,然后再将剩下的n-k个小于// 前k个数中最小的数进行排列组合/ 阅读全文
posted @ 2012-12-09 20:39 沐阳 阅读(262) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 66 下一页