摘要:#include<cstdio>#include<cstring>#include<iostream>using namespace std;int L,n;int l[21];bool vis[21];int dfs(int nused,int left,int pos){ if(nused==0&&left==0) return 1; if(left==0)left=L; for(int i=pos;i<n;i++){ if(!vis[i]&&left>=l[i]){ if(i>0&&!v
阅读全文
摘要:题意:给出一个有序集合,3种操作。插入一个数,删除一个数,都保证序列有序。以及求和其中求和是将下标%5==3的所有数求和,这道题是2012年成都网络预赛的题目,一开始只知道用线段树,但不知从何下手,因为要求的不是连续区间的元素之和,而是满足%5==3的所有数求和,当时我就迷茫了,之后搜了网上的题解,基本上弄懂了。思路:线段树求解,不过与以往的不同这个是多棵的线段树,每个节点下有五个元素集,每个是当前树所有下标%5==3的元素的和,这样就可以去求满足条件的元素和了。 1 #include<cstdio> 2 #include<iostream> 3 using names
阅读全文
摘要:1 #include<iostream> 2 using namespace std; 3 int Max(int a,int b,int c){ 4 if(a<b) a=b; 5 if(a<c) a=c; 6 return a; 7 } 8 int f[105][105]; 9 int main()10 {11 int n,T,i,j,k,m,s,c,g;12 while(~scanf("%d%d",&n,&T)){13 memset(f,0,sizeof(f));14 for(i=1;i<=n;i++){15 ...
阅读全文
摘要:#include<stdio.h>#include<string.h>int d[101][101];int main(){ int i,j,t,flag,v,w,n,m,k,s; while(~scanf("%d%d%d%d",&n,&m,&k,&s)){ memset(d,0,sizeof(d)); for(flag=i=0;i<k;++i){ scanf("%d%d",&v,&w); for(j=w;j<=m;++j) for(t=1;t<=s;++t) ..
阅读全文
摘要:1 #include<stdlib.h> 2 #include<stdio.h> 3 int year,month,day; 4 int m[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31, 5 0,31,29,31,30,31,30,31,31,30,31,30,31}; 6 int y[660]={0}; 7 bool isrun(int year) 8 { 9 if((year%4==0&&year%100!=0)||year%400==0)10 return 1;11 return...
阅读全文
摘要:1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 0x7ffffff 4 struct G { 5 int d; 6 int p; 7 }map[1001][1001]; 8 struct D { 9 int d;10 int p;11 }dist[1001];12 bool vis[1001];13 int m,n,s,e;14 void dijkstra()15 {16 int i,j,k,min;17 for(i=1;i<n;i++){18 for(min=MAX...
阅读全文
摘要:1 #include<stdio.h> 2 void fast_pow(int a[][2], int b[][2]) 3 { 4 int c[2][2]; 5 6 c[0][0] = (a[0][0]*b[0][0] + a[0][1] * b[1][0]) % 7; 7 c[0][1] = (a[0][0]*b[0][1] + a[0][1] * b[1][1]) % 7; 8 c[1][0] = (a[1][0]*b[0][0] + a[1][1] * b[1][0]) % 7; 9 c[1][1] = (a[1][0]*b[0][1] + a[1][1] * ...
阅读全文
摘要:1 #include<stdio.h> 2 #include<string.h> 3 int a[1001],m[1001]; 4 int main() 5 { 6 int i,j,n,ans,res; 7 while(scanf("%d",&n),n){ 8 memset(m,0,sizeof(m)); 9 for(i=0;i<n;++i)10 scanf("%d",&a[i]);11 for(i=0;i<n;++i) {12 for(ans=j=0;j<i;++j)13 ...
阅读全文
摘要:1 #include<stdio.h> 2 #include<string.h> 3 #define Max 0x3f3f3f3f 4 int n,m,totalEle,miCost; 5 bool vis[101]; 6 int map[101][101],dist[101]; 7 int d[10001],val[101]; 8 void init()//初始化读入数据 9 {10 int i,j,a,b,w;11 scanf("%d%d",&n,&m);12 for(i=0;i<=n;++i)13 for(j=0;j<
阅读全文
摘要:1 #include<stdio.h> 2 #include<string.h> 3 int d[101][101]; 4 int main() 5 { 6 int i,j,t,flag,v,w,n,m,k,s; 7 while(~scanf("%d%d%d%d",&n,&m,&k,&s)){ 8 memset(d,0,sizeof(d)); 9 for(flag=i=0;i<k;++i){10 scanf("%d%d",&v,&w);11 for(j=w;j<=m;++
阅读全文
摘要:1 #include<stdio.h> 2 int d[10010]; 3 int main() 4 { 5 int i,j,n,pig,total,v,w,T; 6 scanf("%d",&T); 7 while(T--) 8 { 9 scanf("%d%d%d",&pig,&total,&n);10 total-=pig;11 memset(d,0x3f,sizeof(d));12 for(d[0]=0,i=0;i<n;++i){13 scanf("%d%d",&v,&am
阅读全文
摘要:1 #include<stdio.h> 2 #define Max 0xfffffff 3 #define N 600 4 bool vis[N]; 5 int path[N][N];//昨天把path数组定义为BOOl型了,输出的时候老是死循环,昨天检查了一晚上没发现,今天多亏了我强悍的队友给我指明了错误!! 6 int d[N][N],cost[N]; 7 int vexnum,arcnum; 8 void floyd() 9 {10 for(int k=0;k<vexnum;++k)11 for(int i=0;i<vexnum;++i)12 ...
阅读全文
摘要:1 #include<iostream> 2 using namespace std; 3 int f[1001][1001],w[1001],v[1001]; 4 int main() 5 { 6 int i,j,n,totalv,T; 7 cin>>T; 8 while(T--){ 9 cin>>n>>totalv;10 for(i=1;i<=n;++i)11 cin>>v[i];12 for(i=1;i<=n;++i)13 cin>>w[i];14 f...
阅读全文
摘要:1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define Max 0xfffffff 5 int m[10010][10010],p[10010]; 6 bool vis[10010]; 7 int vexnum,arcnum; 8 void dijstra() 9 {10 int i,j,k,t,min;11 memset(vis,0,sizeof(vis));12 for(i=1;i<=vexnum;++i)13 p[i]=m[1][i];14 for(v...
阅读全文
摘要:1 #include<cstring> 2 #include<iostream> 3 #include<algorithm> 4 #define P(x,y) ((x-y)*(x-y)) 5 using namespace std; 6 int a[2010],d[2010][2010]; 7 int main() 8 { 9 int i,j,n,k;10 while(cin>>n>>k){11 for(i=0;i<n;++i)12 cin>>a[i];13 sort(a,a+n);14 memset(d...
阅读全文
摘要:1 #include<stdio.h> 2 #include<ctype.h> 3 #include<string.h> 4 char s[260]; 5 int dfs(int ith) 6 { 7 int k,e; 8 char c; 9 for(c=s[ith++];ith<strlen(s)&&c!=')';c=s[ith++])//递归结束的条件是字符串结束或遇到右括号 10 {11 for(k=0;isdigit(c);c=s[ith++])12 k=k*10+c-'0';13 if(!k)
阅读全文
摘要:hdu2013蟠桃记 1 #include<stdio.h> 2 int main() 3 { 4 long long day,x,ans[31]; 5 for(int i=1;i<31;++i){ 6 x=1; 7 day=i; 8 while(--day) 9 x=(x+1)<<1;10 ans[i]=x;11 }12 while(~scanf("%I64d",&day))13 printf("%I64d\n",ans[day]);14 retu...
阅读全文
摘要:1 #include<string.h> 2 #include<stdio.h> 3 int f[100010];//存放一个节点的父节点的编号 4 bool is[100010];//标志编号为I的房间是否存在 5 void exist(int x,int y)//判断x,y点是否已经存在 6 { 7 if(!is[x]){ 8 is[x]=1; 9 f[0]++;//统计房间个数 10 }11 if(!is[y]){12 is[y]=1;13 f[0]++;14 }15 ...
阅读全文
摘要:1 #include<stdio.h> 2 int bin[1002]; 3 int findx(int x) 4 { 5 int r=x; 6 while(bin[r]!=r) 7 r=bin[r]; 8 return r; 9 }10 void merge(int x,int y)11 {12 int fx,fy;13 fx=findx(x);14 fy=findx(y);15 if(fx!=fy)16 bin[fx]=fy;17 }18 int main()19 {20 int i,j,m,n,x,...
阅读全文
摘要:1 #include<stdio.h> 2 #define N 210 3 #define M 0xffffff 4 int D[N];//存放v0到其余节点的最短路径 5 int arc[N][N];//存放边的权值 6 int vexnum,arcnum;//村庄数及道路数 7 int ShortPath(int v0,int v1) 8 { 9 int v,w,k,min;10 int vis[N];//标志数组,记录最小路径节点 11 if(v0==v1) return 0;12 for(v=0;v<vexnum;v++){13 ...
阅读全文