思路:二分+贪心

提交次数:10次以上

错因:刚开始以为二分(边界,$+1or-1$)写错了,调了半天,后来才发现是$ck()$写错了。开始只判了最后是否小于零,而应该中间一旦小于零就$return\space false$

题解:

二分天数(单调性显然)。

$ck(int x)$: 首先$x$天内必须包含所有科目;然后贪心的考每一科的最后一次试(倒着扫一遍);维护一个剩余天数$cnt$,遇到空闲时间或不是最后本科目的一次考试就$++$,否则$-=$本科考试所需的复习天数;一旦$cnt<0$,直接$return\space false$;最后$return\space cnt>=0$。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
//你弱,有什么资格休息
#define ull unsigned long long
#define ll long long
#define R register ll
#define pause (for(R i=1;i<=10000000000;++i))
#define In freopen("NOIPAK++.in","r",stdin)
#define Out freopen("out.out","w",stdout)
namespace Fread {
static char B[<<],*S=B,*D=B;
#ifndef JACK
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
#endif
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
if(ch==EOF) return EOF; do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return (ch<=||ch>=);}
inline void gs(char* s) {
register char ch; while(isempty(ch=getchar()));
do *s++=ch; while(!isempty(ch=getchar()));
}
} using Fread::g; using Fread::gs; namespace Luitaryi {
const int N=1e++;
int n,m,ans=-,cnt;
int a[N],w[N];
bool vis[N],flg[N];
inline bool ck(int x) { R ret=,tmp=m;
memset(vis,,sizeof(vis)); memset(flg,,sizeof(flg));
for(R i=x;i>=&&tmp;--i) if(a[i]&&!vis[a[i]]) vis[a[i]]=true,flg[i]=true,--tmp;
if(tmp!=) return false;
for(R i=;i<=x;++i) {
if(a[i]!=&&flg[i]) ret-=w[a[i]];
else ++ret;
if(ret<) return false;
} return ret>=;
}
inline void main() {
n=g(),m=g();
for(R i=;i<=n;++i) a[i]=g();
for(R i=;i<=m;++i) w[i]=g();
R l=m,r=n+; while(l<r) {
R md=l+r>>;
if(ck(md)) r=md;
else l=md+;
} printf("%d\n",l==n+?-:l);
}
}
signed main() {
Luitaryi::main();
return ;
}

2019.07.14

最新文章

  1. HDU 5055 Bob and math problem(简单贪心)
  2. LevelDB库简介
  3. Testing - Selenium
  4. C++中new的解说
  5. 【转载】loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题
  6. 【转】PHP简单拦截器的实现
  7. mysql建表出现Timestamp错误
  8. ado 字符串变量
  9. gdb nnet3-compute
  10. jsp篇 之 指令元素和动作元素
  11. 弄懂promise
  12. Linux:Red Hat系统的安装
  13. sql server 索引阐述系列二 索引存储结构
  14. [No0000163]卷福、神秘博士和一群老戏骨表演群口相声:To be or not to be该咋念,简直高潮迭起
  15. BGP - 5,BGP属性
  16. springmvc跳转到自定义404页面的三种方法
  17. 2017-2018 Exp5 MSF基础应用 20155214
  18. hihocoder第212周-动态规划
  19. C++中没有finally,那么应该在哪里关闭资源?
  20. Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决

热门文章

  1. HDU - 2196(树形DP)
  2. PHP学习之PHP编码习惯
  3. IP 、127.0.0.1、localhost 三者区别
  4. JS中逗号运算符的用法
  5. VBA开发项目分享-1
  6. NOIP2009-2018简要题解
  7. 虚拟机CentOS启动报错-entering emergency mode解决办法
  8. 使用cnpm淘宝镜像
  9. 红黑树和AVL树
  10. How to Change the Default Theme Appearance [editing with no theme]