题面

  
  

解法

bfs+DPbfs+DP:
  这道题的想法很妙,问了本校的很多大佬之后才搞懂。
  我们可以发现,刷题长自信值和回嘴/怼大佬是两个独立的过程,如果我们能够在保证自己的自信值≥0≥0的同时使得可以不用刷题的天数尽可能多,那么我们就可能打败大佬。
  所以我们设f[i][j]f[i][j]表示前i天,自信值为j时最多有多少天不用刷题,d[f][l]d[f][l]变成讽刺能力为f,等级为l需要的最少天数,假设这个最大值为D,
  假设当前大佬的自信值为x,f[i][j]f[i][j]的最大值为D,假设进行两次怼的操作,所需要的天数和造成的伤害分别为d1,f1,d2,f2
  那么当满足:D-d1-d2>=C-f1-f2时就可以怼死大佬(d1,f1,d2,f2可以为0)
  这样理解:怼两次大佬不能直接怼死了,必须要怼到刚刚好,即D>=d1+d2,C=f1+f2;或者说没有刚刚好,大佬还剩下C-f1-f2的自信值,自己还剩下D-d1-d2的天数,那么就可以还嘴把大佬搞死
  所以我们可以用DP求出f数组,用bfs求出d数组,求出来之后就可以解答。
  对于每一个大佬,我们把状态按照f排序,枚举其中一次怼的造作,用单调指针来扫另一次怼操作,记录另一次怼的最小值,如果发现满足等式那就可以直接输出1了。

复杂度

O(n∗mc+玄学+m∗cntn*mc+玄学+m*cnt),玄学就是bfs的状态数,不是很多,cnt是合法的状态数

代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#define Rint register int
#define Lint long long int
using namespace std;
const int INF=0x3f3f3f3f;
const int N=6010;
struct node
{int d,f;bool operator < (const node &a) const{return f<a.f;}
}p[N*220];
int a[N],w[N],c[N],q[N*220],F[N*220],L[N*220];
int n,m,mc,mx,D,cnt;
int f[N][N];
map<int,map<int,int> > d;
void bfs()
{int h=0,t=1;F[t]=1,L[t]=0,d[1][0]=q[t]=1;//赋初值,F为讽刺能力,L为等级while( h<t ){h++;int tmp=d[F[h]][L[h]];if( tmp>=D )   continue ;int x=F[h],y=L[h];if( !d[x][y+1] ){F[++t]=x,L[t]=y+1;d[x][y+1]=q[t]=tmp+1;}if( (Lint)x*(Lint)y<=1ll*mx && !d[x*y][y] ){F[++t]=x*y,L[t]=y;d[x*y][y]=q[t]=tmp+1;}}p[++cnt]=(node){ 0,0 };for(int i=1;i<=t;i++)   p[++cnt]=(node){ q[i],F[i] };sort( p+1,p+cnt+1 );
}
bool judge(int x)
{int j=1,v=INF;for(int i=cnt; i ;i--){while( p[i].f+p[j].f<=x && i>j )   v=min( v,p[j].d-p[j].f ),j++;if( D-x>=v+p[i].d-p[i].f )   return 1;}return 0;
}
int main()
{freopen("dalao.in","r",stdin);freopen("dalao.out","w",stdout);scanf("%d%d%d",&n,&m,&mc);for(int i=1;i<=n;i++)   scanf("%d",&a[i]);for(int i=1;i<=n;i++)   scanf("%d",&w[i]);for(int i=1;i<=m;i++){scanf("%d",&c[i]);mx=max( mx,c[i] );}memset( f,-1,sizeof f );f[0][mc]=0;for(int i=1,x;i<=n;i++)for(int j=a[i];j<=mc;j++){f[i][j-a[i]]=max( f[i][j-a[i]],f[i-1][j]+1 );x=min( mc,j-a[i]+w[i] );f[i][x]=max( f[i][x],f[i-1][j] );}for(int i=0;i<=n;i++)   for(int j=0;j<=mc;j++)   D=max( D,f[i][j] );bfs();for(int i=1;i<=m;i++)if( judge( c[i] ) )   printf("1\n");else   printf("0\n");return 0;
}

