2024牛客多校第5场
很神奇的场hh,大家一起坐牢,多好啊!
B
找规律,这种题一般都是多模拟几个数据然后猜出来
#include<bits/stdc++.h> using namespace std; inline int read() { int x=0;bool f=1;char ch=getchar(); for(;ch<'0'||ch>'9';ch=getchar())f^=(ch=='-'); for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<1)+(x<<3)+(ch^48); return f?x:-x; } int n,m,a,b; bool sol(){ n=read(); m=read(); a=read(); b=read(); if (n>m) swap(n,m); if ((n&1)&&(m&1)) return false; if (n==1&&m==2) return true; if (a==0&&b==0) { return false; } if (a==1&&b==1) return true; if (a==1&&b==0){ if (n==1&&m%2==0) return true; return false; } if (a==0&&b==1){ if (n==1&&m%2==0) return false; return true; } return true; } signed main() { int T; T=read(); while(T--) if (sol()) cout << "Yes" << endl; else cout << "No" << endl; return 0; }
E
显然如果ai>bi,先手肯定赢
如果ai==bi,如果这个位置谁先操作谁赢
假设有cnt个ai==bi的,cnt为奇数是A能赢cnt/2+1,cnt为偶数时A赢cnt/2
#include<bits/stdc++.h> using namespace std; const int N = 2e5+5; int a[N],b[N]; void solve(){ int n;cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; int cnt=0,eq=0; for(int i=1;i<=n;i++){ cnt+=(a[i]>b[i]); eq+=(a[i]==b[i]); } cout<<cnt+(eq+1)/2<<'\n'; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); int t;cin>>t; while(t--){ solve(); } }
L
发现如果A[i]> A[I-1],则把A[i]-1,A[i-1]+1不会使答案更差
证明:
1.A[i]原本=A[i-1]+1,减完后相当于A[i]和A[i-1]互换,乘积不变
2.A[i]>A[I-1]+1,减完后更平均了,根据均值不等式,肯定最好
#include<bits/stdc++.h> using namespace std; const int N =105; const int mod = 998244353; typedef long long ll; int a[N]; void solve(){ int n;cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; priority_queue<int,vector<int>,greater<int>>q; q.push(a[1]); for(int i=2;i<=n;i++){ while(a[i]>q.top()){ int u=q.top(); q.pop(); a[i]--; u++; q.push(u); } q.push(a[i]); } ll ans=1; while(!q.empty()){ ans*=1ll*q.top(); ans%=mod; q.pop(); } cout<<ans<<"\n"; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); int t;cin>>t; while(t--){ solve(); } }
H
暴搜过的,发现由于是下降的,所以每从u走到一个新的点v,u点的邻点都不能走,ban掉就行
发现图越稠密,每次ban掉的点越多,很快就走到底了
如果图不稠密,那走法很少,也很快就走到底了
比较严格的证明:
J
填坑中..
很神奇的dp,赛时一直不知道怎么去完备、不重不漏地数完一棵树