poj 3038
http://poj.org/problem?id=3038
这个题我是在一个关于并查集的博客中找到的,结果我就觉得这个应该是个贪心,真想不出这个与并查集有什么鬼关系,看discuss里面也都是贪心,我是不懂大神的想法,最后,我点开链接才发现那是杭电的3038.。。我也是醉了,然后一早上就搞了这一道题。贪心还是不怎么会。
题意:就是一个牛搞了一个航空公司,想让这个航空公司可以在一天来回运送最多的客人。求最多可以运送多少客人。
思路:discuss里面有个大神说的很简单,也很有道理。
1.碰到人,上车。
2.超载,最远的乘客下车。
3.行驶到下一站。
就这三句话,解决了这个题,可我还是有点懵,感觉思路还是不是很清晰。
最后看到了一个人的博客, 才最终懂了。
- #include <stdio.h>
- #include <string.h>
- #include <queue>
- #include <stdlib.h>
- #define maxn 50005
- using namespace std;
- int ans = ,c,exist[ maxn ];
- struct note{
- int x,y,c;
- }to[ maxn ],ba[ maxn ];
- int cmp(const void *a,const void *b) //排序
- {
- if((*(note *)a).x != (*(note * )b).x)
- return (*(note *)a).x - (*(note * )b).x;
- else
- return (*(note *)a).y - (*(note * )b).y;
- }
- void deal(note tmp[],int x)
- {
- priority_queue<int,vector<int>,greater<int> >small;
- priority_queue<int,vector<int>,less<int> >most;
- int people = ,i;
- memset( exist , , sizeof( exist ) );
- for( i = ; i < x ; i++ )
- {
- small.push(tmp[i].y);
- most.push(tmp[i].y);
- exist[tmp[i].y] += tmp[i].c;
- while(tmp[i].x>=small.top()) //有人到达了目的地,下车。
- {
- people -= exist[ small.top() ];
- exist[ small.top() ] = ;
- small.pop();
- }
- people += tmp[ i ].c; //上车。
- ans += tmp[ i ].c;
- if(people >c) //是否超载。
- {
- int t = people-c;
- ans -= t;
- people = c;
- while(t)
- {
- if( exist[ most.top() ] > t)
- {
- exist[ most.top() ] -= t;
- t = ;
- }
- else
- {
- t -= exist[ most.top() ];
- exist[ most.top() ] = ;
- most.pop();
- }
- }
- }
- }
- }
- int main()
- {
- //freopen("in.txt","r",stdin);
- int k,m,s,w,p,t = ,e = ;
- scanf("%d%d%d",&k,&m,&c);
- while( k-- )
- {
- scanf("%d%d%d",&s,&w,&p);
- if( s < w )
- {
- to[ t ].x = s;
- to[ t ].y = w;
- to[ t++ ].c = p;
- }
- else
- {
- ba[ e ].x = w;
- ba[ e ].y = s;
- ba[ e++ ].c = p;
- }
- }
- qsort( to , t , sizeof( to[ ] ) , cmp );
- deal( to , t );
- qsort( ba , e , sizeof( ba[ ] ) , cmp );
- deal( ba , e );
- printf("%d\n",ans);
- return ;
- }
poj 3038的更多相关文章
- Flying Right POJ - 3038
有一条从南到北的航线,航线上有N个机场1-n从南到北分布,每天早上飞机从1飞到n,傍晚从n飞到1.有k组乘客,他们数量为M[k],从S飞到E,飞机上只有C个座位,计算每天飞机最多能拉多少乘客 贪心可以 ...
- POJ 3038 贪心(multiset)
题意: 思路: 1. 贪心 我们考虑肯定是走最近的最合适 想象自己是一个黑一日游的司机: 1.如果有乘客要上车,那么就让他上,收钱! 2.如果超载了,把距目的地最远的几个乘客踢下去,退钱. 3.行驶到 ...
- 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733
1.POJ 1733 Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5744 Accepted: ...
- poj 并查集
http://poj.org/problem?id=1611 水题 题意:就是找一共有多少个人感染了,0是感染学生的编号. #include <stdio.h> #include < ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37427 Accepted: 16288 Descr ...
随机推荐
- DataGridView列的宽度、行的高度自动调整
注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...
- CSS让图片垂直居中的几种技巧
在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...
- JSP中ResultSet的方法
1,如何获得ResultSet的结构 ResultSetMetaData rsmd=rs.getMetaData();cn=rsmd.getColumnCount();for(int ik=1;ik& ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- 【分享】仿东软OA协同办公服务管理源码
功能列表: 1.个人办公管理: 内部邮件.消息管理.手机短信.公告通知.新闻管理.投票管理.个人考勤 日程安排:我的安排.下属安排 工作日志:我的日志.日志查询.日志设置 工作汇报:我的汇报.下属汇报 ...
- ORACLE 导入导出
数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp ...
- session过期返回登录页面跳出frame
session 过期返回登录页面 方法1, HttpSession session = request.getSession(); String LOGIN_ID = (String) session ...
- Asp.Net MVC<九>:OWIN,关于StartUp.cs
https://msdn.microsoft.com/zh-cn/magazine/dn451439.aspx(Katana 项目入门) 一不小心写了个WEB服务器 快刀斩乱麻之 Katana OWI ...
- 【bzoj1076】 SCOI2008—奖励关
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 (题目链接) 题意 一个奖励,K次抛出宝物的机会,每次抛出都等概率的抛出n个物品中的一个,每个 ...
- BZOJ4614 [Wf2016]Oil
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...