【HNOI2017】大佬-dalao相关推荐

  1. [AH/HNOI2017]大佬

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

  2. [AH2017/HNOI2017] 大佬

    大佬每天给出的伤害是固有的,设dp[i,j]表述使得前i天结束时我的自信为j最少做水题的天数.D=max(i-dp[i,j])就是总共拿来给伤害的最大天数.打伤害一类是固定的伤害1,一类是积累伤害打出 ...

  3. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  4. 退役前的最后的做题记录upd:2019.04.04

    考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...

  5. # HNOI2012 ~ HNOI2018 题解

    HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...

  6. AC日记——「HNOI2017」礼物 LiBreOJ 2020

    #2020. 「HNOI2017」礼物 思路: A题进程: 一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft ...

  7. 大数据挑战赛(大佬篇)

    相对于我的杂乱无章,dalao们做比赛时将每个环节分文件处理,这样好看也好改,分别分为以下几个步骤: 1.数据处理 2.特征选择 3.调参 4.模型融合 5.过拟合的处理 在做特征提取时,可以提取得到 ...

  8. My dear dalao please daidai wo。

    文/高哥 后来很少水群了,因为大佬太多了.前几天加了个技术群,本来进去是交流技术的,结果进去都特么是谈炒股的,我观察了下,估计有不少人会入坑.韭菜被割了一茬又一茬,还是嘴里不停喊着"My d ...

  9. dalao自动报表邮件2.0

    经过昨天的修改优化后,dalao收到了不是"木马"的邮件,欣慰地点了点头,"不错,不错,这几张表设计的简洁明了,看着有货!不过呀,,,这些表的数据太多了一点,十几天的数据 ...

最新文章

  1. Vivado IP的两种综合方式:Global 和 Out-Of-Context
  2. 纸质图书与电子图书的营销策略研究
  3. 常用LINQ关键字用法汇总
  4. mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?
  5. 序列化(串行化)- 使用BinaryFormatter进行序列化
  6. mysql redis hbase_10分钟梳理MySQL核心知识点
  7. java求梯形面积程序_Java初级应用,计算关于梯形跟圆形的面积。该程序中有3个类:Lader、Circle和主类Test。...
  8. mysql update 批量修改数据_MySQL 中实现数据的批量修改
  9. redis---队列的操作
  10. JS中style属性
  11. matplotlib易混概念理解与画图详解
  12. PCL1.8.0 error C4996: 'pcl::SAC_SAMPLE_SIZE'编译错误
  13. NBA比赛数据table表格
  14. java分页前端怎么实现_JavaWeb前端分页显示方法
  15. 嵌入式软件开发工程师未来的薪资待遇是什么情况
  16. 《微微一笑很倾城》中肖奈大神说的平方根倒数速算法是什么鬼?三十分钟理解!...
  17. 宿舍的呼噜神,快看过来,我这里有药!!!
  18. Windows下通过远程桌面连接向远程电脑传输文件
  19. 我关注的一些技术微信公众号
  20. 世界人工智能大会倒计时30天,这些亮点不容错过

热门文章

  1. 扫雷算法实现(简易版,只能在CMD指令中玩)
  2. 正睿OIday4总结
  3. matlab如何求反渐开线函数,inv函数(inv函数查询表)
  4. PHP开发微信商家转账到零钱接口
  5. 一起来云赏月把!three.js实现vr赏月!
  6. 画出一阶系统单位阶跃响应、单位脉冲响应、单位斜坡响应曲线
  7. 多重共线性的诊断与对策
  8. 我TM用了假的PanDownload吧!
  9. 2021年电工(中级)考试资料及电工(中级)考试试题
  10. 掌握Android图像显示原理(上)