业务办理
2017-08-20 15:03
106 查看
仔细分析,发现要使最大不满意度最小,排队顺序应该是按照最长等待时间来排。
如果不是这样,交换任意两个人的位置,那么这两个人等待时间的最大值一定比原来大。
所以这样排的正确性显然。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define LL long long #define M 100009 using namespace std; int n; LL ans,tot; struct H{int t,d;}per[M]; bool cmp(H x,H y) { if(x.d==y.d) return x.t<y.t; return x.d<y.d; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&per[i].t); for(int i=1;i<=n;i++) scanf("%d",&per[i].d); sort(per+1,per+n+1,cmp); for(int i=1;i<=n;i++) { tot+=per[i].t; ans=max(ans,tot-per[i].d); } printf("%lld",a 4000 ns); return 0; }
下面是暴力对拍程序
求一下全排列。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define LL long long #define M 100009 using namespace std; int n,num[M],d[M],t[M]; LL ans,tot,minn=1e18; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&t[i]); for(int i=1;i<=n;i++) scanf("%d",&d[i]); for(int i=1;i<=n;i++) num[i]=i; while(1) { tot=0;ans=0; for(int i=1;i<=n;i++) { tot+=t[num[i]]; ans=max(ans,tot-d[num[i]]); } minn=min(minn,ans); if(!next_permutation(num+1,num+n+1)) break; } printf("%lld",minn); }
相关文章推荐
- 利用工作流返回达到无限次重复办理业务的过程
- 清北学堂模拟day4 业务办理
- SQL性能突然降低引起的业务办理缓慢案例一则
- 思考mysql内核之初级系列3---办理业务的流程
- 思考mysql内核之初级系列3---办理业务的流程
- 浙江移动手机停机复机业务办理工具 最近做的
- 基于地图的工作流设计器,及基于地图的业务流程办理界面(二)
- 思考mysql内核之初级系列3---办理业务的流程(摘自老杨)
- 迅雷面试题: 模拟银行一天的工作, 统计vip客户和普通客户的办理业务的平均等待时间.
- 湖北联通常用业务办理和取消短信解决方法
- 新公司去国税办理发票业务
- 竞业禁止-股东大会决议解散公司,在形成解散决议但未办理注销手续之前公司董事另设一公司,擅自同公司经营同类业务
- noip模拟赛 业务办理
- 无行政地域公司(中字头)变更业务一站式办理
- 上海公积金社保业务办理
- 办理机动车驾驶人身份信息变化换证业务
- [PAT甲级]1017. Queueing at Bank (25)(银行办理业务平均等待时间)
- 统计管理人员的办理业务数量
- 未办理过业务被多收费 中移动屡遭客户投诉乱收费
- 模拟招商银行叫号业务办理流程