摘要: #include<stdio.h>//动态规划,基本的背包类型。#include<string.h>#define MAX 100000int tot[MAX],attack[MAX],cost[MAX];int main(){ int g,u,i,j; int t; scanf("%d",&t); while(t--) { scanf("%d%d",&g,&u); memset(tot,0,sizeof(tot)); for(i=0;i<u;i++) { scanf("%d",& 阅读全文
posted @ 2012-09-15 21:48 尔滨之夏 阅读(198) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string>#include<map>using namespace std;map<string,int>v;//用map进行标记处理,比较方便int main(){ int n,m; char s1[20],s2[20],a; scanf("%d%d",&n,&m); while(n--) { scanf("%s %c",s1,&a); if(a=='T') v[s1]=1; else if(a=='P 阅读全文
posted @ 2012-09-13 18:30 尔滨之夏 阅读(526) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int a[100][100],b[100][100],c[100][100]; int i,j,k; int m,n,p; while(scanf("%d%d%d",&m,&n,&p)!=EOF) { for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<p;j++) scanf("%d",& 阅读全文
posted @ 2012-09-06 19:24 尔滨之夏 阅读(198) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>int main(){ int n; int a[9000]; //确保保存最终运算结果的数组足够大 int digit = 1; //位数 int temp; //阶乘的任一元素与临时结果的某位的乘积结果 int i,j,carry; //进位 printf("please in put n:\n"); scanf("%d",&n); a[0] = 1; //将结果先初始化为1 for(i = 2; ... 阅读全文
posted @ 2012-09-03 21:08 尔滨之夏 阅读(150) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>int a[101][1001],b[101][1001];int n;#define max1(a,b) (a>b)?(a):(b);int max2(int a,int b,int c){ b=max1(b,c); a=max1(a,b); return a;}int dp(int i,int j){ if(b[i][j]>=0) return b[i][j]; return b[i][j]=a[i][j]+(i==n-1?0:max2(dp(i+1,j),dp(i+1,j+1),dp 阅读全文
posted @ 2012-09-01 21:11 尔滨之夏 阅读(209) 评论(0) 推荐(0) 编辑
摘要: Description某种病毒袭击了某地区,该地区有N(1≤N≤50000)人,分别编号为0,1,...,N-1,现在0号已被确诊,所有0的直接朋友和间接朋友都要被隔离。例如:0与1是直接朋友,1与2是直接朋友,则0、2就是间接朋友,那么0、1、2都须被隔离。现在,已查明有M(1≤M≤10000)个直接朋友关系。如:0,2就表示0,2是直接朋友关系。请你编程计算,有多少人要被隔离。Input第一行包含两个正整数N(1≤N≤50000),M(1≤M≤100000),分别表示人数和接触关系数量;在接下来的M行中,每行表示一次接触,;每行包括两个整数U, V(0 <= U, V < N) 阅读全文
posted @ 2012-09-01 20:07 尔滨之夏 阅读(210) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int next[50010];int find(int a){ return a==next[a]?a:(find(next[a]));//用到数据结构并查集的两种用法;}int main(){ int n,m,i,a,b,sum,x,y; while(scanf("%d%d",&n,&m)!=EOF) { sum=0; for(i=0;i<n;i++) next[i]=i; while(m--) { scanf("%d%d",&a,&b); x=find(a);y=f 阅读全文
posted @ 2012-09-01 20:00 尔滨之夏 阅读(450) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>int main(){ int n,i,len,j; char a[1000],b[1000],top,g,t; while(scanf("%d",&n)!=EOF) for(i=0;i<n;i++) { scanf("%s",a); len=strlen(a); top=0; g=-1; for(j=len-1;j>=0;j--) if(a[j]=='@') { g=j; break; } for(j=g+1;j<le 阅读全文
posted @ 2012-09-01 16:33 尔滨之夏 阅读(349) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>int main(){ int sum,i; char s[1001]; while(scanf("%s",s)!=EOF) { if(s[0]=='0') break; sum=0; for(i=0;i<strlen(s);i++) sum=((sum*10)+s[i]-'0')%33;//大数求余的方法 printf(sum==0?"O... 阅读全文
posted @ 2012-09-01 16:32 尔滨之夏 阅读(181) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>int main(){ int sum,i; char s[1001]; while(scanf("%s",s)!=EOF) { if(s[0]=='0') break; sum=0; for(i=0;i<strlen(s);i++) sum=((sum*10)+s[i]-'0')%33;//大数求余的方法 printf(sum==0?"O... 阅读全文
posted @ 2012-08-29 19:51 尔滨之夏 阅读(335) 评论(0) 推荐(0) 编辑