Description

人们总是难免会碰到大佬。他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语。你作为一个OIER,面对这样的事情非常不开心,于是发表了对大佬不敬的言论。大佬便对你开始了报复,你也不示弱,扬言要打倒大佬。现在给你讲解一下什么是大佬,大佬除了是神犇以外,还有着强大的自信心,自信程度可以被量化为一个正整数 C(1<=C<=10^8),想要打倒一个大佬的唯一方法是摧毁 Ta的自信心,也就是让大佬的自信值等于 0(恰好等于 0,不能小于 0 )。由于你被大佬盯上了,所以你需要准备好 n(1<=n<=100)天来和大佬较量,因为这 n天大佬只会嘲讽你动摇你的自信,到了第n+1天,如果大佬发现你还不服,就会直接虐到你服,这样你就丧失斗争的能力了。你的自信程度同样也可以被量化,我们用 mc (1 <= mc <= 100)来表示你的自信值上限。在第i天(i>=1),大佬会对你发动一次嘲讽,使你的自信值减小a[i],如果这个时刻你的自信值小于0了,那么你就丧失斗争能力,也就失败了(特别注意你的自信值为0的时候还可以继续和大佬斗争)。在这一天,大佬对你发动嘲讽之后,如果你的自信值仍大于等于0,你能且仅能选择如下的行为之一:
1.还一句嘴,大佬会有点惊讶,导致大佬的自信值C减小1。
2.做一天的水题,使得自己的当前自信值增加  w[i],并将新自信值和自信值上限  mc比较,若新自信值大于mc,则新自信值更新为mc。例如,mc=50,当前自信值为40,若w[i]=5,则新自信值为45,若w[i]=11,则新自信值为50。
3.让自己的等级值L加1。
4.让自己的讽刺能力F乘以自己当前等级L,使讽刺能力F更新为F*L。
5.怼大佬,让大佬的自信值C减小F。并在怼完大佬之后,你自己的等级L自动降为0,讽刺能力F降为1。
由于怼大佬比较掉人品,所以这个操作只能做不超过2次。特别注意的是,在任何时候,你不能让大佬的自信值为负,因为自信值为负,对大佬来说意味着屈辱,而大佬但凡遇到屈辱就会进化为更厉害的大佬直接虐飞你。在第1天,在你被攻击之前,你的自信是满的(初始自信值等于自信值上限mc),你的讽刺能力F是1,等级是0。现在由于你得罪了大佬,你需要准备和大佬正面杠,你知道世界上一共有m(1<=m<=20)个大佬,他们的嘲讽时间都是 n天,而且第 i天的嘲讽值都是 a[i]。不管和哪个大佬较量,你在第i天做水题的自信回涨都是w[i]。这m个大佬中只会有一个来和你较量(n天里都是这个大佬和你较量),但是作为你,你需要知道对于任意一个大佬,你是否能摧毁他的自信,也就是让他的自信值恰好等于0。和某一个大佬较量时,其他大佬不会插手。

Input

第一行三个正整数n,m,mc。分别表示有n天和m个大佬,你的自信上限为mc。
接下来一行是用空格隔开的n个数,其中第i(1<=i<=n)个表示a[i]。
接下来一行是用空格隔开的n个数,其中第i(1<=i<=n)个表示w[i]。
接下来m行,每行一个正整数,其中第k(1<=k<=m)行的正整数C[k]表示第k个大佬的初始自信值。
1  ≤n,mc  ≤100;  1≤m≤20; 1≤a[i],w[i]≤mc; 1≤C[i] ≤10

Output

共m行,如果能战胜第k个大佬(让他的自信值恰好等于0),那么第k行输出1,否则输出0。

Sample Input

10 20 100
22 18 15 16 20 19 33 15 38 49
92 14 94 92 66 94 1 16 90 51
4
5
9
338
5222
549
7491
9
12
3288
3
1
2191
833
3
6991
2754
3231
360
6

Sample Output

1
1
1
0
0
0
0
1
1
0
1
1
0
0
1
0
0
0
0
1

正解:$DP$

这题实在是太巧妙了。。感觉自己思想江化了。。

首先我们设$f[i][j]$表示前$i$天,自信值为$j$,最多可以有多少天不刷题。

