自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

moyan_min的专栏

知我者,为我心忧;不知我者,谓我何求。向编程努力……永不放弃,永不言败!!!

  • 博客(18)
  • 问答 (5)
  • 收藏
  • 关注

原创 10791 - Minimum Sum LCM

描述:将最小公倍数分解质因子,最小的和便为各个质因子的相应次方数之和。 (1)当N是素数的时候,输出N+1 (2)当只有单质因子时或者N不被除尽时,质因子相应次方和+N最后的数; #include #include int main() { // freopen("a.txt","r",stdin); int n,t=0,count,m,p,q; long long le

2013-05-28 21:14:52 761

原创 11121 - Base -2

描述:除-2取余,余数为负的时,余数要减去-2,商要加一 #include #include int main() { //freopen("a.txt","r",stdin); int n,t,len; int base[1010]; scanf("%d",&t); for(int p=1;p<=t;p++) { scanf("

2013-05-28 20:27:16 596

原创 10673 - Play with Floor and Ceil

描述:欧几里得扩张算法 #include #include void gcd(int a,int b,int &d,int &x,int &y) { if(!b) d=a,x=1,y=0; else { gcd(b,a%b,d,y,x); y-=x*(a/b); } } int main() { //freopen("a.

2013-05-28 19:43:24 796

原创 106 - Fermat vs. Pythagoras

描述:这个需要推一下:2z=(z+x)+(z-x),2x=(z+x)-(z-x),假设z+x=n,z-x=m,那么y*y=n*m, x、y、z必须是两两互质的,那么这三个数中至少有两个奇数,那么则可以得到n与m必须是 两偶数或者是两奇数,这样的话循环的话依然是从1循环到上限max,所以有此得到的 { z=(n+m)/2; x=(n-m)/2; y*y=n*m; } 可以转化一下,因为n与

2013-05-28 18:06:22 884

原创 10911 - Forming Quiz Teams

描述:集合题目,刘汝佳书上有这道题目,不过他的代码有点漏洞,需要改一点才能过 #include #include #include int n,t=0; char str[1010]; double v[25][2],d[(1<<20)]; double min(double x,double y) { return x>y?y:x; } double solve(int x,int

2013-05-28 13:44:46 712

原创 11151 - Longest Palindrome

描述:计算存在的最长回文串长度 #include #include #include int n,sum; char str[1010]; int v[1010][1010]; int max(int x,int y) { return x>y?x:y; } int dp(int x,int y) { if(v[x][y]) return v[x][y]; if(x=

2013-05-24 17:04:10 556

原创 10891 - Game of Sum

描述:博弈题目,双方可以数组任何一边取连续的的几个数组元素的值的和,但不能同时从两边去,可以从一边一次取到头 #include #include #include int n,sum; int arr[110]; int v[110][110]; int min(int x,int y) { return x>y?y:x; } int dp(int x,int y) { if

2013-05-24 12:54:56 817

原创 10401 - Injured Queen Problem

描述:晕了,因为读入字符串时用gets读入的,所以一直错,可是用scanf读入却对了,无语。题意是有一个字符串,字符串的长度len表示有一个len*len的矩阵,?表示在这一列的人一行可以放一个皇后,皇后只能攻击一列和周围把个地方的目标,数字及字母是十六进制,用n表示,表示在这一列的第n行必须有一个皇后,也就是说这一列已经确定了只会有这一个皇后 #include #include #inclu

2013-05-23 14:08:08 844

原创 10313 - Pay the Price

描述:要用到Ferrers图算法,看了一下似懂非懂,通过别人的代码,也似乎看懂了 #include #include long long v[310][310]= {{0}}; void dp() { v[0][0]=1; for(int i=0; i<=300; i++) for(int j=1; j<=300; j++) {

2013-05-21 22:34:48 807

原创 10029 - Edit Step Ladders

描述:字符串有点大,直接用动规的话25000^2肯定会超时,所以需要动规+二分/哈希,我的代码是采用二分,这样的话,不超过2s就可以过了 #include #include #include char str[25010][18]; int v[25010]; int n,sum; void dic(int x,char *p) { int first=x+1,last=n-1,t;

2013-05-21 18:13:00 883

原创 10453 - Make Palindrome

描述:把一个字符串通过增加操作变成回文,然后把这个回文输出 #include #include #include char str[1010]; int p[1010][1010]; int v[1010][1010]; int min(int x,int y) { return x>y?y:x; } int dp(int x,int y) { if(v[x][y]!=-1)

2013-05-19 16:19:17 606

原创 10201 - Adventures in Moving - Part IV

描述:i表示第几个加油站,j表示在第i个加油站时剩余的油量,k表示在第i个加油站要加的油量 #include #include #include int v[110][210],arr[110][2]; int min(int x,int y) { return x>y?y:x; } int main() { // freopen("a.txt","r",stdin);

2013-05-18 14:50:02 651

原创 10154 - Weights and Measures

描述:最长子序列,不过需要注意的是小乌龟的重量会依次加在下层的小乌龟身上,所以越往下,小乌龟所承受的重量越大 #include #include #include int v[5610][2],arr[5610]; int cmp(const void *p1,const void *p2) { int c = ((int *)p1)[1] - ((int *)p2)[1];

2013-05-15 08:43:16 848

原创 11137 - Ingenuous Cubrency

#include #include int v[]= {1,8,27,64,125,216,343,512,729,1000,1331,1728, 2197,2744,3375,4096,4913,5832,6859,8000,9261 }; long long sum[10005]= {0}; int main() { sum[0]=1;

2013-05-14 14:22:56 697

原创 10617 - Again Palindrome

描述:if(v[x]!=v[y]) sum[x][y]=dp(x,y-1)+dp(x+1,y)-dp(x+1,y-1);如果不相等,那么需要计算的就是字符串从[x,y]之间的,所以从[x,y-1]与[x+1,y]多计算了[x+1,y-1]这一段,需要减去。 if(str[x]==str[y]) dp(x,y)=dp(x,y-1)+dp(x+1,y)+1;如果相等,那么计算的除了[x,y]这段区间外

2013-05-14 13:58:27 685

原创 10271 - Chopsticks

描述:题意很简单,就是需要选取(A-B)^2,的最小值和,而且C必须是最大的,那么可以把A与B捆绑在一块,然后选取C即可,i*3则可以消除筷子对数不与i-1相同的情况,因为要选取K+8个,所以外层循环K+8次就行 #include #include int n,k,t; int v[1010][5005],arr[5005],s[5005]; int min(int x,int y) {

2013-05-11 19:23:23 757

原创 10304 - Optimal Binary Search Tree

描述:从最优二叉树到最优二叉查找树,类似于哈夫曼树,不过是和最小的哈夫曼树,主要问题是选取结点,状态方程v[l][j]=min(v[l][j],v[l][k-1]+v[k+1][j]+sum[j]-sum[l-1]-arr[k]);这样的话就不用再求其深度,记录其路径,直接输出就可以 #include #include #define M 255*255*105 int n; int v[26

2013-05-07 19:23:26 1340

原创 10739 - String to Palindrome

描述:经典dp问题,状态方程:if(s[x]!=s[y]) min(dp(x,y-1),dp(x+1,y),dp(x+1,y-1));else dp(x+1,y-1); #include #include int n; int v[1010][1010]; char s[1010]; int min(int x,int y) { return x>y?y:x; } int dp(int

2013-05-03 22:34:29 608

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除