poj
wingooom
程序猿一只
展开
-
poj 2739 Sum of Consecutive Prime Numbers
#include#include#include#include#include#include#include#include#include#include#include#include#define maxn 100000using namespace std;int p[maxn];int q[maxn];int ans;int sn;void pr原创 2013-04-04 14:42:16 · 396 阅读 · 0 评论 -
poj 2395 Kruskal
#include #include #include #include #include #include #include#includeusing namespace std;int N,M;struct graph{ int u,v; int w;}p[10010];bool cmp(graph m,graph n){ return m.w<n.w;}原创 2013-05-02 14:33:05 · 567 阅读 · 0 评论 -
hdu 1846 巴什博弈
巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜#includeint main(){ int c,n,m; scanf("%d",&c); while(c--) { scanf("%d%d",&n,&m); if(n%(m+1)==0原创 2013-05-16 19:23:21 · 503 阅读 · 0 评论 -
poj 1067 博弈论
威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。判断一个点是不是必败点的公式与黄金分割有关,为:m(k) = k * (1 + sqrt(5))/2n(k) = m(k) + k至于为什么如此,我就不知道了,也没有查到,很好奇。#include #in原创 2013-05-16 15:51:08 · 497 阅读 · 0 评论 -
poj 2234 尼姆博弈
题意:有n堆石子,每人每次可以从一堆中拿走任意多个,两人轮流操作,谁无子可取谁输。输入n堆石子各自的数量,输出先手是否能赢。#include #include #include #include using namespace std;int main(){//freopen("t.txt", "r", stdin);int n;while (scanf("原创 2013-05-16 16:05:06 · 530 阅读 · 0 评论 -
hdu 1850 尼姆博弈
#include#includeusing namespace std;#define N 100+10int main(){ //freopen("game.in","r",stdin); freopen("game.out","w",stdout); int heapnum,heap[N]; while(scanf("%d",&heapnu原创 2013-05-16 16:16:30 · 522 阅读 · 0 评论 -
网络流
LLJ#include#include#include#include#includeusing namespace std;const int inf=1000000000;const int maxn=20000,maxm=500000;//最大点和边数struct Edge{int v,f,nxt;};int src,sink;int g[maxn+10];原创 2013-05-18 18:44:23 · 462 阅读 · 0 评论 -
poj 1469 匈牙利最大匹配 模板
#include#include#include#includeusing namespace std;int P,N;int visit[330];int tot;vector coll[110];int from[330];bool match(int x){ for(int i=0;i<coll[x].size();++i) if(!visit[coll[x]原创 2013-05-09 18:50:00 · 455 阅读 · 0 评论 -
poj 3041 最小点覆盖=最大匹配
详细讲解http://blog.csdn.net/lyy289065406/article/details/6646007#include#include#include#includeusing namespace std;int K,N;int visit[55000];int tot;vector coll[55000];//原本开小runtime error了,原创 2013-05-09 19:56:49 · 458 阅读 · 0 评论 -
01背包poj3628,w[i]=v[i]
#include#include#includeusing namespace std;int N,B;int w[50];int dp[20000007];int main(){ while(cin>>N>>B){ int sum=0; for(int i=0;i<N;i++){ cin>>w[i];原创 2013-04-14 10:21:24 · 436 阅读 · 0 评论 -
poj 1787 多重背包 记录路径
#include#include#include#define N 10100using namespace std;int dp[N];int used[N];int path[N];int num[30];int main(){ int b[10]; int P,c1,c2,c3,c4; int a[10]; while(scanf("%d",&P)!原创 2013-04-14 20:41:49 · 576 阅读 · 0 评论 -
poj 1006 hdu1370 Biorhythms
#include#include#include#include#include#define maxn 1000000using namespace std;int T;int main(){ int p,e,k,d; int ca=1; while(cin>>p>>e>>k>>d,p!=-1&&e!=-1&&k!=-1&&d!=-1){ i原创 2013-04-08 15:15:04 · 753 阅读 · 0 评论 -
POJ3280 Cheapest Palindrome
DP#include#include#include#include#include#include#include#include#include#include#include#include#define maxn 10000000using namespace std;int N,M;int dp[2010][2010];int cost[30];st原创 2013-04-08 22:16:21 · 454 阅读 · 0 评论 -
poj1163 简单的dp
深搜的超时版:虽然超时,但可以理解一下dfs的思路,觉得挺好的;#include#include#include#include#include#include#include#define maxn 1000000using namespace std;int map[110][110];int n;int dfs(int a,int b){ if(a==n原创 2013-04-08 18:57:52 · 485 阅读 · 0 评论 -
poj 1028 Ignatius and the Princess III 等于价值为M的有多少种情况
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[200];int main(){ int n; while(cin>>n){ memset(d原创 2013-04-11 15:11:00 · 634 阅读 · 0 评论 -
poj 1742 coins 多重背包,只是用来标记可以组成多少个小于m的值
#include#include#include#includeusing namespace std;int f[100009];int used[100009];int main(){ int n,m; int a[110]; int c[110]; while(cin>>n>>m,n+m){ for(int i=0;i<n;i+原创 2013-04-14 20:01:53 · 480 阅读 · 0 评论 -
poj 1014 多重背包压缩为01
#include#includeint dp[250000];int f[250];int max(int a,int b){ return a>b?a:b;}int main(){ int n[10]; int index=0; int t; while(1){ memset(dp,-1000000,sizeof(dp));原创 2013-04-14 20:08:03 · 472 阅读 · 0 评论 -
poj1276 简单多重背包压缩为01背包 模板题 适用于w[i]=v[i];
#include#include#include#includeusing namespace std;int dp[100010];int f[10010];int main(){ int M; int a[15]; int b[15]; while(cin>>M){ int n; cin>>n; for(i原创 2013-04-14 19:15:52 · 727 阅读 · 0 评论 -
hdu 2191 多重背包 三重循环 w[i]!=V[I];
#include#include#include#includeusing namespace std;int dp[40050];int main(){ int T; int w[110]; int v[110]; int c[110]; cin>>T; while(T--){ int n,m原创 2013-04-14 19:33:22 · 594 阅读 · 0 评论 -
poj 2524并查集 模板
#include#include#include#includeusing namespace std;int n,m;int father[50005],rank[50005];void Make(int n){ for(int i=1;i<n;i++) { father[i]=i; rank[i]=0; }}原创 2013-05-14 20:09:42 · 520 阅读 · 0 评论