我们设最大值为$D$,这$D$天是可以自由安排的,我们先考虑怼大佬的情况。

我们设$d[f][l]$表示讽刺值为$f$,等级值为$l$,最少需要多少天,我们限制住$D$天的限制以后,可以发现,状态数很少,于是我们直接$bfs$求出$d$就可以了。

然后对于每个状态,我们用一个二元组$(d,f)$记录讽刺值为$f$需要多少天。我们怼了两次以后,剩下的天数可以使用比较弱的还嘴(当然可能并不需要怼两次,所以我们要加入$(0,0)$的二元组)。那么我们现在要满足的条件只有两个:$f1+f2<=c$且$D-d1-d2>=c-f1-f2$。移项后可发现要满足$D-c>=d1-f1+d2-f2$。

那么我们把状态按照$f$排序,枚举其中一次怼,用单调指针来扫另一次怼,记录另一次怼的最小值,如果发现满足等式那就可以直接输出$1$了。

 //It is made by wfj_2048~
#include <algorithm>
#include <iostream>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define inf (1<<30)
#define N (4000010)
#define il inline
#define RG register
#define ll long long
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout) using namespace std; map <int,map<int,int> > d; struct data{ int d,f; }p[N]; int f[][],a[],w[],c[],q[N],F[N],L[N],n,m,mc,mx,D,cnt; il int gi(){
RG int x=,q=; RG char ch=getchar();
while ((ch<'' || ch>'') && ch!='-') ch=getchar();
if (ch=='-') q=-,ch=getchar();
while (ch>='' && ch<='') x=x*+ch-,ch=getchar();
return q*x;
} il int cmp(const data &a,const data &b){ return a.f<b.f; } il void bfs(){
RG int h=,t=; d[F[t]=][L[t]=]=q[t]=;
while (h<t){
++h; RG int x=d[F[h]][L[h]];
if (x==D) continue;
RG int FF=F[h],LL=L[h];
if (!d[FF][LL+]){
++t,F[t]=FF,L[t]=LL+;
d[F[t]][L[t]]=q[t]=x+;
}
if ((ll)FF*(ll)LL<=mx && !d[FF*LL][LL]){
++t,F[t]=FF*LL,L[t]=LL;
d[F[t]][L[t]]=q[t]=x+;
}
}
p[++cnt]=(data){,};
for (RG int i=;i<=t;++i)
p[++cnt]=(data){q[i],F[i]};
sort(p+,p+cnt+,cmp); return;
} il void work(){
n=gi(),m=gi(),mc=gi();
for (RG int i=;i<=n;++i) a[i]=gi();
for (RG int i=;i<=n;++i) w[i]=gi();
for (RG int i=;i<=m;++i) c[i]=gi(),mx=max(mx,c[i]);
for (RG int i=;i<=n;++i)
for (RG int j=;j<=;++j) f[i][j]=-n;
f[][mc]=;
for (RG int i=;i<=n;++i)
for (RG int j=a[i];j<=mc;++j){
f[i][j-a[i]]=max(f[i][j-a[i]],f[i-][j]+);
RG int t=min(mc,j-a[i]+w[i]);
f[i][t]=max(f[i][t],f[i-][j]);
}
for (RG int i=;i<=n;++i)
for (RG int j=;j<=mc;++j) D=max(D,f[i][j]);
bfs();
for (RG int k=;k<=m;++k){
RG int j=,fg=,v=inf;
for (RG int i=cnt;i;--i){
while (p[j].f+p[i].f<=c[k] && j<i)
v=min(v,p[j].d-p[j].f),++j;
if (D-c[k]>=v+p[i].d-p[i].f){ fg=; break; }
}
printf("%d\n",fg ? : );
}
return;
} int main(){
File("dalao");
work();
return ;
}

