上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 57 下一页

2011年7月9日

sicily 1424. 奖金

摘要: //拓扑排序#include <iostream> //邻接表实现#include <string.h>#include <numeric>using namespace std;#define MAXN 10002#define MAXM 20002int in[MAXN],path[MAXN],wei[MAXN];int u[MAXM],v[MAXM],first[MAXM],Next[MAXM]; //first[u]保存结点u的第一条边的编号,next[e]表示编号为e的边的“下一条边”的编号int main(){ int n,m; cin>& 阅读全文

posted @ 2011-07-09 03:02 sysu_mjc 阅读(240) 评论(0) 推荐(0) 编辑

2011年7月8日

sicily 1002. Anti-prime Sequences

摘要: // 题意: 给出n,m,d,元素的取值从n到m,要求满足在序列中任意(2,3,...d)个数的和都不是素数,// 如果存在则输出字典序最小的序列,其中 1<=n<m<=1000, 2<=d<=10#include<iostream> // DFS #include<stdio.h>#include<cstring>#include <math.h>using namespace std;int n,m,d;int arr[1010],vis[1010],ok;int is_prime(int a){ for(int 阅读全文

posted @ 2011-07-08 21:22 sysu_mjc 阅读(240) 评论(0) 推荐(0) 编辑

sicily 1935. 二叉树重建

摘要: #include <iostream> //根据先序遍历序列和中序遍历序列建立二叉树,并按层遍历#include <string>using namespace std;string str1,str2;int n;struct Node { char ch; Node *left,*right;}node[5000];Node* built(int s1,int t1,int s2,int t2) //根据先序遍历序列和中序遍历序列建二叉树{ int m=n++; //声明为局部变量 node[m].ch=str1[s1]; ... 阅读全文

posted @ 2011-07-08 20:56 sysu_mjc 阅读(399) 评论(2) 推荐(0) 编辑

sicily 1156. Binary tree

摘要: #include<iostream> //给出一棵二叉树,输出前序遍历序列#include<stack>using namespace std;struct node{ char c; int l,r;}tree[1010];int vis[1010],rt[1010];void add(int p,char c,int l,int r) //满足vis[p]==1且rt[p]==1 是根结点{ tree[p].c=c; vis[p]=1; if(l>0) { tree[p].l=l;vis[l]=1;rt[l]=0; //左右结点可以确定不是根结点 } if(r 阅读全文

posted @ 2011-07-08 18:22 sysu_mjc 阅读(239) 评论(0) 推荐(0) 编辑

sicily 1934. 移动小球

摘要: //刘汝佳的《算法竞赛入门经典》P95#include<iostream>//双向链表,强调小球之间的相对顺序,而非绝对顺序usingnamespacestd;intl[500010],r[500010];//l[i],r[i]分别记录编号i的小球的左边left和右边right的小球编号voidlink(intx,inty)//x,y成为邻居,即right[x]=y;left[y]=x,x在y左边{r[x]=y;l[y]=x;}intmain(){intt,n,m,tag,x,y;cin>>t;while(t--){cin>>n>>m;for(i 阅读全文

posted @ 2011-07-08 14:21 sysu_mjc 阅读(316) 评论(0) 推荐(0) 编辑

2011年7月7日

sicily 1762. 排座椅

摘要: #include<iostream> //纵向和横向是独立的,各不影响,以行为例,对各行交头接耳的学生对数作统计,从大到小排列,取前 k 个,再按从小到大输出#include<algorithm>using namespace std;int cmp(const void *a,const void *b){ return ((int *)b)[0]-((int *)a)[0];}int main(){ int m,n,k,l,d,x,y,p,q,a[1010][2],b[1010][2],res[1010]; while(cin>>m>>n&g 阅读全文

posted @ 2011-07-07 15:48 sysu_mjc 阅读(221) 评论(0) 推荐(0) 编辑

sicily 1763. 传球游戏

摘要: // 题意: n个同学站成一个圆圈,每个同学可以把球传给旁边两个同学,// 问有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里#include<iostream> //DP#include<cstring>using namespace std;int n,m,dp[100][100]; //dp[i][j]表示球经传递 i 次后落在第 j 个同学的方案数 int main(){ while(cin>>n>>m) { memset(dp,0,sizeof(dp)); dp[0][1]=1... 阅读全文

posted @ 2011-07-07 14:50 sysu_mjc 阅读(217) 评论(0) 推荐(0) 编辑

sicily 1146. 采药

摘要: #include <iostream> //0-1背包using namespace std;const int max_m=105,max_w=10005; int main() { int c,m,v[max_m],w[max_m],dp[max_w]; cin>>c>>m; for(int i=1;i<=m;++i) cin>>w[i]>>v[i]; for(int i=1;i<=m;++i) for(int j=c;j>=w[i];--j) dp[j]=max(dp[j],dp[j-w[i]]+v[i]); 阅读全文

posted @ 2011-07-07 14:19 sysu_mjc 阅读(142) 评论(0) 推荐(0) 编辑

sicily 2013. Pay Back

摘要: #include<iostream>using namespace std;int n,d[100010];int main(){ cin>>n; for(int i=1;i<=n;++i) cin>>d[i]; int step=n,s=0,pre=-1; //pre=-1表示当前可以偿还债务 for(int i=1;i<=n;++i) { s+=d[i]; if(s<0&&pre==-1) //无法偿还债务时(s<0)应记录下是在哪个点开始无法偿还 pre=i; else if(s>=0&&p 阅读全文

posted @ 2011-07-07 13:12 sysu_mjc 阅读(187) 评论(0) 推荐(0) 编辑

sicily 1782. Knapsack

摘要: #include<iostream> //赤裸裸的0-1背包问题using namespace std;int main(){ int t,n,m,item,dp[10010]; cin>>t; while(t--) { cin>>n>>m; fill(dp,dp+m+1,0); while(n--) { cin>>item; for(int i=m;i>=item;--i) dp[i]=max(dp[i],dp[i-item]+item); } cout<<dp[m]<<endl; } return 0 阅读全文

posted @ 2011-07-07 12:26 sysu_mjc 阅读(148) 评论(0) 推荐(0) 编辑

上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 57 下一页

导航