[BZOJ 2350] [Poi2011] Party 【Special】
2015-01-21 20:10
369 查看
题目链接: BZOJ - 2350
牺牲一些团内的点,每次让一个团内的点与一个不在团内的点抵消删除,最多牺牲 1/3 n 个团内的点,至少剩余一个 1/3 n 的团。
如果两个点之间没有边,那么至少有一个点在团外,删掉这两个点!
题目分析
因为存在一个 2/3 n 大小的团,所以不在这个团中的点最多 1/3 n 个。牺牲一些团内的点,每次让一个团内的点与一个不在团内的点抵消删除,最多牺牲 1/3 n 个团内的点,至少剩余一个 1/3 n 的团。
如果两个点之间没有边,那么至少有一个点在团外,删掉这两个点!
代码
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; const int MaxN = 3000 + 5; int n, m, Cnt; bool D[MaxN], Map[MaxN][MaxN]; int main() { scanf("%d%d", &n, &m); int a, b; memset(Map, 0, sizeof(Map)); for (int i = 1; i <= m; ++i) { scanf("%d%d", &a, &b); Map[a][b] = Map[b][a] = true; } memset(D, 0, sizeof(D)); for (int i = 1; i <= n; ++i) if (!D[i]) for (int j = 1; j <= n; ++j) if (j != i && !D[j] && !Map[i][j]) { D[i] = D[j] = true; break; } Cnt = 0; for (int i = 1; i <= n; ++i) { if (D[i]) continue; printf("%d", i); if (++Cnt == n / 3) { printf("\n"); break; } else printf(" "); } return 0; }
相关文章推荐
- BZOJ2530: [Poi2011]Party
- BZOJ2530 [Poi2011]Party 【贪心】
- 【BZOJ2530】[Poi2011]Party (xia)构造
- BZOJ2530 [Poi2011]Party
- [构造] BZOJ 2530 [Poi2011]Party
- bzoj 2530: [Poi2011]Party
- BZOJ 2530 Poi2011 Party 构造
- BZOJ 2530: [Poi2011]Party
- bzoj2530 [Poi2011]Party
- 【BZOJ】【P2530】【Poi2011】【Party】【题解】【水题】
- bzoj 2530: [Poi2011]Party
- BZOJ2530 : [Poi2011]Party
- [BZOJ2212][Poi2011]Tree Rotations(线段树合并)
- [BZOJ]2527 [POI2011] Meteors 整体二分
- bzoj 2276: [Poi2011]Temperature——单调队列
- bzoj 2216 [Poi2011]Lightning Conductor 决策单调性
- 【BZOJ2525】[Poi2011]Dynamite 二分+树形DP
- 【BZOJ2527】【POI2011】Meteors [整体二分]
- bzoj 2216: [Poi2011]Lightning Conductor【决策单调性dp+分治】
- [bzoj3702/2212][Poi2011]二叉树/Tree Rotations_线段树