CF 1981 D. World is Mine (*1800) DP+博弈论
CF 1981 D. World is Mine (*1800) DP+博弈论
题意:
有
双方均采用最优策略,求
思路:
贪心的去思考,我们注意到
代码:
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define all(u) u.begin(), u.end()
#define endl '\n'
#define debug(x) cout<<#x<<":"<<x<<endl;
typedef pair<int, int> PII;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10, M = 105;
const int mod = 1e9 + 7;
const int cases = 1;
void Showball(){
int n;
cin>>n;
vector<int> cnt(n+1);
for(int i=0;i<n;i++){
int x;
cin>>x;
cnt[x]++;
}
vector<int> cand;
for(int i=1;i<=n;i++){
if(cnt[i]) cand.pb(cnt[i]);
}
int m=cand.size();
vector<int> f(m+1,inf);
f[0]=0;
for(int i=0;i<m;i++){
auto nf=f;
for(int j=0;j<i;j++){
if(f[j]+cand[i]<=i-j){
nf[j+1]=min(nf[j+1],f[j]+cand[i]);
}
}
f=nf;
}
int ans=inf;
for(int i=m;i>=0;i--) if(f[i]!=inf) return cout<<m-i<<endl,void();
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T=1;
if(cases) cin>>T;
while(T--)
Showball();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统