上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 57 下一页

2011年8月22日

0-1背包之二

摘要: #include<iostream> //POJ 3211 Washing Clothes#include<map>#include<vector>#include<string>using namespace std;int main(){ int m,n,p,s[12],dp[200000],sum; //因为不必记录路径,所以dp数组用一维的就行 int i,j,k; string color; while(cin>>m>>n&&m&&n) { map<string ,int&g 阅读全文

posted @ 2011-08-22 11:43 sysu_mjc 阅读(130) 评论(0) 推荐(0) 编辑

0-1背包之三

摘要: #include <iostream> //sicily 1146 采药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... 阅读全文

posted @ 2011-08-22 11:43 sysu_mjc 阅读(81) 评论(0) 推荐(0) 编辑

0-1背包之一

摘要: #include <iostream> #include<iomanip> using namespace std;const int max_n=100,max_w=10000; int m[max_n][max_w],v[max_n],w[max_n],x[max_n]; //m[i][j]是背包容量为j,可选择物品为i,i+1,…,n时的最优值,即装入背包物品的总价值最大 x[]记录选择哪个物品int c,n,i,j;void init(){ cout<<"请输入物品个数和背包容量:"; cin>>n>>c; 阅读全文

posted @ 2011-08-22 11:42 sysu_mjc 阅读(138) 评论(0) 推荐(0) 编辑

拓扑排序之六

摘要: //poj 1270 Following Orders//给出一个字母表和一些字母对(c1,c2)表示c1<c2//求出所有满足要求的排列,并按照字典序输出#include<iostream> //拓扑排序 + dfs#include<algorithm>#include<string>using namespace std;int data[30],side[30][30],vis[30],len,path[30],in[30];void topo(int r){ if(r==len) { for(int i=0;i<len;++i) ... 阅读全文

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

拓扑排序之五

摘要: //poj 3272 Cow Traffic//求出由入度为0的源点到汇点的所有路径中使用最频繁那条边总共使用的次数//f[i] 为入度为0的点到结点i的路径条数, g[i]为结点i到N的路径条数//枚举每个边(s为始点,t为终点),则所有边的f[s]*g[t]的最大值即为答案#include<iostream> //拓扑排序#include<deque>using namespace std;int n,m,table[5002][5002],side[50002][2];int f[5002],g[5002],in[5002],out[5002];deque< 阅读全文

posted @ 2011-08-22 09:17 sysu_mjc 阅读(110) 评论(0) 推荐(0) 编辑

拓扑排序之四

摘要: //poj 3687 Labeling Balls#include <iostream> //逆拓扑排序,从重到轻逐一确定using namespace std;int topo[201][201],_in[201],ans[201];int main(){ int t,n,m,heavy,light; cin>>t; while(t--) { cin>>n>>m; memset(topo,0,sizeof(topo)); memset(_in,0,sizeof(_in)); while(m-... 阅读全文

posted @ 2011-08-22 09:16 sysu_mjc 阅读(134) 评论(0) 推荐(0) 编辑

拓扑排序之三

摘要: //poj 1094 Sorting It All Out#include<iostream> //拓扑排序using namespace std;int table[26][26],path[26],in[26],ans[26]; //in表示入度数int main(){ char ch[4]; int n,m,a,b,flag; while(cin>>n>>m&&n) { memset(table,0,sizeof(table)); memset(ans,0,sizeof(ans)); f... 阅读全文

posted @ 2011-08-22 09:15 sysu_mjc 阅读(99) 评论(0) 推荐(0) 编辑

拓扑排序之二

摘要: //sicily 1424. 奖金#include<iostream> //拓扑排序#include<vector>using namespace std;int n,m,a,b;int in[10002],path[10002],add[10002];vector<int> table[10002]; //如果是邻接矩阵则会超内存int main(){ cin>>n>>m; while(m--) { cin>>a>>b; table[b].push_back(a); //b->a, b指向a ... 阅读全文

posted @ 2011-08-22 09:14 sysu_mjc 阅读(93) 评论(0) 推荐(0) 编辑

拓扑排序之一

摘要: //拓扑排序:若G包含有向边(U,V),则在序列中U出现在V之前,即该序列使得图中所有有向边均从左指向右。//如果图是有回路的,就不存在这样的序列。//首先选择一个无前驱的顶点(即入度为0的顶点,图中至少应该有一个这样的顶点,否则肯定存在回路),//然后从图中移去该顶点以及由其发出的所有有向边,如果图中还存在无前驱的顶点,则重复上述操作,直到操作无法进行。//如果图不为空,说明图中存在回路,无法进行拓扑排序;否则移出的顶点的顺序就是对该图的一个拓扑排序。//poj 2367 Genealogical tree#include<iostream> //简单拓扑排序using nam. 阅读全文

posted @ 2011-08-22 09:12 sysu_mjc 阅读(147) 评论(0) 推荐(0) 编辑

2011年8月20日

poj 1306 Combinations

摘要: 递归#include<iostream>//递归usingnamespace std;__int64 ans[200][200];__int64 f(int n,int m){ if(ans[n][m]>0) return ans[n][m]; if(n==m||m==0) return1; ans[n][m]=f(n-1,m)+f(n-1,m-1); //C(n,m)=C(n-1,m)+C(n-1,m-1)return ans[n][m];}int main(){ int n,m; while(cin>>n>>m&&n)... 阅读全文

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

上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 57 下一页

导航