[codeforces/edu3]总结

链接:http://codeforces.com/contest/609

A题:

  贪心,从大到小选。

B题:

  考虑对立面。$C_{sum}^2-\sum{C_{a_i}^2}$

C题:

  最终状态是确定的,从小到大贪心。不够就补,多了就挪。

D题:

  二分时间,对于一个给定时间段,对于每种货币都选这段时间内最便宜的那天买。而对于两种货币的商品,都选其内部最便宜的一些去买,总共要买k本,枚举买多少本美元的,剩下的就要买英镑的了。

E题:

  首先找出原始的最小生成树。那么对于每条边来说,如果这条边本来就在上面,结果就是最小生成树的权值。如果不在,那么加上它必然会生成一个环,去掉这个环上权值最大的那条边就可以了。至于怎么找最大的,可以用倍增的方式。

F题:

  数据结构题。

  把青蛙按坐标从左到右排序。维护一棵线段树(区间最大值),每个位置表示这只青蛙最远能够到右边的哪里。

  来了一个蚊子,怎么判断被谁吃。可以用二分先找到有哪些青蛙可以吃它。然后在这段区间里用线段树二分,找到最左边的可以吃它的那只青蛙。

  如果不能被吃,就先把这只蚊子存进一个multiset里。以后每有一只青蛙被更新,就在set里看有哪些可以吃掉。

  要注意在线段树中查询的时候,要保证左端点小于等于右端点,否则会死循环。

posted @ 2017-11-09 09:49  ACMsong  阅读(194)  评论(0编辑  收藏  举报