Codeforces 798D Mike and distribution 构造
来源:互联网 发布:java调用ireport报表 编辑:程序博客网 时间:2024/05/29 15:02
点击打开链接
题意:数组a,b共有n个数,n<=1e5,一定有解,构造出序列[p1..pk] k<=[n/2]+1,满足 2*(a[p1]..a[pk]) > Sum(A) && 2*(b[p1]..b[pk]) > Sum(b)
2*(a[p1]..a[pk]) > Sum(A)
a[p1]..a[pk] > a[q1]..a[q(n-k)] (q为剩下的下标),因为一定有解,所以k=[n/2]+1必定有解
构造:将a从大->小排序后,当n为odd时,先选取A中最大的元素下标,则剩下2k对元素.
(a[1],a[2],a[3],..a[p],a[p+1]..) 当b[p]>b[p+1]时,选下标p即可,当b[p]<b[p+1] 选下标p+1,两种情况的选择使得,数组b显然满足.
a也同样满足,a[p]<a[p+1] 因为a先选了最大 每次没选的元素 都小于上一次所选的元素,则条件满足
n为偶数,在odd的情况下多选一个就好了
#include <bits/stdc++.h>using namespace std;const int N=2e5+20;struct node{int id,v;}a[N],b[N];bool cmp(node a,node b){return a.v>b.v; } int n,vis[N];vector<int> ans;int main(){while(cin>>n){for(int i=1;i<=n;i++)scanf("%d",&a[i].v),a[i].id=i;for(int i=1;i<=n;i++)scanf("%d",&b[i].v),b[i].id=i;sort(a+1,a+1+n,cmp);memset(vis,0,sizeof(vis));ans.clear();ans.push_back(a[1].id);vis[a[1].id]=1;for(int i=2;i<=n;i+=2){int p=a[i].id,q=a[i+1].id;if(b[p].v>=b[q].v)ans.push_back(p),vis[p]=1;elseans.push_back(q),vis[q]=1;}cout<<n/2+1<<endl;for(int i=0;i<ans.size();i++)cout<<ans[i]<<' ';cout<<endl;}return 0;}
0 0
- Codeforces 798D Mike and distribution 构造
- Codeforces 798D Mike and distribution (构造 + 脑洞 推荐)
- codeforces 798D Mike and distribution
- codeforces 798D Mike and distribution
- CodeForces 798D Mike and distribution
- Codeforces-798D. Mike and distribution
- 798D Mike and distribution
- Codeforces 798D Mike and distribution(二维贪心)
- Codeforces-798D-Mike and distribution(贪心)
- codeforces 798 D. Mike and distribution 二维贪心
- CodeForces 798D Mike and distribution(二维贪心 + 思维)
- D. Mike and distribution
- CF-Codeforces Round #410 (Div. 2)-D-Mike and distribution
- Codeforces Round #410 (Div. 2) D. Mike and distribution 思维
- Codeforces Round #410 (Div. 2) D. Mike and distribution(贪心)
- Codeforces Round #410 Div2 D Mike and distribution
- Codeforces 798D Mike and distribution【思维+贪心】好题!好题!感觉智商受到了一万点伤害= =
- Codeforces Round #410 (Div.2) D.Mike and distrubition-构造
- greedy——455. Assign Cookies
- http://blog.csdn.net/chenggong2dm/article/details/7896440
- Hibernate中的多表操作
- MySQL 5.6 if与end if在触发器中的使用
- 青铜莲花池(bfs)
- Codeforces 798D Mike and distribution 构造
- LeetCode 64. Minimum Path Sum
- PageHelper插件的使用方法
- C#winform实现增删改查
- JavaScript 1.8 数组
- 技术方向的选择
- http client/server for asyncio
- 循环队列顺序储存
- Django开发环境与生产环境的设置