
寒假集训
The_Dawn_Star
这个作者很懒,什么都没留下…
展开
-
寒假集训 1007
思路题意是给你n个人的捐钱区间[a,b],叫你设定一个值x,如果x < a,则那个人会捐a元,如果x在[a,b]内,会捐x元,否则如果x > b,就不捐。 现在求一个x使得捐钱总数最大。当x逐渐增大时,可以发现总数减小的时刻仅为b[i],即b[i]为总数的极值点。 所以把a[i],b[i]增序排好, 然后历遍b[i],对于每个b[i],用二分查找找出a[i]中第一个比它大的元素下标p,那么对于原创 2016-02-18 16:15:23 · 385 阅读 · 0 评论 -
寒假集训 1004【最小支配集】
题目因为要求保密就不放出来了。思路就是求最小支配集。 逆向递归贪心算法。 按逆递归的方向来,若当前节点不在支配集内,也不和支配集相连,且它的父节点不在支配集内,就把它的父节点放到支配集里面去。 这题一开始我把vis放到下面去了 像这样:void dfs(int u, int from){ bool flag=0; for(int i=head[u] ; ~i ; i原创 2016-01-26 20:49:50 · 608 阅读 · 0 评论 -
寒假集训 1005
思路题意是从点1走到点n,m条边,每条边有个耗时d和等级s,问使得总耗时 < t的走法中,所有边的s最大值的最小值是多少,并给出当前s下的最小耗时。历遍所有s,对每个s限制下用dijkstra求一次最短路,判断是否 < t,取符合条件的最小s即可。 但这样复杂度是 m×n2m\times n^2, 会超时。 所以用二分查找对历遍s的过程进行优化,将所有的s排好序,用二分查找的方法,每次只对中间的原创 2016-02-12 23:08:43 · 394 阅读 · 0 评论