Codeforces 798D Mike and distribution (构造)
生活随笔
收集整理的這篇文章主要介紹了
Codeforces 798D Mike and distribution (构造)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接
http://codeforces.com/contest/798/problem/D
題解
前幾天的模擬賽,居然出這種智商題。。被打爆了QAQ
這個(gè)的話,考慮只有一個(gè)序列怎么做,把所有的排序取最大的當(dāng)然可以,但是還有一種做法,就是兩兩分組之后每?jī)蓚€(gè)相鄰的取大的!!
于是按照\(a\)排序,先取第一個(gè),后面每?jī)蓚€(gè)相鄰的取b較大的。做完了!
哇這怎么想出來的啊。。。。
代碼
#include<cstdio> #include<cstdlib> #include<iostream> #include<vector> #include<algorithm> using namespace std;const int N = 1e5; int a[N+3],b[N+3],permu[N+3]; vector<int> ans; int n;bool cmp(int x,int y) {return a[x]>a[y];}int main() {scanf("%d",&n);for(int i=1; i<=n; i++) scanf("%d",&a[i]);for(int i=1; i<=n; i++) scanf("%d",&b[i]);for(int i=1; i<=n; i++) permu[i] = i;sort(permu+1,permu+n+1,cmp);ans.push_back(permu[1]);for(int i=2; i<=n; i+=2){ans.push_back(b[permu[i]]>b[permu[i+1]] ? permu[i] : permu[i+1]);}printf("%d\n",ans.size());for(int i=0; i<ans.size(); i++) printf("%d ",ans[i]); puts("");return 0; }總結(jié)
以上是生活随笔為你收集整理的Codeforces 798D Mike and distribution (构造)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AtCoder AGC017C Snuk
- 下一篇: Codeforces 482E ELCA