YL 模拟赛总结 12
Problem
T1
略。
T2
最理想的情况当然是奇偶交替,每个数单独成为一组。
考虑不理想的情况:
-
偶数个数 \(>\) 奇数个数,此时需要可以先奇偶交替,再将最后剩下的偶数单独分为一组,答案为奇数个数 \(\times \ 2 +1\)。
-
奇数个数 \(>\) 偶数个数,此时再分出两种情况:
-
若奇数个数 \(-\) 偶数个数 \(\bmod \ 3 \neq 1\),则前面的可以两个奇数合为一个偶数、一个奇数单独一组,剩下的 \(0/2\) 个奇数合成偶数后分为一组,答案为剩下的奇数个数 \(+\ 1 \div 3\)。
-
否则,剩下的前面奇数组成的的偶数组成一组,落单的奇数各组成一组,答案为剩下的奇数个数 \(\div \ 3 + 2\)。
-
#include<bits/stdc++.h> using namespace std; int n; int a[1031],m[2]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i],m[a[i]%2]++; if(m[0]>m[1]) cout<<m[1]*2+1; else{ int v=m[1]-m[0]; if(v%3==1) v=v/3+2; else v=(v+1)/3; cout<<m[0]+m[1]-v; } return 0; }
T3
将牛棚高度按照高度排序,从小到大考虑每一个牛棚。
先预处理第 \(i\) 个牛棚能装下的奶牛数量 \(cnt_i\)。
每一个牛棚的对于答案的贡献即为 \(cnt_i-(i-1)\)。
#include<bits/stdc++.h> using namespace std; int n; bool vis[31]; long long ans; long long a[31],b[31],t[31]; int cnt[31]; namespace sol2{ void solve(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; sort(b+1,b+n+1); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cnt[i]+=(a[j]<=b[i]); ans=1; for(int i=1;i<=n;i++) ans*=(cnt[i]-i+1); cout<<ans; } } int main(){ sol2::solve(); return 0; }
T4
答案显然具有单调性,考虑二分。
首先可以根据题意建出一张无向图。
为了排序,\(a_i\) 必须与 \(i\) 在一个连通块中。
所以在 check
函数中进行 dfs
求出连通块并判断即可。
#include<bits/stdc++.h> using namespace std; int n,m; int l,r,mid,maxr=-1e9; int a[100031]; struct EdgeInfo{ int r; vector<pair<int,int> > e; }G[100031]; void dfs(int x,int rr){ if(G[x].r) return; G[x].r=rr; for(auto i:G[x].e) if(i.second>=mid) dfs(i.first,rr); } bool check(int x){ for(int i=1;i<=n;i++) G[i].r=0; for(int i=1;i<=n;i++) dfs(i,i); for(int i=1;i<=n;i++) if(G[i].r!=G[a[i]].r) return 0; return 1; } bool p(int *x){ for(int i=1;i<=n;i++) if(x[i]!=i) return 0; return 1; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; if(p(a)){ cout<<-1; return 0; } for(int i=1,u,v,w;i<=m;i++) cin>>u>>v>>w, G[u].e.push_back(make_pair(v,w)), G[v].e.push_back(make_pair(u,w)), maxr=max(maxr,w); l=0,r=maxr+1; while(l+1<r){ mid=(l+r)>>1; if(check(mid)) l=mid; else r=mid; } cout<<l; return 0; }
标签:
YL 模拟赛总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】