博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 822C Hacker, pack your bags!
阅读量:4553 次
发布时间:2019-06-08

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

题意

给出一些闭区间(始末+代价),选取两段不重合区间使长度之和恰为x且代价最低

思路

相同持续时间的放在一个vector中,内部再对起始时间排序,从后向前扫获取对应起始时间的最优代价,存在minn中,对时间 i 从前向后扫,在对应的k-i中二分找第一个不重合的区间,其对应的minn加上 i 的cost即为出发时间为 i 时的最优解

代码

#include
using namespace std;int n, k;struct EVE{ int st,ed,val; EVE(){ } EVE(int a,int b, int c){ st = a, ed = b, val = c; }};int f,t,c;vector
v[200200];vector
minn[200200];int tmp[200200];bool cmp(EVE a, EVE b){ return a.st
= k) continue; v[t-f+1].push_back({f,t,c}); } for(int i = 1;i<=k;i++) sort(v[i].begin(),v[i].end(),cmp); for(int i = 1;i<=k;i++){ for(int j = v[i].size()-1;j>=0;j--){ if(j==v[i].size()-1) tmp[j]=v[i][j].val; else tmp[j]=min(v[i][j].val,tmp[j+1]); } for(int j = 0;j
>1; while(le
>1; if(v[k-i][mid].st<=ed) le = mid+1; else ri = mid; } ans = min(ans, cost+minn[k-i][le]); } } if(ans == 1e12) printf("-1"); else printf("%I64d",ans); return 0;}

 

转载于:https://www.cnblogs.com/Invisible-full-moon/p/7580618.html

你可能感兴趣的文章
20180923-WebService
查看>>
z变换
查看>>
Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数
查看>>
Spring基础2
查看>>
【灵异短篇】这个夜晚有点凉
查看>>
一点小问题
查看>>
pytest 10 skip跳过测试用例
查看>>
MVC身份验证及权限管理
查看>>
It was not possible to find any compatible framework version
查看>>
gulp与webpack的区别
查看>>
offset--BUG
查看>>
CSS选择器
查看>>
POJ_3667 线段树+lazy (线段树经典题)
查看>>
Android获取图片资源的4种方式
查看>>
找工作---操作系统常考知识点总结【PB】
查看>>
解决ionic <ion-nav> rootParams获取不到参数
查看>>
Python学习02 列表 List
查看>>
[DOM Event Learning] Section 3 jQuery事件处理基础 on(), off()和one()方法使用
查看>>
python爬虫-淘宝商品密码(图文教程附源码)
查看>>
centos6.3下如何搭建LAMP环境
查看>>