AGC018做题笔记
Atcoder Grand Contest 018
B - Sports Festival
题目大意
有
第
现在要使参加人数最多的项目人数最少,求这个最小人数。
解题思路
显然,删去
- 最开始假设所有的
个项目全部设立。 - 求出每个项目的人数,然后将人数最多的项目删去,知道只剩一个项目位置。
这样的策略显然是最优的。
时间复杂度
int n,m;
cin>>n>>m;
vector<int> rk(n+5); //每个人当前会参加的项目
vector<vector<int> > a(n+5,vector<int>(m+5));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
rk[i]=1; //最开始一个都没有删除
}
int ans=1<<30;
vector<bool> deleted(m+5);
while(114514){
int loc=0,maxn=0;
vector<int> cnt(m+5,0);
for(int i=1;i<=n;i++){
while(deleted[a[i][rk[i]]])rk[i]++; //更新 rk
if(a[i][rk[i]]==0)continue;
cnt[a[i][rk[i]]]++; //贡献人数加一
if(cnt[a[i][rk[i]]]>maxn){ //更新人数最多的项目
maxn=cnt[a[i][rk[i]]];
loc=a[i][rk[i]];
}
}
if(!maxn)break; //如果 maxn 为0,代表删的一个项目不剩了
deleted[loc]=1;
ans=min(ans,maxn);
for(int i=1;i<=n;i++){
if(a[i][rk[i]]==loc)rk[i]++;
}
}
cout<<ans<<"\n";
C - Coins
题目大意
有
斯努克想从
斯努克希望最大限度地增加他得到的所有颜色硬币的总数。请找出最大可能的硬币数量。
解题思路
贪心好题。
首先三种
然后将
假定当前已经找出了最优的
显然是按照
对于所有人,全部先减去
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int x,y,z;
cin>>x>>y>>z;
ll sumc=0;
int n=x+y+z;
vector<ll> id(n+5);
vector<ll> a(n+5),b(n+5),c(n+5);
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
id[i]=i,sumc+=c[i];
}
sort(id.begin()+1,id.begin()+n+1,[&](ll x,ll y){
return a[x]-b[x]>a[y]-b[y];
});
vector<ll> f(n+5,0),g(n+5,0);
priority_queue<ll> pa,pb;
f[0]=g[n+1]=0;
for(int i=1;i<=n;i++){
pa.push(c[id[i]]-a[id[i]]);
f[i]=f[i-1]-c[id[i]]+a[id[i]];
if(pa.size()>x){
f[i]+=pa.top();
pa.pop();
}
}
for(int i=n;i>=1;i--){
pb.push(c[id[i]]-b[id[i]]);
g[i-1]=g[i]-c[id[i]]+b[id[i]];
if(pb.size()>y){
g[i-1]+=pb.top();
pb.pop();
}
}
ll ans=-1ll<<60;
for(int i=x;i<=n-y;i++){
ans=max(ans,sumc+f[i]+g[i]);
}
cout<<ans<<"\n";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现