博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1645 [Usaco2007 Open]City Horizon 城市地平线
阅读量:4934 次
发布时间:2019-06-11

本文共 1549 字,大约阅读时间需要 5 分钟。

本来想打线段树的说。。。

就是把坐标离散化了,然后区间最大求和即可。。。

后来觉得有点烦的说(silver题就要线段树。。。),于是看了下usaco的题解,发现了个高端的东西:善用STL里的容器和迭代器就可以了。

以下就是高端程序:

 

1 /************************************************************** 2     Problem: 1645 3     User: rausen 4     Language: C++ 5     Result: Accepted 6     Time:264 ms 7     Memory:6120 kb 8 ****************************************************************/ 9  10 #include 
11 #include
12 #include
13 #include
14 #include
15 #include
16 17 using namespace std;18 typedef pair
PAIR;19 typedef long long ll;20 21 map
> M;22 map
> ::iterator now;23 vector
::iterator I;24 multiset
> S;25 ll ans;26 int n, L, R, H, K;27 28 inline int read(int &x){29 int sgn = 1; x = 0;30 char ch = getchar();31 while (ch < '0' || ch > '9'){32 if (ch == '-') sgn = -1;33 ch = getchar();34 }35 while (ch >= '0' && ch <= '9'){36 x = x * 10 + ch - '0';37 ch = getchar();38 }39 x *= sgn;40 }41 42 int main(){43 read(n);44 for (int i = 1; i <= n; ++i){45 read(L), read(R), read(H);46 M[L].push_back(make_pair(H, 1));47 M[R].push_back(make_pair(H, 0));48 }49 L = 0;50 for (now = M.begin(); now != M.end(); ++now){51 R = now -> first;52 if (!S.empty()) ans += (ll) (R - L) * (*S.begin());53 L = R;54 for (I = (now -> second).begin(); I != (now -> second).end(); ++I){55 K = I -> first;56 if (I -> second) S.insert(K);57 else S.erase(S.find(K));58 }59 }60 printf("%lld\n", ans);61 return 0;62 }
View Code

 (反正蒟蒻自己是不会写的。。。真是太神了!!!)

转载于:https://www.cnblogs.com/rausen/p/4040466.html

你可能感兴趣的文章
排序规则
查看>>
percent的用法
查看>>
中文词频统计
查看>>
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
html5特征检测
查看>>
js中几种实用的跨域方法原理详解
查看>>
打印图形
查看>>
《第一行代码》学习笔记7-活动Activity(5)
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
一位有着工匠精神的博主写的关于IEnumerable接口的详细解析
查看>>
MySQL中特有的函数If函数
查看>>
安装Python3.6.2报错:zipimport.ZipImportError: can't decompress data; zlib not available
查看>>
【蓝桥杯】入门训练 Fibonacci数列
查看>>
实验十 指针2
查看>>
常见HTTP状态码
查看>>
vim 空格和换行的删除和替换
查看>>
ionic 入门学习
查看>>
[python]pickle和cPickle
查看>>