
Codeforces Round #762 (Div. 3) D题 New Year's Problem题解
题目
1.题目大意
- m 个商店, n 个朋友
- 每个礼物对应一个快乐值 a
- 只能从 n-1 个商店里买 n 个礼物
- 第 j 个朋友的礼物只能从每个商店的第 j 个礼物中产生
- 目标:最后得到的所有 a 之中的最小值达到最大
2.题目分析
- 求最大的最小值 ==> 用二分
- 思路:根据快乐值的范围,对其进行二分,查找符合题意的最小值。
- 符合题意的标准:根据抽屉原理,只要有一个商店可以满足2个朋友,剩下的商店中只要可以让剩下的朋友都拿到礼物就算满足当前的快乐值。
3.题目代码
#include <iostream>
#include <mem.h>
#define MAX 1e9
using namespace std;
int main()
{
int t;
cin >> t;
int m, n;
while(t--)
{
cin >> m >> n;
int a[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin >> a[i][j];
int l=0, r=MAX+5;
int ans = 0;
while(l<=r)
{
int mid = (l + r) / 2;
bool flag = false;
bool f[n];
memset(f,false,sizeof(f));
for(int i=0;i<m;i++)
{
int cnt = 0;
for(int j=0;j<n;j++)
{
if(a[i][j]>=mid)
{
cnt++;
f[j] = true;
}
}
if(cnt>=2)
flag = true;
}
if(flag)
for(int i=0;i<n;i++)
{
if(!f[i])
{
flag = false;
break;
}
}
if(flag)
{
ans = mid;
l = mid + 1;
}
else
r = mid - 1;
}
cout << ans << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】