BZOJ4444 SCOI2015国旗计划 根据性质优化贪心
来源:互联网 发布:java音乐网站系统 编辑:程序博客网 时间:2024/06/08 17:56
题目大意
现在给定一个大小为
解题思路
首先最直观的思路就是把环拆开变成一条链,我们发现我们当起点确定是我们只需贪心的一直往能覆盖到的最有的地方覆盖就可以得到最小的答案。我们可以先离散化位置,然后设
其实这
程序
//YxuanwKeith#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 2e5 + 5;struct Node { int Num, Bel, Ord; Node(int num, int bel, int ord) {Num = num, Bel = bel, Ord = ord;} Node() {}};Node Sort[MAXN * 2];int N, M, Num, Least, top, L[MAXN], R[MAXN], F[MAXN * 4], Ans[MAXN * 4];int tot, Last[MAXN * 4], Go[MAXN * 4], Next[MAXN * 4], D[MAXN * 4]; void Max(int &Now, int Comp) { if (Comp > Now) Now = Comp;}bool Cmp(Node A, Node B) { return A.Num < B.Num;}void Link(int u, int v) { Next[++ tot] = Last[u], Last[u] = tot, Go[tot] = v;}void Prepare() { sort(Sort + 1, Sort + 1 + N * 2, Cmp); for (int i = 1; i <= N * 2; i ++) { if (Sort[i].Num != Sort[i - 1].Num) ++ Num; if (Sort[i].Ord == 0) L[Sort[i].Bel] = Num; else R[Sort[i].Bel] = Num; } for (int i = 1; i <= N; i ++) { if (L[i] < R[i]) { Max(F[L[i]], R[i]); Max(F[L[i] + Num], R[i] + Num); } else { Max(F[1], R[i]); Max(F[L[i]], R[i] + Num); Max(F[L[i] + Num], Num + Num); } } for (int i = 1; i <= Num + Num; i ++) Max(F[i], F[i - 1]); for (int i = 1; i <= Num; i = F[i]) Least ++; Least -= 1; for (int i = 1; i < 2 * Num; i ++) Link(F[i], i);}void Dfs(int Now) { D[++ top] = Now; if (Now <= Num) for (int i = Least; ; i ++) if (D[top - i] >= Now + Num) { Ans[Now] = i; break; } for (int p = Last[Now]; p; p = Next[p]) Dfs(Go[p]); top --;}void Solve() { Dfs(Num + Num); for (int i = 1; i <= N; i ++) printf("%d ", Ans[L[i]]);}int main() { scanf("%d%d", &N, &M); int Cnt = 0; for (int i = 1; i <= N; i ++) { scanf("%d%d", &L[i], &R[i]); Sort[++ Cnt] = Node(L[i], i, 0); Sort[++ Cnt] = Node(R[i], i, 1); } Prepare(); Solve();}
1 0
- BZOJ4444 SCOI2015国旗计划 根据性质优化贪心
- scoi2015 bzoj4444 国旗计划
- BZOJ4444: [Scoi2015]国旗计划 解题报告
- 4444: [Scoi2015]国旗计划|贪心|倍增
- 4444: [Scoi2015]国旗计划
- 4444: [Scoi2015]国旗计划
- 4444: [Scoi2015]国旗计划
- bzoj 4444: [Scoi2015]国旗计划
- BZOJ 4444 [Scoi2015]国旗计划
- BOZJ 4444([Scoi2015]国旗计划-区间问题)
- bzoj 4444: [Scoi2015]国旗计划 递推
- 根据查询计划优化查询语句
- 根据查询计划优化查询语句
- uva live 6190 Beautiful Spacing (二分+dp检验 根据特有性质优化)
- 凸优化性质的证明
- 第六章——根据执行计划优化性能(3)——键值查找
- [SCOI2015][吐槽]******SCOI2015
- Hadoop-impala十大优化之(4)—根据执行计划进行性能优化及最佳实践
- poj1236——Network of Schools(强连通分量+缩点)
- github项目提交失败 master -> master (non-fast-forward)
- java多线程CountDownLatch用法
- 进阶项目8.3-学生成绩系统
- C# 静态类和静态函数
- BZOJ4444 SCOI2015国旗计划 根据性质优化贪心
- 窗口和消息
- 初识Akka之Router
- VirtualApp框架--- Application启动过程
- es6-特性整理
- java-基础-类与继承
- Android 4.2 API 变更
- C#控制台 foreach处理二维数组
- 告诉你Hadoop是什么