AcWing.3745 牛的学术圈 I
题目链接
题目思路
将问题转换成,有一个数组,找到一个特殊的数idx,满足至少有idx个数 >= idx a[i] >= i (idx求最大).并且给定一个距离l,使得这个区间的数字可以+1.
这样就可以以倒序来存储数字,然后找到最大的符合条件的idx.
因为每个数最多+1,所以当a[idx + 1] < idx 时, idx + 1 的特殊数肯定不会满足条件的,所以直接输出idx即可
若满足条件,则遍历1 ~ idx + 1 当最终l比这个区间的数大的时候表示特殊的数可以更新,则输出idx + 1 否则输出idx
题目代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n, l;
int thesis[N];
bool cmp(int x, int y)
{
return x > y;
}
int main()
{
cin >> n >> l;
for(int i = 1; i <= n; i ++ )
cin >> thesis[i];
sort(thesis + 1, thesis + n + 1, cmp);
int idx = 0;
for(int i = 1; i <= n; i ++ )
{
if(thesis[i] >= i) idx = i;
else break;
}
if(thesis[idx + 1] < idx)
{
cout << idx << endl;
return 0;
}
int cnt = 0;
for(int i = 1; i <= idx + 1; i ++ )
if(thesis[i] == idx) cnt++;
if(l >= cnt) cout << idx + 1 << endl;
else cout << idx << endl;
return 0;
}
作者:vacilie
出处:https://www.cnblogs.com/vacilie/p/16018819.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~