摘要:#include #include #include int main(){ int dp[200]; int count[200]; int n,m,k,s; int c[200],w[200]; int i,j,res; while(~scanf("%d%d%d%d",&n,&m,&k,&s)){ for(i=1;i=dp[j-c[i]]+w[i]){ dp[j]=dp[j]; count[j]=count[j]; }else{ ...
阅读全文
11 2013 档案
摘要:#include #include #include int main(){ int dp[200]; int count[200]; int n,m,k,s; int c[200],w[200]; int i,j,res; while(~scanf("%d%d%d%d",&n,&m,&k,&s)){ for(i=1;i=dp[j-c[i]]+w[i]){ dp[j]=dp[j]; count[j]=count[j]; }else{ ...
阅读全文
摘要:#include #include #define mmin(x,y) (x)=c[i];--v){ dp[v]=mmin(dp[v],dp[v-c[i]]*w[i]); } } res=1; for(i=n;i>=0;--i){ if(dp[i]>=aim){ if(dp[i]<res) res=dp[i]; } } printf("%.1lf%%\n...
阅读全文
摘要:f(x,t)=max{ f(x-1,t-1) , f(x,t-1) , f(x+1,t-1) };left=(5-t)>0?(5-t):0;right=(5+t)#include #define mmax(x,y,z) (x)>((y)>(z)?(y):(z))?(x):((y)>(z)?(y):(z))int gird[100000+10][11];int main(){ int i,j; int n,x,t; int left,right; int maxt; int res; int x1,x2,x3; while(~scanf("%d",&a
阅读全文
摘要:#include #include #define MAXN 1100int parent[MAXN];int n,m;void UFset(){ for(int i=1;i=0;s=parent[s]) ; while(s!=x){ int tmp=parent[x]; parent[x]=s; x=tmp; } return s;}void Union(int R1,int R2){ int r1=Find(R1),r2=Find(R2); int tmp=parent[r1]+paren...
阅读全文
摘要:use fmax().-------TLE#define mmax(a,b) (a)>(b)?(a):(b); ---796msthat's it!#include #include #include #define mmax(a,b) (a)>(b)?(a):(b);int main(){ int dp[50*50*100+100]; int n,t,i,j,res; int w[250000+10]; int t1,t2; int cnt,sum; while(~scanf("%d",&n)){ if(n=w[i];--j) ...
阅读全文
摘要:if(x==1) f(x,y)=max{f(x,y-1),f(x,z)} {y%z==0&&1#include int mmax(int a,int b){ int t; if(a>b) t=a; else t=b; return t;}int main(){ int t,n,m,i,j,res,max,z; int tmp; int f[25][1100]; int gird[25][1100]; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); fo...
阅读全文
摘要:01-bag#include #include #include int main(){ int t; int n,v; int c[1100],w[1100]; int dp[1100]; int i,j; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&v); for(i=1;i=c[i];--j){ dp[j]=fmax( dp[j] , dp[j-c[i]]+w[i]); } } printf("...
阅读全文
摘要:the main algorithm as the 1506#include #include #include using namespace std;char gird[1100][1100];int num[1100][1100];int m,n;int find(int a){ int i,j,res,max; int t; int l[1100],r[1100]; l[1]=1; r[m]=m; for(i=2;i1&&num[a][i]=1;--i){ t=i; if(num[a][i]==0){ r...
阅读全文
摘要:today, my cc can't make '__in64'it's so bad!!!i don't know why#include //long long num[100000+100];__int64 num[100000+100];__int64 res;//long long res;int main(){long long res; int n,i; int left[100000+10]; int right[100000+10]; int t; while(~scanf("%d",&n)&&
阅读全文
摘要:use the cnt as the limit.#include #include double num[50],sum;double dp[50];double a,b,c;int cnt;int main(){ double res,tmp,tt; int q,n,i,j,k; char type; int success; while(~scanf("%lf%d",&sum,&n)){ if(n==0) break; cnt=0; for(i=0;i=tmp)){ if(typ...
阅读全文
摘要:runtime! debian.vim"设置编码set encoding=utf-8set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936set fileencodings=utf-8,ucs-bom,chinese"语言设置set langmenu=zh_CN.UTF-8"command WQ wqcommand Wq wqcommand W wcommand Q qmap i{ea}map oprintf("bug!here is a bug!!!!\n");map :wqmap
阅读全文
摘要:'NapCat' in AppStore for reading codes from github.and the ----minibufexpl | + nerdtree | + taglist | + winmanager | ======> in 'vim' // so nice ! so cool !
阅读全文
摘要:如果i==j&&j-1>=0时候,f[i][j]=f[i][j-1];如果j==0时候,f[i][j]=1;其他 f[i][j]=f[i-1][j]+f[i][j-1];#include int main(){ __int64 gird[40][40]; int i,j; for(i=0;i<=35;++i) gird[i][0]=1; for(i=1;i<=35;++i){ for(j=1;j<=i;++j){ if(j==i){ gird[i][j]=gird[i][j-1]; ...
阅读全文
摘要:查找1-n中能整除n的数的个数。如果是偶数的话,结果为0 奇数的话,结果为1#include int main(){ int i,cnt,n; while(~scanf("%d",&n)){ cnt=0; for(i=1;i<=n;++i){ if(n%i==0) cnt++; } if(cnt%2==0) printf("0\n"); else printf("1\n"); } return 0;}
阅读全文
摘要:注意输入全是0的情况。#include #include #include using namespace std;bool cmp(char a[],char b[]){ return ( strcmp(a,b)>0 );}int main(){ char str[100000]; char *res[100000]; int i,cnt,l; int RES; int sign; while(NULL!=gets(str)){ cnt=0; l=strlen(str); if( strcmp(str,"#"...
阅读全文
摘要:#include #include #include #include using namespace std;int m;struct node{ char name[100]; int time,acno;}p[100];bool cmp(node a,node b){ if(a.acno==b.acno&&a.time==b.time) return (strcmp(b.name,a.name)>0); else if(a.acno==b.acno) return a.timeb.acno;}int change(char tmp[]){ int sum,...
阅读全文
摘要:刚开始看这题,感觉是DP什么的 ,后来我发现,只要找到中最小值,就可以啦,哈哈。假如用x1把0-100分割。则0-x1-100 ===> x1^2+(100-x1)^2跟0-100 ===> 100^2比较,可以很容易的比较出来,大家可以用构造面积法证明一定是100^2比较大,无论将其分成多少段。#include int main(){ int n,m,min,t,tmp,i; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); min=1000000; for(i=0;i
阅读全文
摘要:注意是两位数,必须输出01,02,03,这种#include int main(){ int begin,end; int i; int res[110]; int cnt; int sign; while(~scanf("%d%d",&begin,&sign)){ if(begin==0&&sign==0) break; end=(begin+1)*100-1; begin*=100; cnt=0; for(i=begin;i<=end;++i){ if(i%sig...
阅读全文
摘要:#include int main(){ __int64 h[100],l[100]; int i,j; int n; while(~scanf("%d",&n)&&n!=-1){ h[0]=1; l[0]=0; for(i=1;i<=n;++i){ h[i]=h[i-1]*3+l[i-1]*2; l[i]=h[i-1]*1+l[i-1]*1; } printf("%I64d, %I64d\n",h[n],l[n]); } return 0;}
阅读全文
摘要:#include int sum1(int n,int sign){ int sum=0; while(n){ sum+=n%sign; n/=sign; } return sum;}int main(){ int n; while(~scanf("%d",&n)&&n){ //printf("10=%d,16=%d,2=%d\n",sum1(n,10),sum1(n,16),sum1(n,2)); if( sum1(n,10)==sum1(n,16) && sum1(n,16)==sum1(n,12)...
阅读全文
摘要:这题还是递推,只能在后面加E,O,F三个字母,若在f(n-1)后加,E,F,则新增了2*f(n-1)个序列若加 O ,则只能在f(n-1)种尾部为E,F的序列后加,回到上一种情况,即f(n-2)*2把上面两种情况合起来就变成了 f(n)=2*f(n-1)+2*f(n-2)。#include int main(){ __int64 num[40]; int i,n; num[1]=3; num[2]=8; for(i=3;i<40;++i){ num[i]=2*(num[i-1]+num[i-2]); } while(~scanf("%d"...
阅读全文
摘要:#include #include int main(){ int cnt,i,j,k; char str[1000+100],tmp[1000+10]; int strl,tmpl; while(~scanf("%s",str)){ if(!strcmp(str,"#")) break; scanf("%s",tmp); cnt=0; strl=strlen(str); tmpl=strlen(tmp); for(i=0;i=strl) break; if(s...
阅读全文
摘要:老题目了#include int main(){ int gird[110][110]; int i,j,max; int c,n; scanf("%d",&c); while(c--){ scanf("%d",&n); for(i=0;i=0;--i){ for(j=0;jgird[i+1][j+1]?gird[i+1][j]:gird[i+1][j+1] ); } } printf("%d\n",gird[0][0]); } return 0;}
阅读全文
摘要:f(n)=f(n-1)+2*f(n-2)#include int main(){ __int64 num[55]; int i,n; num[1]=3;num[2]=6;num[3]=6; for(i=4;i<=50;++i){ num[i]=num[i-2]*2+num[i-1]; } while(~scanf("%d",&n)){ printf("%I64d\n",num[n]); } return 0;}
阅读全文
摘要:二进制转换#include void change(int n){ int num[100]; int cnt=0; while(n){ num[cnt]=n%2; n/=2; cnt++; } cnt--; while(cnt>=0){ printf("%d",num[cnt]); cnt--; } printf("\n"); return ;}int main(){ int n; while(~scanf("%d",&n)){ change(...
阅读全文
摘要:递推题目,由于只有一种瓷砖,1*2规格的,所以一块2*2的面积上只能有2种摆放方式,然后就跟上台阶那个差不多,上一步或者上两部。就是f[n]=f[n-1]+f[n-2];另外注意__int64的问题。#include int main(){ __int64 num[55]; int i,n; num[1]=1;num[2]=2;num[3]=3; for(i=4;i<=50;++i){ num[i]=num[i-1]+num[i-2]; } while(~scanf("%d",&n)){ printf("%I64d\n",num[...
阅读全文
摘要:#include int init(char a){ if(a>='a'&&a<='z'){ return -(a-'a'+1); }else return a-'A'+1;}int main(){ int num,t; char a; scanf("%d",&t); getchar(); while(t--){ scanf("%c %d",&a,&num); getchar(); printf("%d\n",init(
阅读全文
摘要:#include #include int n1,n2,m,ans;int result[1001]; //记录V2中的点匹配的点的编号bool state [1001]; //记录V2中的每个点是否被搜索过bool data[1001][501];//邻接矩阵 true代表有边相连void init() { int t1,t2; memset(data,0,sizeof(data)); memset(result,0,sizeof(result)); ans = 0; scanf("%d%d",&n1,&n2); for (int i = 1; i <
阅读全文
摘要:开始忘排序了。#include #include #include using namespace std;int main(){ int num[1000]; int t,n,i,number,mid,res; while(~scanf("%d",&t)){ while(t--){ res=0; scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d",&num[i]); } sort(nu...
阅读全文
摘要:#include #include int main(){ char str[20]; char *p; int t; p=(char *)malloc(100); scanf("%d",&t); getchar(); while(t--){ gets(str); p=&str[6]; printf("6%s\n",p); } return 0;}
阅读全文
摘要:我先求出交叉的gird,然后再一行一行求得。感觉还可以吧。思路比较清晰,开始想的是数是第几行然后从每一行的前后开始控制,好麻烦的感觉,我就先求出来了框架再做就好做多啦!后来PE,突然发现我特殊处理n=1的时候一下子输出了2个\n,改掉以后就好了。#include #include #include #define bug puts("bug!bug!bug!!!!!");char gird[100][100];int main(){ int n,i,j,cnt,g; int isfirst=1; char gird[100][100],in,out,oout; whil..
阅读全文
摘要:#include #include char sign[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','
阅读全文
摘要:要注意数组要__int64才行,不然会溢出。#include int gcd(int a,int b){ int t,c; if(a<b){ t=a;a=b;b=t; } c=1; while(c){ c=a%b; a=b; b=c; } return a;}int main(){ int n,i; int t1,t2; __int64 num[10000]; while(~scanf("%d",&n)){ for(i=0;i<n;++i){ ...
阅读全文
摘要:#include int main(){ int t,i,n,res; while(~scanf("%d",&t)){ while(t--){ scanf("%d",&n); res=3; for(i=0;i<n;++i){ res=(res-1)*2; } printf("%d\n",res); } } return 0;}
阅读全文
摘要:这题目感觉不是很严谨,如果是关键字的话也是不能作为合法标识符的,但是这个不用检测,就算要检测也会很费劲,还得用字符串匹配,而且还得知道一共都有哪些关键字,太麻烦了,所以出题人原意就是检查大小写字母数字和下划线就OK了。 1 #include 2 #include 3 int main(){ 4 int n; 5 int i; 6 int sign; 7 char str[10000]; 8 while(~scanf("%d",&n)){ 9 getchar();10 while(n--){11 ...
阅读全文
摘要:1 #include 2 #include 3 #define here puts("go,go,go!\n") 4 int main(){ 5 int tmp,res,cnt,num[10000]; 6 int m,n,i,j,pi,pj; 7 while(~scanf("%d%d",&m,&n)){ 8 res=0; 9 for(i=0;ifabs(res)){14 res=num[j]; pi=i+1;pj=j+1;15 }16 }...
阅读全文
摘要:这是一道计算几何题目,用三小型分割多边形来求。开始我还比较迷糊,还想着考虑这考虑那,后来我发现根本不用考虑凹凸多边形的区别问题,因为有正有负,加起来结果必然是非负的。所以根本不用考虑那么多直接搞就行!或许在第n个点的时候要加到结果上的值是负的,但是在n+1,n+2...或者n+k个点的时候这个结果一定会补救回来,描述不太好描述,画个图理解理解就好了。挺好的题目。 1 #include 2 struct point{ 3 int x,y; 4 }; 5 struct vec{ 6 int x,y; 7 }; 8 int mul_vec(vec a,vec b){ 9 r...
阅读全文
摘要:#include int main(){ __int64 a,b,t; while(~scanf("%I64X%I64X",&a,&b)){ if(a+b<0) { printf("-%I64X\n",-(a+b)); }else{ printf("%I64X\n",a+b); } } return 0;}
阅读全文
摘要:1 /* 2 A-10 B-11 C-12 D-13 E-14 F-15 3 */ 4 #include 5 #include 6 #include 7 struct number{ 8 int sign; /* 1 --> positive number; 9 0 --> negative number;10 */11 __int64 num;12 };13 number change(char str[]){14 __int64 tmp=0;15 number res...
阅读全文
|