摘要: 一道简单的网络流;这是一道多源多汇的模型;解决的这样的模型的一个方法是:建立一个超级源和一个超级汇,然后就成为了一个模板题了!代码:#include#include#include#define inf 9999999999#define maxn 105using namespace std;int map[maxn][maxn],level[maxn],m,n;bool bfs(){ queueq; memset(level,0,sizeof level); q.push(0); level[0]=1; while(!q.empty()) { ... 阅读全文
posted @ 2013-09-12 20:35 Yours1103 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一道很水很水的题,比赛的时候没想清楚就乱下结论,导致我们本来可以出这题的没出;我认错,我保证以后不再出现这种情况!^ ^当初我一直没想清楚怎么处理前端0的,直到看到小珺的程序~~~看来我的逻辑能力还得加强!代码: 1 #include 2 #include 3 #define maxn 1000005 4 using namespace std; 5 int a[10],b[10],c[10][10]; 6 char s1[maxn],s2[maxn]; 7 8 int first() 9 {10 for(int k=9; k>=0; k--)11 for(int i... 阅读全文
posted @ 2013-09-12 19:34 Yours1103 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 最小覆盖圆的模板; 1 #include 2 #include 3 #include 4 struct Point 5 { 6 double x; 7 double y; 8 } pt[1005]; 9 struct Traingle 10 { 11 struct Point p[3]; 12 }; 13 struct Circle 14 { 15 struct Point center; 16 double r; 17 } ans; 18 //计算两点距离 19 double Dis(struct Point p, struct Po... 阅读全文
posted @ 2013-09-12 19:29 Yours1103 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 网络流之最大流的基础题;可以使用dinic算法和EK算法:分别对着模板敲了一遍:dinic: 1 #include 2 #include 3 #include 4 #include 5 #define maxn 205 6 #define inf 0xfffffff 7 using namespace std; 8 9 int map[maxn][maxn],level[maxn];10 int n,m;11 12 int bfs(int s)13 {14 memset(level,0,sizeof level);15 queueq;16 q.push(s);17 ... 阅读全文
posted @ 2013-09-12 14:28 Yours1103 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 比赛的时候这道题一直都没出来,承启提醒我之后还是一直WA;其实规律早就找到了````其实这题还可以用数位dp来做,不过从来没写过,以后再贴;代码: 1 #include 2 #define ll long long 3 using namespace std; 4 5 ll get(ll n) 6 { 7 int s=0; 8 ll i=n/10*10; 9 ll m=n,ans=0;10 for(;i>t;36 while(t--)37 {38 cin>>a>>b;39 a--;40 cout<... 阅读全文
posted @ 2013-09-11 21:34 Yours1103 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 二分图,简单的模板题,不过题目比较难懂;其中important chess就是删掉它不能够完美匹配,所以就枚举每一个可能删的棋子;代码: 1 #include 2 #include 3 int map[101][101],v[101]; 4 int match[101],n,m; 5 int dfs(int k) 6 { 7 int i; 8 for(i=0; i<m; i++) 9 {10 if(map[k][i]&&!v[i])11 {12 v[i]=1;13 if(match[i]... 阅读全文
posted @ 2013-09-11 20:05 Yours1103 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 二分图的水题,第一次写;基本上是参考的 = = !代码: 1 #include 2 #include 3 #include 4 #define maxn 2005 5 using namespace std; 6 7 vectorve[maxn]; 8 int match[maxn]; 9 bool v[maxn];10 11 int dfs(int x)12 {13 int l=ve[x].size();14 for(int i=0; i<l; i++)15 {16 int k=ve[x][i];17 if(!v[k])18 ... 阅读全文
posted @ 2013-09-10 17:34 Yours1103 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 刚刚看到这个题感觉挺复杂的~~~因为它还要输出字典序;很容易知道对于任意的k,第一个输出总是1 2 #include 3 using namespace std; 4 int a[1=n;i--) printf("%d",a[i]);33 puts("");34 }35 return 0;36 }View Code 阅读全文
posted @ 2013-09-10 16:10 Yours1103 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路,利用并查集来实现;代码:#include#include#includeusing namespace std;int a[30],f[30],b[30];bool vis[30];int find(int x){ return f[x]==-1?x:f[x]=find(f[x]);}void combine(int x,int y){ int n=find(x); int m=find(y); if(n!=m) f[n]=m;}bool oula(){ int st=-1; for(int i=0; iv; for(int i=0; i<2... 阅读全文
posted @ 2013-09-09 20:16 Yours1103 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路的题;主要利用的是并查集,为了节省时间,压缩了它的路径;代码: 1 #include 2 #include 3 #define maxn 100009 4 using namespace std; 5 6 int f[maxn],rank[maxn],du[maxn]; 7 bool vis[maxn],mark[maxn]; 8 9 void make_set(int x)10 {11 f[x]=x;12 rank[x]=0;13 }14 15 int find(int x)16 {17 int p=x,k;18 while(p!=f[p])19 ... 阅读全文
posted @ 2013-09-09 18:48 Yours1103 阅读(158) 评论(0) 推荐(0) 编辑