Codeforces Round #283 (Div. 2)CDE题解
Posted ccsu-kid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #283 (Div. 2)CDE题解相关的知识,希望对你有一定的参考价值。
C. Removing Columns
https://codeforc.es/contest/496/problem/C
从前往后标记那些前面已经确定字典序合法的行,对于字典序不合法又没被标记的直接删除该列。
1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h> 4 #define iter ::iterator 5 #define pa pair<int,int> 6 using namespace std; 7 #define ll long long 8 #define mk make_pair 9 #define pb push_back 10 #define se second 11 #define fi first 12 #define ls o<<1 13 #define rs o<<1|1 14 ll mod=998244353; 15 const int N=1e2+5; 16 int n,m; 17 char s[N][N]; 18 int vis[N]; 19 int main() 20 IO; 21 cin>>n>>m; 22 for(int i=1;i<=n;i++) 23 cin>>s[i]+1; 24 25 int ans=0; 26 for(int i=1;i<=m;i++) 27 int f=0; 28 for(int j=2;j<=n;j++) 29 if(s[j][i]<s[j-1][i]&&!vis[j])f=1; 30 31 if(f)ans++; 32 else 33 for(int j=2;j<=n;j++) 34 if(s[j][i]>s[j-1][i])vis[j]=1; 35 36 37 38 39 cout<<ans<<endl; 40
D. Tennis Game
https://codeforc.es/contest/496/problem/D
预处理各自胜场数对应的编号,枚举t,从前往后判断每轮是由谁赢下,
结合最后一个场是谁赢的谁就要赢判断是否合法就做完了。
1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h> 4 #define iter ::iterator 5 #define pa pair<int,int> 6 using namespace std; 7 #define ll long long 8 #define mk make_pair 9 #define pb push_back 10 #define se second 11 #define fi first 12 #define ls o<<1 13 #define rs o<<1|1 14 ll mod=998244353; 15 const int N=1e5+5; 16 int n; 17 int aid[N],bid[N]; 18 int as[N],bs[N]; 19 vector<pa>ans; 20 int main() 21 IO; 22 cin>>n; 23 int h1=0,h2=0; 24 for(int i=1;i<=n;i++) 25 int x; 26 cin>>x; 27 if(x==1) 28 h1++; 29 aid[h1]=i; 30 31 else 32 h2++; 33 bid[h2]=i; 34 35 as[i]=h1; 36 bs[i]=h2; 37 38 for(int t=1;t<=n;t++) 39 int p=0,w1=0,w2=0,w3=0; 40 while(p<n) 41 int c1=as[p],c2=bs[p]; 42 if(c1+t>h1&&c2+t>h2)break; 43 if(c1+t<=h1&&c2+t<=h2) 44 if(aid[c1+t]<bid[c2+t]) 45 w1++; 46 w3=1; 47 p=aid[c1+t]; 48 49 else 50 w2++; 51 w3=2; 52 p=bid[c2+t]; 53 54 55 else if(c1+t<=h1) 56 w1++; 57 w3=1; 58 p=aid[c1+t]; 59 60 else 61 w2++; 62 w3=2; 63 p=bid[c2+t]; 64 65 66 if(p==n) 67 if(w3==1&&w1>w2)ans.pb(mk(w1,t)); 68 if(w3==2&&w2>w1)ans.pb(mk(w2,t)); 69 70 71 sort(ans.begin(),ans.end()); 72 cout<<ans.size()<<endl;; 73 for(auto tmp :ans) 74 cout<<tmp.fi<<" "<<tmp.se<<endl; 75 76
E. Distributing Parts
https://codeforc.es/contest/496/problem/E
贪心。
把每个演员分配给音乐,在满足演员的r2>=音乐的r1的情况下,取l1尽量小的音乐。
用set和struct搞一搞很方便,注意struct里的x和id都必须安排顺序,否则insert时会失败。
1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h> 4 #define iter ::iterator 5 #define pa pair<int,int> 6 using namespace std; 7 #define ll long long 8 #define mk make_pair 9 #define pb push_back 10 #define se second 11 #define fi first 12 #define ls o<<1 13 #define rs o<<1|1 14 ll mod=998244353; 15 const int N=1e5+5; 16 int n,m; 17 struct node 18 int l,r,k,id; 19 bool operator <(const node &t)const 20 return r<t.r; 21 22 a[N],b[N]; 23 bool cmp(node n1,node n2) 24 return n1.r<n2.r; 25 26 struct point 27 int x,id; 28 point(int x,int id):x(x),id(id) 29 bool operator <(const point &t)const 30 if(x==t.x)return id<t.id; 31 return x<t.x; 32 33 ; 34 set<point>s; 35 int d[N]; 36 int main() 37 IO; 38 cin>>n; 39 for(int i=1;i<=n;i++) 40 cin>>a[i].l>>a[i].r; 41 a[i].id=i; 42 43 cin>>m; 44 for(int i=1;i<=m;i++) 45 cin>>b[i].l>>b[i].r>>b[i].k; 46 b[i].id=i; 47 48 sort(a+1,a+1+n); 49 sort(b+1,b+1+m); 50 int ans=0; 51 int j=1; 52 for(int i=1;i<=m;i++) 53 while(j<=n&&a[j].r<=b[i].r) 54 s.insert(point(a[j].l,a[j].id)); 55 j++; 56 57 set<point>iter it; 58 for(int k=1;k<=b[i].k;k++) 59 it=s.lower_bound(point(b[i].l,-1)); 60 if(it==s.end())break; 61 point tmp=*it; 62 d[tmp.id]=b[i].id; 63 s.erase(tmp); 64 ans++; 65 66 67 if(ans<n)cout<<"NO"<<endl; 68 else 69 cout<<"YES"<<endl; 70 for(int i=1;i<=n;i++) 71 cout<<d[i]<<" "; 72 73 74 75 /* 76 3 77 1 2 78 1 2 79 1 2 80 2 81 1 2 1 82 1 2 2 83 */
以上是关于Codeforces Round #283 (Div. 2)CDE题解的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #436 E. Fire(背包dp+输出路径)
[ACM]Codeforces Round #534 (Div. 2)
CodeForces - 283E Cow Tennis Tournament