#2017 Multi-University Training Contest 2 1003
来源:互联网 发布:单机服装销售软件 编辑:程序博客网 时间:2024/06/11 21:36
Maximum Sequence
题意: 两个数列 {a_ i }, {b_ i},要求{a_ n+1 ~ a_ 2n}的最大和。a_ i 需要满足:从{b_ i}中取出一个数 b_ k(每个元素仅使用一次);使之满足。
分析: 这道题可以看是做是一道 STL 的题目。使用 pair 建立 a_ i - i 与 i 的关系, 然后贪心取最小的 b_ i , 因为可以重复取{ a_ n}中的数,所以用优先队列来维护,保证每次取出来的 a_ i 都尽可能的大。
代码如下:
#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;typedef long long ll;const ll mod = 1e9 + 7;const ll N = 250010;int a[N],b[N];int main(){ std::ios::sync_with_stdio(false); std::cin.tie(0); int n; while(cin>>n){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=1;i<=n;i++){ cin>> a[i]; a[i] -= i; } for(int i=1;i<=n;i++){ cin>> b[i]; } sort(b+1,b+n+1); priority_queue< pair<int ,int> > que; for(int i=1;i<=n;i++){ que.push( make_pair(a[i], i) ); } ll ans = 0; for(int i=1;i<=n;i++){ while( que.top().second < b[i] ) que.pop(); ll temp = que.top().first; que.push( make_pair(temp - (n + i), n+i) ); ans = (ans + temp)%mod; } cout<< ans%mod <<endl; } return 0;}
JNU
WYC
阅读全文
0 0
- #2017 Multi-University Training Contest 2 1003
- 2017 Multi-University Training Contest 4 1003
- 2017 Multi-University Training Contest 2 1011
- #2017 Multi-University Training Contest 2 1001
- 2017 Multi-University Training Contest 2
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 简单回合制小游戏
- String类中一些常用方法的介绍和示例
- 酒客项目日志20170728
- Ubuntu16.04 源码安装turtlebot
- Xamarin for iOS 11(一)
- #2017 Multi-University Training Contest 2 1003
- sql存储过程例子
- Spring Data JPA 增删改查
- 笔记3:栈
- C++const成员和this指针
- Java程序调试
- PHP页面ob静态化
- java for 循环
- 2017 Multi-University Training Contest