题目链接

题意分析

首先 如果当前序列中一头奶牛拿不到礼物的话

那么他后面的奶牛也拿不到礼物

所以我们可以二分

由于可以操作无限次

所以我们对于当前\([1,mid)\)的奶牛按照\(c\)值排序之后

贪心的先放\(c\)中最小的奶牛

如果依然存在一头奶牛被放在\(mid\)之前

那么就无法使\(mid\)得到礼物

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<list>
#include<set>
#include<deque>
#include<vector>
#include<ctime>
#define ll long long
#define inf 0x7fffffff
#define N 500008
#define IL inline
#define M 108611
#define D double
#define ull unsigned long long
#define R register
using namespace std;
template<typename T>IL void read(T &_)
{
T __=0,___=1;char ____=getchar();
while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();}
while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();}
_=___ ? __:-__;
}
/*-------------OI使我快乐-------------*/
int n,ans;
int num[M],tmp[M];
IL bool check(int mid)
{
if(mid==1) return 1;
for(R int i=1;i<mid;++i) tmp[i]=num[i];
sort(tmp+1,tmp+mid);
int now=n-mid;
for(R int i=1;i<mid;++i)
{
if(tmp[i]>now) return 0;
++now;
}
return 1;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(n);
for(R int i=1;i<=n;++i) read(num[i]);
int le=1,ri=n;ans=-1;
while(le<=ri)
{
int mid=(le+ri)>>1;
if(check(mid)) le=mid+1,ans=mid;
else ri=mid-1;
}
printf("%d\n",n-ans);
// fclose(stdin);
// fclose(stdout);
return 0;
}

最新文章

  1. 原生js实现查询天气的小应用
  2. 谈谈UI架构设计的演化
  3. 常用的JS HTML DOM 事件
  4. Java利用aspose-words将word文档转换成pdf(破解 无水印)
  5. arpg网页游戏之地图(四)
  6. 使用proxool 连接池:No suitable driver found for proxool
  7. Linux下安装MySQLdb模块
  8. A Pretty Good Splash Screen in C#
  9. makefile的简单写法
  10. cocos2d的安装
  11. List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局
  12. salt上编写了备份日志的脚本
  13. BZOJ3322[Scoi2013]摩托车交易——最大生成树+贪心+倍增
  14. BZOJ3505 CQOI2014数三角形(组合数学)
  15. JVM运行时内存区域
  16. java程序源码
  17. Spark 调优(转)
  18. java、oracle对CLOB处理
  19. C# 分享几个ip的方法吧,包括正则验证ip
  20. python添加Windows环境变量

热门文章

  1. Window Application has &quot;update&quot; key words
  2. [SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件
  3. FPGA时序约束和timequest timing analyzer
  4. HBase-1.2.1和Phoenix-4.7.0分布式安装指南
  5. (转)C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
  6. VR眼镜和AR眼镜的区别
  7. FIREDAC的TFDJSONDataSets和TFDJSONDeltas查询和提交数据
  8. SSO单点登录三种情况的实现方式详解(转载)
  9. iperf命令 +speedtest-cli
  10. 关于 Kafka offset