sdut 2168 Mathmen 贪心
来源:互联网 发布:千牛卖家第三方软件 编辑:程序博客网 时间:2024/06/05 05:08
题意:
给你n个点代表n个不同的城市,m种交通工具,每种交通工具有不同的消耗和行驶距离。从一个城市到另一个城市只能用一个交通工具
问从1到n是否存在最优的走法,即消耗最小
分析:
1到n就是有n-1段路,对于每段路肯定是选取满足行驶距离大于该段路中的交通工具中消耗最小的那个
用优先队列搞搞就ok
ACcode:
#include <bits/stdc++.h>#define ll long long#define maxn 100005using namespace std;struct N{ int dis; int q; void init(){scanf("%d%d",&dis,&q);} bool operator <(const N &tmp)const{ return q>tmp.q; }}my[maxn];bool cmp(N a,N b){ if(a.dis==b.dis)return a.q<b.q; return a.dis>b.dis;}int dis[maxn];int main(){ int loop,n,m; scanf("%d",&loop); while(loop--){ scanf("%d%d",&n,&m); for(int i=0;i<n;++i)scanf("%d",&dis[i]); for(int i=0;i<n-1;++i)dis[i]=dis[i+1]-dis[i]; for(int i=0;i<m;++i)my[i].init(); sort(dis,dis+n-1); sort(my,my+m,cmp); if(dis[n-2]>my[0].dis)puts("Impossible"); else{ ll ans=0; priority_queue<N>q; int k=0; for(int i=n-2;i>=0;--i){ while(dis[i]<=my[k].dis&&k<m) q.push(my[k++]); ans+=q.top().q; } cout<<ans<<'\12'; } } return 0;}
0 0
- sdut 2168 Mathmen 贪心
- SDUT 2168 Mathmen(贪心)
- sdut2168--Mathmen(贪心)
- Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)
- SDUT 2165 Crack Mathmen(快速幂)山东省第二届ACM大学生程序设计竞赛
- SDUT 3923 打字 (贪心)
- [SDUT](2052)装船问题 ---贪心
- SDUT 贪心法 活动选择
- SDUT 贪心 活动选择问题
- SDUT:2408 Pick apples(贪心+完全背包)
- SDUT 3222 Free Goodies(贪心+dp)
- 贪心法 2073--> 活动选择问题 SDUT
- [SDUT](2074)区间覆盖问题 ---贪心
- [SDUT](2072)删数问题 ---贪心
- [SDUT](2073)活动选择问题 ---贪心
- [SDUT](2851)懒虫小鑫 ---贪心
- SDUT 贪心算法 删数问题
- SDUT 2408 Pick apples 贪心+背包(大容量背包)
- Java 数据结构和经典算法经验总结
- 微服务可靠性设计
- 【NGUI】各个组件的应用与数值获取
- post和get请求
- 莫名原因的报错
- sdut 2168 Mathmen 贪心
- java-枚举
- cxf-spring-pratice-service
- 一次SSIS Package的调试经历
- centos 安装node环境
- 关于选择参加人员的返回代码以及工作汇报的sql
- ubuntu如何安装GTK+?
- jquery点击图片放大与缩小
- bootstrap 图片设计,折叠菜单,选项卡