题目链接

题意分析

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

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

所以我们可以二分

由于可以操作无限次

所以我们对于当前\([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;
}

转载于:https://www.cnblogs.com/LovToLZX/p/10693851.html

P4090 [USACO17DEC]Greedy Gift Takers相关推荐

  1. [USACO17DEC]Greedy Gift Takers

    题目描述 Farmer John's nemesis, Farmer Nhoj, has NN cows (1 \leq N \leq 10^51≤N≤105 ), conveniently numb ...

  2. Greedy Gift Takers

    Farmer John's nemesis, Farmer Nhoj, has N cows (1≤N≤105 ), conveniently numbered 1...N .They have un ...

  3. [BZOJ5139][Usaco2017 Dec]Greedy Gift Takers 权值线段树

    Description Farmer John's nemesis, Farmer Nhoj, has NN cows (1≤N≤10^5), conveniently numbered 1-N. T ...

  4. USACO 2017 December Contest Platinum T3: Greedy Gift Takers

    题目大意 有 N(1≤N≤1e5)头牛按顺序排成一列,编号从 1 到 N,1 号牛在队头,N 号牛在队尾. 每次位于队头的牛 i 拿到一个礼物,然后插入到从队尾数ci​头牛之前的位置..举个栗子: 初 ...

  5. bzoj5139 [Usaco2017 Dec]Greedy Gift Takers

    http://www.elijahqi.win/2018/02/06/bzoj5139/ 我这种智商低下曾经还不努力的人如果现在不努力,怕是没有大学上了 [题意] n个奶牛排成一排,顺次编号为1到n ...

  6. bzoj5139 [Usaco2017 Dec]Greedy Gift Takers(二分答案+模拟)

    首先我们发现如果第x头牛不能拿到礼物,则x之后的所有牛也不能拿到礼物.因此我们可以二分来找到这第一头不能拿到礼物的牛.满足什么条件的牛不能拿到礼物呢?我们预处理出每头牛拿到礼物之后会出现在哪里,如果在 ...

  7. [USACO 2017DEC] Greedy Gift Takers

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5139 [算法] 二分答案 时间复杂度 : O(NlogN^2) [代码] #incl ...

  8. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  9. Greedy Gift Givers

    原题地址 Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange g ...

最新文章

  1. 11月29日云栖精选夜读:阿里传奇工程师多隆的程序世界
  2. python笔记本-如何用Python在笔记本电脑上分析100GB数据(上)
  3. hdu2155 小黑的镇魂曲(dp)
  4. 怎么在电脑上使用python3.6_Windows下 Python3.6.1 运行环境的搭建
  5. 502 Bad Gateway - Registered endpoint failed to handle the request
  6. nginx mozilla_我发现Mozilla的私人浏览模式存在重大缺陷。
  7. java json 去除空_详解Java去除json数据中的null空值问题
  8. 学前端有什么好方法,怎么才能更快学会前端?
  9. 记一次反制追踪溯本求源
  10. 20191009 csp-s模拟T3(并查集)
  11. 小米公司开源 MIUI 6 第三方适配工具 『Patchrom』
  12. 蓝桥杯试题算法训练之删除数组零元素——Python满分解答
  13. freeswitch-PSTN
  14. win10注册表损坏开机蓝屏修复
  15. 电脑上上传安装apk到手机或者模拟器上
  16. Language Models are Unsupervised Multitask Learners 论文纪要
  17. [个人笔记]R语言:缺失值NA处理
  18. Linux 关闭透明大页(transparent_hugepage)和 NUMA
  19. xwiki安装使用以及问题解决
  20. dsp/bios初步了解

热门文章

  1. 如何删除打开方式列表中的侯选
  2. 电脑的开机密码忘记了怎么打开
  3. 需求规格说明书RUP版
  4. Unity Shader-兰伯特光照模型与Diffuse Shader
  5. 地方门户网站的运营我们缺少的是什…
  6. 微软发布安卓手机的Office预览版,需申请内测
  7. Ubuntu使用备忘
  8. Washing Text Animation
  9. mysql子查询:查出本网站goods_id最大的一条商品和每个栏目下id号最大的一条商品.
  10. cup过高是什么意思_CPU占用过高怎么办? 每日一答