bzoj4828 [Hnoi2017]大佬的更多相关文章

  1. BZOJ4828 AHOI/HNOI2017大佬(动态规划+bfs)

    注意到怼大佬的操作至多只能进行两次.我们逐步简化问题. 首先令f[i][j]表示第i天结束后自信值为j时至多有多少天可以进行非防御操作(即恢复自信值之外的操作).这个dp非常显然.由于最终只需要保证存 ...

  2. [bzoj4828][Ah/Hnoi2017]大佬

    来自FallDream的博客,未经允许,请勿转载,谢谢. 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你 ...

  3. [AH/HNOI2017]大佬

    题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你作为一个 OIER,面对这样的事情非常不开心,于 ...

  4. [AH2017/HNOI2017]大佬

    题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你作为一个 OIER,面对这样的事情非常不开心,于 ...

  5. [AHOI2017/HNOI2017]大佬

    Description: 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你作为一个 OIER,面对这样的事 ...

  6. HNOI2017大佬

    贼难的一道题 虽然算法都不难,但组合起来就是想不到 首先,最简单的一步,对所有大佬,嘲讽你减的自信值和你做水题回复自信值都是不变的,写个\(dp\),设\(dp[i][j]\)表示第\(i\)天自信值 ...

  7. [AH2017/HNOI2017]大佬(动态规划 搜索)

    /* 神仙yyb 理解题意可以发现 能够对大佬造成的伤害只和你怼了多少天大佬有关, 而且显然天数越多越好 那么我们可以先通过预处理来找出我们最多能够怼多少天大佬 然后我们发现最后我们能怼的血量状态数是 ...

  8. [HNOI2017]大佬

    参考题解 \(\text{Solution}\) 我们发现5个行为中2操作与其它操作无关,所以我们采用贪心,尽量让多的时间去攻击大佬. 设 \(f[i][j]\) 表示前 \(i\) 天剩 \(j\) ...

  9. 【题解】HNOI2017大佬

    哎……做了几个小时最后还是没能想到怼大佬的合法性到底怎么搞.写暴力爆搜感觉复杂度爆炸就没敢写 bfs / dfs 一类,后来发现在种种的约束条件下(远小于所给的 \(n, m\))复杂度完全是可以承受 ...

随机推荐

  1. 【方法】Oracle用户密码含特殊字符时的登陆问题

    [方法]Oracle用户密码含特殊字符时的登陆问题 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...

  2. 剑指offer:重建二叉树

    重建二叉树的前置知识: 0.遍历二叉树: (1)前序遍历:根左右 --> 先访问根节点,再前序遍历左子树,最后前序遍历右子树: (2)中序遍历:左根右 --> 先中序遍历左子树,再访问根节 ...

  3. 对Vue.js $watch方法的理解

    博主最近对着vue.js的官方教程在自学vue.js,博主自幼愚钝,在教程中真的是好多点都不太理解,接下来要说的这个$watch方法就是其中一个不太理解的点了.咱们先来看一下对于$watch方法在vu ...

  4. HTTP协议分析

    一.域名概述 1.域名解析的作用: 主机数量增多时,IP地址不容易记忆,域名方便记忆.域名记忆更加直观. 2.hosts文件 早期通过hosts文件进行域名的解析,Linux系统中hosts文件存放路 ...

  5. Javascript——依赖注入

    本人才学疏浅,本文只为抛砖引玉,欢迎各路大牛前来斧正,不胜感激! 如今各个框架都在模块化,连前端的javascript也不例外.每个模块负责一定的功能,模块与模块之间又有相互依赖,那么问题来了:jav ...

  6. java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题

    今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...

  7. Docker(开课吧笔记)

    1.Docker基本概念 Docker运行在Linux,需要git技能 docker官网解析   来源于容器又不仅仅是容器,第一个版本基于LXC,远远超过容器概念   交付时拿到的是镜像,直接run运 ...

  8. 【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件

    简介 马三最近换到了一家新的公司撸码,新的公司 UI 部分采用的是 NGUI 插件,而之前的公司用的一直是 Unity 自带的 UGUI,因此马三利用业余时间学习了一下 NGUI 插件的使用,并把知识 ...

  9. 走入PHP-变量、运算符

    通过define()定义常量: PHP 5.3.0之后,可以使用const关键字在类定义之外定义常量: 下面是PHP的几个魔术变量: PHP支持一个执行运算符:反引号(``),PHP将尝试将反引号中的 ...

  10. 将spring cloud打包docker镜像

    简介:用spring cloud构建微服务后,微服务肯定要docker镜像化然后用rancher等可视化工具管理,这就是走完了一套基本的流程,现在简单介绍下 环境:两台centos7.x的服务器,一台 ...