Codeforces Round #433(Div. 2) D. Jury Meeting(贪心)
题目链接:Codeforces Round #433(Div. 2) D. Jury Meeting
题意:
有n个城市,每个城市有一个人,现在要让这些人来0号城市在一起k天,然后回去。
现在有m个日程表,每个日程表有出发时间,出发城市,到达城市(出发城市和到达城市其中一个为0),价钱。
现在让你安排一个日程,使得用的总的钱最少。
题解:
对于每个城市的日程表去组合显然复杂度太大。
考虑双指针的思想。在一起k天,就相当于要对每个城市找一个左端点和右端点,构成一条线段,然后n个城市构成n条线段,使得这n条线段的重叠部分大于等于k。
那么我们考虑枚举每个k的起点L,显然在L左边,每个城市都要有左端点才行,对于每个城市如果有多个左端点,显然取最便宜的那个。
右端点同理。
然后就可以先预处理出:截止第i天,n个城市的人全部到达0号城市的最小花费,和全部回去的最小花费。
然后扫一遍更新一下答案就行了。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 typedef long long ll; 5 6 const int N=1e5+7; 7 const ll inf=1ll<<61; 8 int n,m,k; 9 ll dp[N*10][2],val[N]; 10 struct Node 11 { 12 int day,op,aim,cost; 13 Node(int a=0,int b=0,int c=0,int d=0):day(a),op(b),aim(c),cost(d){} 14 bool operator<(const Node &B)const{return day<B.day;} 15 }a[N]; 16 17 int main(){ 18 scanf("%d%d%d",&n,&m,&k); 19 F(i,1,m) 20 { 21 int aa,b,c,d; 22 scanf("%d%d%d%d",&aa,&b,&c,&d); 23 if(c==0)a[i]=Node(aa,0,b,d); 24 else a[i]=Node(aa,1,c,d); 25 } 26 sort(a+1,a+1+m); 27 F(i,1,n)val[i]=inf; 28 int ed=1,cnt=0;ll sum=0; 29 F(i,1,1000000) 30 { 31 while(ed<=m&&i>=a[ed].day) 32 { 33 if(a[ed].op){ed++;continue;} 34 if(val[a[ed].aim]==inf) 35 { 36 cnt++,val[a[ed].aim]=a[ed].cost; 37 sum+=a[ed].cost; 38 } 39 else if(val[a[ed].aim]>a[ed].cost) 40 { 41 sum+=a[ed].cost-val[a[ed].aim]; 42 val[a[ed].aim]=a[ed].cost; 43 } 44 ed++; 45 } 46 if(cnt==n)dp[i][0]=sum; 47 else dp[i][0]=inf; 48 } 49 ed=m,cnt=0,sum=0; 50 F(i,1,n)val[i]=inf; 51 for(int i=1000000;i>=1;i--) 52 { 53 while(ed>=1&&i<=a[ed].day) 54 { 55 if(!a[ed].op){ed--;continue;} 56 if(val[a[ed].aim]==inf) 57 { 58 cnt++,val[a[ed].aim]=a[ed].cost; 59 sum+=a[ed].cost; 60 } 61 else if(val[a[ed].aim]>a[ed].cost) 62 { 63 sum+=a[ed].cost-val[a[ed].aim]; 64 val[a[ed].aim]=a[ed].cost; 65 } 66 ed--; 67 } 68 if(cnt==n)dp[i][1]=sum; 69 else dp[i][1]=inf; 70 } 71 ll ans=inf; 72 F(i,1,1000000) 73 { 74 if(i+k+1>1000000)continue; 75 ans=min(ans,dp[i][0]+dp[i+k+1][1]); 76 } 77 printf("%lld\n",ans==inf?-1:ans); 78 return 0; 79 }
View Code
转载于:https://www.cnblogs.com/bin-gege/p/7489125.html
Codeforces Round #433(Div. 2) D. Jury Meeting(贪心)相关推荐
- Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)
A. Fraction 题目链接:http://codeforces.com/contest/854/problem/A 题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足 ...
- Codeforces Round #180 (Div. 2) A. Snow Footprints 贪心
A. Snow Footprints 题目连接: http://www.codeforces.com/contest/298/problem/A Description There is a stra ...
- Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)
F. Strange Housing 题意 有 nnn 个点和 mmm 条边,对点进行染色.要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通.请给出一种染色方案. 题解 暴力贪心即 ...
- Codeforces Round #382 (Div. 2)C. Tennis Championship(贪心) D.巴赫猜想
C: 题意:每个人输了比赛就会被淘汰,每两个人可以打比赛的要求是a赢过x场比赛b赢过y场比赛则当abs(x - y) <= 1 时他们可以进行比赛,总共n个选手,问最终的赢家可能赢过的场次的最大 ...
- Codeforces Round #683 (Div. 2) C. Knapsack(贪心)
题目链接:https://codeforc.es/contest/1447/problem/C You have a knapsack with the capacity of W. There ar ...
- Codeforces Round #277 (Div. 2) C. Palindrome Transformations 贪心
思路:只需处理字符串的一半,即:根据右半段来修改左半段.因为同时修改对称的两个字符,所需的操作数与修改一个字符是相等的.为了使操作数最小,应该按顺序来修改. 由于对称性,可将pos > mid的 ...
- Codeforces Round #523 (Div. 2)B. Views Matter(贪心)
传送门 题意:有一堆块,第i块的高度是ai,有一个从上面看到的俯视图,有一个从右面看到的侧视图,现在问从原来的堆中至多取出多少个块保持俯视图和侧视图不变,有两个规定是这样的,第一个就是物块不受重力影响 ...
- Codeforces Round #604 (Div.2)
Codeforces Round #604 (Div.2) 2019/12/5 22:35--2019/12/6 00:35 Codeforces Round #604 (Div.2) A. Beau ...
最新文章
- OpenLDAP自定义属性的启用
- springboot开启jms服务监控jvm运行情况
- sql 取汉字首字母
- 和朱晔一起复习Java并发(五):并发容器和同步器
- 如何让pm2支持es6
- 程序员的浪漫:教你如何用MATLAB向女生表白
- HDOJ--2035--人见人爱A^B
- ajax 跨域 java_java+jQueryd的ajax跨域方法
- ubuntu13.10 归档管理器解压zip文件中文乱码问题的解决(亲测成功)
- php可视化网页制作软件,PHPRunner(PHP网页制作)官方版
- 4万字长篇,详解平安集团全生态布局及大数据业务应用研究
- 拉格朗日插值公式与mathematica程序实现
- (PhotoShop)如何用PS给证件照换底色(目前换底最成功的一个教程)
- 物联网终端有哪些应用
- SAP用户研讨会嘉宾发言稿——SAP中国产品技术平台咨询经理丁晓枫
- 阿里云-云开发平台存储篇——给应用接上后端存储能力
- Lsky Pro+云服务器搭建私人图床
- 看片显示服务器不稳定,无限“看片”,资源随便下,这回爽了!
- 超分辨率(SRCNN)练习
- 部署 Office Web Apps(2)