BZOJ 3613 HEOI 2014 南园满地堆轻絮 二分+贪心
来源:互联网 发布:投行还是律所 知乎 编辑:程序博客网 时间:2024/05/17 05:05
题目大意
给出一个数字序列,要求将这个数字序列变成单调不降的序列。若原来的数字是A[i],变化之后的数字是B[i],那么花费是
思路
一眼就能看出是二分,然后贪心什么的随便yy一下就行了。
CODE
#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define MAX 50010using namespace std;#define LEFT (pos << 1)#define RIGHT (pos << 1|1)struct Cow{ int x,y,c; int st,ed; bool operator <(const Cow &a)const { return y > a.y; } void Read() { scanf("%d%d%d", &x, &y, &c); x *= -1; st = c * (x - 1); ed = st + (c << 1); }}src[MAX];int cows;pair<int,int *> xx[MAX << 1];int cnt,t;int tree[MAX << 4];inline void PushDown(int pos){ if(tree[pos]) { tree[LEFT] = tree[pos]; tree[RIGHT] = tree[pos]; tree[pos] = 0; }}void Modify(int l, int r, int x, int y, int c, int pos){ if(l == x && y == r) { tree[pos] = c; return ; } PushDown(pos); int mid = (l + r) >> 1; if(y <= mid) Modify(l, mid, x, y, c, LEFT); else if(x > mid) Modify(mid + 1, r, x, y, c, RIGHT); else { Modify(l, mid, x, mid, c, LEFT); Modify(mid + 1, r, mid + 1, y, c, RIGHT); }}inline int Ask(int l, int r, int x, int pos){ if(l == r) return tree[pos]; PushDown(pos); int mid = (l + r) >> 1; if(x <= mid) return Ask(l, mid, x, LEFT); return Ask(mid + 1, r, x, RIGHT);}bool v[MAX];int main(){ cin >> cows; for(int i = 1; i <= cows; ++i) src[i].Read(); sort(src + 1, src + cows + 1); for(int i = 1; i <= cows; ++i) { xx[++cnt] = make_pair(src[i].st, &src[i].st); xx[++cnt] = make_pair(src[i].ed, &src[i].ed); } sort(xx + 1, xx + cnt + 1); for(int i = 1; i <= cnt; ++i) { if(i == 1 || xx[i].first != xx[i - 1].first) ++t; *xx[i].second = t; } for(int i = 1; i <= cows; ++i) Modify(1, cnt, src[i].st, src[i].ed , i, 1); for(int i = 1; i <= cnt; ++i) v[Ask(1, cnt, i, 1)] = true; int ans = 0; for(int i = 1; i <= cows; ++i) ans += v[i]; cout << ans << endl; return 0;}
0 0
- BZOJ 3613 HEOI 2014 南园满地堆轻絮 二分+贪心
- bzoj 3613: [Heoi2014]南园满地堆轻絮 二分答案+贪心
- 【BZOJ 3613】 [Heoi2014]南园满地堆轻絮
- BZOJ 3613 [Heoi2014] 南园满地堆轻絮
- bzoj 3613: [Heoi2014]南园满地堆轻絮
- bzoj 3613: [Heoi2014]南园满地堆轻絮
- BZOJ 3613 Heoi2014 南园满地堆轻絮 二分答案/线性做法
- [BZOJ]3613: [Heoi2014]南园满地堆轻絮 乱搞+简要证明
- [BZOJ3613][Heoi2014]南园满地堆轻絮(贪心)
- [BZOJ3613][Heoi2014]南园满地堆轻絮(贪心)
- 【bzoj3613】[Heoi2014]南园满地堆轻絮 二分答案
- [bzoj 3611] [heoi 2014] 大工程
- BZOJ 4868 HEOI 期末考试
- BZOJ 3611 HEOI 2014 大工程 LCA单调性
- BZOJ 2744 [HEOI 2012] 二分图最大独立集 解题报告
- BZOJ 4556 [HEOI 2016] str
- BZOJ 4553 HEOI 2016 seq
- 【BZOJ3613】【Heoi2014】南园满地堆轻絮 构造
- HDU 5167 Fibonacci
- ios arc (四)将mrc代码转成arc
- hdu 2074 输出图形
- 黑马程序员-----Java语法基础(二)
- C++ Primer学习总结 第1-2章 变量和基本类型
- BZOJ 3613 HEOI 2014 南园满地堆轻絮 二分+贪心
- POJ 1837-Balance
- 今天工作遇到问题的解决方法及感悟
- Mangos系列教程(一):官方Mangos下载
- 【EXKMP】【2015-2】day13 T1
- vs2012 C# 调用 matlab R2014b 编译的dll
- Objective-C语言中的block
- xCAT安装Kit
- 3D塔防游戏实现 4.2 3D怪物连续刷新(Feekood语言)