模板
wingooom
程序猿一只
展开
-
hdu2757 广搜优先队列模板
#include #include #include #include #include #define inf 8000 using namespace std; int r,c; int rs,cs,re,ce; int step[1100][1100]; int map[1100][1100]; int dir[8][2]={-1,0,-1,1,0原创 2013-04-07 18:30:01 · 479 阅读 · 0 评论 -
poj 3041 最小点覆盖=最大匹配
详细讲解 http://blog.csdn.net/lyy289065406/article/details/6646007 #include #include #include #include using namespace std; int K,N; int visit[55000]; int tot; vector coll[55000];//原本开小runtime error了,原创 2013-05-09 19:56:49 · 445 阅读 · 0 评论 -
poj 1469 匈牙利最大匹配 模板
#include #include #include #include using 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 · 447 阅读 · 0 评论 -
hdu 2031 进制转换
#include #include using namespace std; string transform(int x,int y,string s){ string res=""; int sum=0; for(int i=0;i<s.length();++i){ if(s[i]=='-') continue; i原创 2013-05-09 15:40:21 · 440 阅读 · 0 评论 -
poj 1995 快速幂取模
#include #include using namespace std; long long pow_mod(long long a,long long i,long long n){ if(i==0) return 1%n; int tmp=pow_mod(a,i>>1,n); tmp=tmp*tmp%n; if(i&1) tmp=原创 2013-05-09 14:57:25 · 503 阅读 · 0 评论 -
poj 1061 扩展欧几里得
没弄明白什么扩展欧几里得,只是用来做模板的 #include #include using namespace std; long long k,t; long long extended_gcd(long long a,long long b) { if (b==0) { k=1; t=0; return a; } else { long lo原创 2013-05-09 13:50:31 · 394 阅读 · 0 评论 -
网络流
LLJ #include #include #include #include #include using 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 · 454 阅读 · 0 评论 -
hdu 1850 尼姆博弈
#include #include using namespace std; #define N 100+10 int 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 · 506 阅读 · 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 · 521 阅读 · 0 评论 -
hdu 1846 巴什博弈
巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个。最后取光者得胜 #include int 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 · 491 阅读 · 0 评论 -
poj 1067 博弈论
威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同 时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 判断一个点是不是必败点的公式与黄金分割有关,为: m(k) = k * (1 + sqrt(5))/2 n(k) = m(k) + k 至于为什么如此,我就不知道了,也没有查到,很好奇。 #include #in原创 2013-05-16 15:51:08 · 488 阅读 · 0 评论 -
poj 2395 Kruskal
#include #include #include #include #include #include #include #include using 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 · 557 阅读 · 0 评论 -
hdu 1102 prim简单
#include #include #include #include using namespace std; int map[110][110]; int N; bool s[110]; int ans; void prim(int u){ memset(s,0,sizeof(s)); s[u]=1; int lowcost[110]; for(int i=0;i<N;原创 2013-04-27 12:56:44 · 511 阅读 · 0 评论 -
poj 1742 coins 多重背包,只是用来标记可以组成多少个小于m的值
#include #include #include #include using 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 · 473 阅读 · 0 评论 -
hdu 2191 多重背包 三重循环 w[i]!=V[I];
#include #include #include #include using 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 · 584 阅读 · 0 评论 -
poj1276 简单多重背包压缩为01背包 模板题 适用于w[i]=v[i];
#include #include #include #include using 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 · 715 阅读 · 0 评论 -
poj 2524并查集 模板
#include #include #include #include using 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 · 509 阅读 · 0 评论