上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: 裸的KM吧。 1 #include 2 #include 3 #include 4 #include 5 #define maxn 105 6 #define INF 1 G[maxn]; 11 int W[maxn][maxn],n; 12 int Lx[maxn],Ly[maxn]; 13 int left[maxn]; 14 bool S[maxn],T[maxn]; 15 16 void init(int n) 17 { 18 this->n = n; 19 for(int i = 0... 阅读全文
posted @ 2013-11-05 14:49 浙西贫农 阅读(216) 评论(0) 推荐(0)
摘要: 敲完此题我在想,或许我的智商不适合再搞下去了。。题意:有一组OX序列(长度 2 #include 3 using namespace std; 4 5 int main() 6 { 7 double ans = 0.0,pre = 0.0,now; 8 int n; 9 cin>>n;10 while(n--){11 cin>>now;12 pre *= now;13 ans += 2*pre+now;14 pre += now;15 }16 cout<<fixed<<setpr... 阅读全文
posted @ 2013-11-05 10:52 浙西贫农 阅读(432) 评论(1) 推荐(0)
摘要: 题意:给出一张有n个点m条边带权的无向图,要你找出若干个回路并且使得所有的点都在某个哈密顿回路上,且所有的点只能出现在一个哈密顿回路中,求由n条边组成的若干回路的最小权值。跟HDU 3488基本一样,只不过把有向图改成了无向图。#include #include #include #include #define maxn 2010#define maxm 410000#define INF 1 Q; for(int i = 0;i 0 && d[u] + cost[i] < d[v[i]]){ d[v[i]] = d[u] + cost[... 阅读全文
posted @ 2013-11-04 19:52 浙西贫农 阅读(191) 评论(0) 推荐(0)
摘要: 题意:给出一张有n个点m条边带权的有向图,要你找出若干个回路并且使得所有的点都在某个回路上,且所有的点只能出现在一个回路中,求由n条边组成的若干回路的最小权值。所有点只能出现在一个回路中,因此,所有的点都对应唯一的前驱或后继,因此这就是一个匹配问题。如果有边(u->v),边权为w,那它就对应二分图中的一条边(u,v',w),直接这样建图跑KM就可以了。当然,用这种写法的费用流会比较慢。 1 #include 2 #include 3 #include 4 #include 5 #define maxn 410 6 #define maxm 70000 7 #define INF 阅读全文
posted @ 2013-11-04 19:19 浙西贫农 阅读(151) 评论(0) 推荐(0)
摘要: 题意:挖金矿。一个矿有n层,每层有m块金子。要挖每块金子都有一个代价cost,每块金子都有一个价值cost,另外每块金子还有w个关系,表示如果要挖它,必须先挖掉第i层的第j块金子,求最大获利。最大闭合子图。 1 #include 2 #include 3 #include 4 #define maxn 3010 5 #define maxm 400000 6 using namespace std; 7 typedef long long LL; 8 const LL INF = 1LL 0) add_edge(S,pos,value),sum += value;78 ... 阅读全文
posted @ 2013-11-03 21:58 浙西贫农 阅读(198) 评论(0) 推荐(0)
摘要: 题意:有n个城市。现在需要在这些城市上修一些通信的基站,在每个城市上修一个基站都需要花费一定的费用。另外给出m个组合(a,b,c),表示如果第a个城市和第b个城市都修起了基站,那么公司可以获利c。但公司并不需要在每个城市都修基站,他们只希望自己能够获得最大的利益。问最大利益。裸的最大闭合子图吧。只要知道这个模型就是水题。 1 #include 2 #include 3 #include 4 #include 5 #define INF 1<<30 6 #define maxn 55010 7 #define maxm 400000 8 using namespace std; 9 阅读全文
posted @ 2013-11-01 22:07 浙西贫农 阅读(284) 评论(0) 推荐(0)
摘要: 题意:给出两个数n,m,求n到m之间所有数字的所有数位上的数的和。好久不做这类题思路总是很凌乱。具体看代码吧。 1 #include 2 typedef long long LL; 3 LL dp(LL x){ 4 LL ret = 0; 5 LL p[11]; 6 p[0] = 1; 7 for(int i = 1;i = 0;pos--){16 for(int j = 0;j < idx[pos];j++){17 ret += (sum+j) * p[pos];18 if(pos) ret +... 阅读全文
posted @ 2013-11-01 22:03 浙西贫农 阅读(217) 评论(0) 推荐(0)
摘要: 题意:给出一张n个点m条边的有向图。现在编号为1的城市想进攻编号为n的城市。n为了防御1的进攻,需要破坏一些道路使得1到n不连通,而破坏每条路都有一个代价,题目会告诉你。现在编号为1的城市想要让编号为n的城市花费尽量多的代价来破坏道路使得1到n不连通,因此他们可以在2-n中的任意城市间修一条无坚不摧的桥(这条桥既可以是原来存在的也可以是原来不存在的),问n花费的最大代价。本来想先求一遍最小割,然后还原网络,把所有的割边的容量设为inf,求一遍最大流这样得到结果的。但是存在1到n不连通的情况,因此就不能求出最小割了。所以用到了一个更加暴力的方法。先求一遍最大流,得到maxflow,这是如果没有修 阅读全文
posted @ 2013-11-01 18:38 浙西贫农 阅读(301) 评论(0) 推荐(0)
摘要: 题意:问有多少个N(N 2 #include 3 typedef long long LL; 4 LL dp[70][70][101]; 5 LL pow_mod(LL a,LL p,LL n){ 6 if(p == 0) return 1; 7 LL ans = pow_mod(a,p/2,n); 8 ans = ans * ans % n; 9 if(p%2 == 1) ans = ans * a % n;10 return ans;11 }12 13 int main(){14 int nkase;15 scanf("%d... 阅读全文
posted @ 2013-10-31 21:31 浙西贫农 阅读(687) 评论(0) 推荐(0)
摘要: 题意:给出一张有n个点的图,有的边又向,有的边无向,现在要你破坏一些路,使得从点0无法到达点n-1。破坏每条路都有一个代价。求在代价最小的前提下,最少需要破坏多少条道路。(就是说求在最小割的前提下,最小的割边数)这题做了长姿势了。偏移量的方法没有想到。如果采用偏移量的方法的话,把每条边的边权w设为w'=w*MOD+1,然后求最小割,那么maxflow%MOD就是答案了。前提是MOD足够大。另外一种方法,利用一个结论:最小割边一定满流,满流的未必是最小割边。假设所有满流的边都是最小割边,把它们的cap全部设为1,其余未满流的边的cap设为inf,然后求最小割,答案就是最小割值。虽然没搞懂 阅读全文
posted @ 2013-10-31 21:22 浙西贫农 阅读(209) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页