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;
}
posted @   _XOFqwq  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示