
POJ训练纪实
记录一个菜鸟ACMer的POJ训练之路
Tczxw
这个作者很懒,什么都没留下…
展开
-
POJ 3680 最小费用最大流
题意:给定n个带权开区间,选择其中一些使得权值最大并且区间重叠层数不超过k。 题解:最小费用流,区间有两百个,可以用左边的点发出一条到右边的点的边,容量为1,费用为负的权值。然后从左往右将依次将相邻的两个点都连起来,权值为0,容量为k,也就是说,如果选了这个区间,就会从费用为负数的边流过去,否则,就是从这个费用为0的边流过去。然后建立一个虚拟源点与最左边的点相连,权值为0,容量为k,这样原创 2016-04-27 22:28:25 · 563 阅读 · 0 评论 -
POJ 1753 搜索
#include bool mp[6][6]; int cnt; bool cmp() { for (int i = 1; i <= 4; i++) for (int j = 1; j <= 4; j++) if (mp[i][j] != mp[1][1]) return 0; return 1; } void flip(int x, int y) { mp[x][y]原创 2016-05-02 19:56:47 · 414 阅读 · 0 评论 -
POJ 3164 最小树形图
#include #include #include #include using namespace std; const int maxn = 1E2 + 10; const int INF = 1 << 30; struct Edge { int u, v; double w; }; Edge edge[maxn * maxn]; struct Node { double x,原创 2016-05-02 22:37:16 · 423 阅读 · 0 评论 -
POJ 2773 容斥与二分
#include #include const int maxn = 1E6 + 10; int p[maxn], cnt, m, k; void init() { cnt = 0; for (int i = 2; i * i <= m; i++) if (m % i == 0) { p[cnt++] = i; while (m % i == 0) {m /= i;}原创 2016-05-10 15:55:26 · 443 阅读 · 0 评论 -
POJ 1222 高斯消元法解开关问题
#include #include #include const int maxn = 30; int inp[maxn + 5][maxn + 5], kase, T; void gauss() { for (int i = 0; i < maxn; i++) { int k = i; while (k < maxn && !inp[k][i])k++; for (int原创 2016-05-10 21:30:30 · 938 阅读 · 0 评论