模板
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#includeusing 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#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 · 447 阅读 · 0 评论 -
hdu 2031 进制转换
#include#includeusing 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#includeusing 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#includeusing 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 · 395 阅读 · 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 · 454 阅读 · 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 · 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个。最后取光者得胜#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 · 491 阅读 · 0 评论 -
poj 1067 博弈论
威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。判断一个点是不是必败点的公式与黄金分割有关,为:m(k) = k * (1 + sqrt(5))/2n(k) = m(k) + k至于为什么如此,我就不知道了,也没有查到,很好奇。#include #in原创 2013-05-16 15:51:08 · 488 阅读 · 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 · 557 阅读 · 0 评论 -
hdu 1102 prim简单
#include#include#include#includeusing 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#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 · 473 阅读 · 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 · 584 阅读 · 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 · 715 阅读 · 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 · 509 阅读 · 0 评论