luogu 黑题 P3724大佬
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define RG register
#define MAX 111
#define ft(i) (zt[i].first)
#define sd(i) (zt[i].second)
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int f[MAX][MAX];
int n,m,MC,Day,a[MAX],w[MAX],C[MAX];
struct Node{int i,F,L;};
pair<int,int> zt[1111111];
int tot,mx;
int MOD=1000007;
struct Hash
{
struct Line{int x,y,next;}e[1111111];
int h[1000007+1],cnt;
void Add(int x,int y)
{
int pos=(1ll*x*101+y)%MOD;
e[++cnt]=(Line){x,y,h[pos]};h[pos]=cnt;
}
bool Query(int x,int y)
{
int pos=(1ll*x*101+y)%MOD;
for(int i=h[pos];i;i=e[i].next)
if(e[i].x==x&&e[i].y==y)return true;
return false;
}
}Map;
void BFS()
{
queue<Node> Q;Q.push((Node){1,1,0});
while(!Q.empty())
{
Node u=Q.front();Q.pop();
if(u.i==Day)continue;
Q.push((Node){u.i+1,u.F,u.L+1});
if(u.L>1&&1ll*u.F*u.L<=1ll*mx&&!Map.Query(u.F*u.L,u.i+1))
{
Q.push((Node){u.i+1,u.F*u.L,u.L});
zt[++tot]=make_pair(u.F*u.L,u.i+1);
Map.Add(u.F*u.L,u.i+1);
}
}
}
int main()
{
n=read();m=read();MC=read();
for(int i=1;i<=n;++i)a[i]=read();
for(int i=1;i<=n;++i)w[i]=read();
for(int i=1;i<=m;++i)mx=max(mx,C[i]=read());
for(int i=1;i<=n;++i)
for(int j=a[i];j<=MC;++j)
{
f[i][j-a[i]]=max(f[i-1][j]+1,f[i][j-a[i]]);
f[i][min(j-a[i]+w[i],MC)]=max(f[i-1][j],f[i][min(j-a[i]+w[i],MC)]);
}
for(int i=1;i<=n;++i)
for(int j=1;j<=MC;++j)Day=max(Day,f[i][j]);
BFS();sort(&zt[1],&zt[tot+1]);
for(int i=1;i<=m;++i)
{
if(C[i]<=Day){puts("1");continue;}
bool fl=false;int mm=1e9;
for(int j=tot,k=1;j;--j)
{
while(k<tot&&ft(k)+ft(j)<=C[i])
mm=min(mm,sd(k)-ft(k)),++k;
if(mm+C[i]-ft(j)<=Day-sd(j)){fl=true;break;}
if(ft(j)<=C[i]&&C[i]-ft(j)<=Day-sd(j)){fl=true;break;}
}
fl?puts("1"):puts("0");
}
return 0;
}
luogu 黑题 P3724大佬的更多相关文章
- 洛谷P3724 大佬 [AH2017/HNOI2017] dp+bfs
正解:dp+bfs 解题报告: 传送门! 这题看起来很复杂的样子其实真的很复杂 但是仔细看一下题目,会发现其实操作只有两个目的嘛,一个是保证自己不死,一个是让对手减血 而且保证自己不死只有一种操作 而 ...
- 【BZOJ5212】[ZJOI2018] 历史(LCT大黑题)
点此看题面 大致题意: 给定一棵树每个节点\(Access\)的次数,求最大虚实链切换次数,带修改. 什么是\(Access\)? 推荐你先去学一学\(LCT\)吧. 初始化(不带修改的做法) 首先考 ...
- P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)
P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...
- Luogu 520题纪念
一入OI深似海......
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
- Luogu P4211 [LNOI2014]LCA
我去这道题的Luogu评级是假的吧,这都算黑题. 我们首先考虑把操作离线不强制在线的题目离线一下一般都要方便些 考虑差分,我们用\(f(x)\)表示\([1,x]\)之间的点与\(z\)的答案,那么显 ...
- luogu P4168 [Violet]蒲公英
嘟嘟嘟 分块经典题竟然是一道黑题…… 分块求区间众数的大体思想是对于询问区间[L, R],预处理出这中间的整块的众数,然后统计两边零散的数在[L, R]中出现的次数,最后取出现次数最多且最小的数. 因 ...
- BZOJ 刷题总结(持续更新)
本篇博客按照题号排序(带*为推荐题目) 1008 [HNOI2008]越狱 很经典的题了..龟速乘,龟速幂裸题,, 1010 [HNOI2008]玩具装箱toy* 斜率优化 基本算是裸题. 1012 ...
- hyfhaha大事记——luogu
成就墙 AK CSP-J 初赛 AK CSP-J 复赛 CSP- J 一等奖 CSP-S 一等奖 大事记 2017-09-20 13:54 注册洛谷账号 之后洛谷一直处于沉沦状态 2018 2018- ...
随机推荐
- HGOI 20190816 省常中互测8
Problem A 有两条以(0,0)为端点,分别经过(a,b),(c,d)的射线,你要求出夹在两条射线中间,且距离(0,0)最近的点(x,y) 对于$100\%$的数据满足$1 \leq T \l ...
- 【清华集训2016】Alice和Bob又在玩游戏
不难的题目.因为SG性质,所以只需要对一棵树求出. 然后如果发现从上往下DP不太行,所以从下往上DP. 考虑一个点对子树的合并,考虑下一个删的点在哪一个子树,那么剩下的状态实际上就是把一个子树所有能达 ...
- ServletConfig接口
ServletConfig接口 Servlet容器初始化Servlet对象时会为Servlet创建一个ServletConfig对象,在ServletConfig对象中包含了Servlet的初始化参数 ...
- postman教学视频百度网盘转载分享
百度云盘教学视频分享:https://pan.baidu.com/s/1r_e08FOkvQBZcC5-vU5M4w postman官网及下载地址:https://www.getpostman.com ...
- js手写笔记
1.document.write(); 2.document.getElementById("").style.color="red";//sytle.font ...
- @RequestHeader和@CookieValue的使用
/** * 了解: * * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam */ @RequestMapping("/testCookieVal ...
- leetcode 289生命游戏
class Solution { public: vector<vector<,},{,},{,},{,-},{,-},{-,-},{-,},{-,}}; void gameOfLife( ...
- SparseLDA算法
2 SparseLDA算法 本章将介绍一种Gibbs Sampling算法的加速算法——SparseLDA [9],它主要利用LDA 模型的稀疏性,来达到加速以及节省内存的目的,是一种精确算法(没有近 ...
- django 通过模型类操作数据表(基础增删改查)
进入项目shell的命令: python manage.py shell 以下为在相互shell终端中演示的例子: 首先导入模型类:(from 应用名.models import 类名) from b ...
- 如何实现在Eclipse导入MySQL驱动包
1 右键项目->Properties->Java Build Path->Libraries->Add External JARs...->mysql-connector ...