codeforces#1148E. Earth Wind and Fire(贪心)
Posted carcar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces#1148E. Earth Wind and Fire(贪心)相关的知识,希望对你有一定的参考价值。
题目链接:
http://codeforces.com/contest/1148/problem/E
题意:
给出两个长度为$n$的序列,将第一个序列变成第二个序列,顺序不重要,只需要元素完全相同即可
只有一种修改操作
- $a_i=a_i+d,a_j=a_j-d$满足 $a_j-a_i>=2\times d$
数据范围:
$1\leq n\leq 3e^5$
分析:
待补。
ac代码:
#include<bits/stdc++.h> #define ll long long #define pa pair<int,int> using namespace std; const int maxn=3e5+10; struct Ans int a,b,c; ans[maxn*5]; int cnt; struct Move int id,now,to; bool operator <(const Move &a)const if(to==a.to)return id<a.id; return to<a.to; ; pa a[maxn]; int b[maxn]; set<Move>se1,se2; int main() int n; scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i].first); a[i].second=i; for(int i=1;i<=n;i++) scanf("%d",&b[i]); sort(a+1,a+1+n); sort(b+1,b+1+n); for(int i=1;i<=n;i++) //cout<<a[i].first<<" "<<b[i]<<endl; if(a[i].first<b[i]) se1.insert((Move)a[i].second,b[i]-a[i].first,b[i]); else if(a[i].first>b[i]) se2.insert((Move)a[i].second,a[i].first-b[i],b[i]); //cout<<se1.size()<<" "<<se2.size()<<endl; while(1) //cout<<se1.size()<<" "<<se2.size()<<endl; //cout<<"sadf0"<<endl; if(se1.size()==0&&se2.size()==0)break; if(se1.size()==0||se2.size()==0) printf("NO\n"); return 0; Move x=(*se1.begin()); Move y=(*se2.begin()); if(x.to>y.to) printf("NO\n"); return 0; // cout<<x.id<<" "<<y.id<<endl; se1.erase(x); se2.erase(y); if(x.now==y.now) ans[++cnt]=(Ans)x.id,y.id,x.now; else if(x.now<y.now) ans[++cnt]=(Ans)x.id,y.id,x.now; y.now-=x.now; se2.insert(y); else if(x.now>y.now) ans[++cnt]=(Ans)x.id,y.id,y.now; x.now-=y.now; se1.insert(x); printf("YES\n"); printf("%d\n",cnt); for(int i=1;i<=cnt;i++) printf("%d %d %d\n",ans[i].a,ans[i].b,ans[i].c); return 0;
以上是关于codeforces#1148E. Earth Wind and Fire(贪心)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 803E--Roma and Poker (DP)
Codeforces Round #512 E - Vasya and Good Sequences
Codeforces894E.Ralph and Mushrooms Tarjan缩点+DP
[codeforces 894 E] Ralph and Mushrooms 解题报告 (SCC+拓扑排序+DP)
CodeForces 1321E. World of Darkraft: Battle for Azathoth(线段树)