loj2021 「HNOI2017」大佬
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;
typedef pair<int,int> par;
int n, m, mc, maxDay, maxLife, a[105], b[105], dp[105][105], c[105], cnt;
map<par,bool> mp;
par q[5000005];
struct Node{
	int x, y, z;
};
queue<Node> d;
void bfs(){
	d.push((Node){1, 1, 0});//用一天能打出来1的成绩。如果不打,那等级就是0
	while(!d.empty()){
		Node x=d.front();
		d.pop();
		if(x.x<maxDay){
			d.push((Node){x.x+1, x.y, x.z+1});
			if(x.z>1 && (ll)x.y*x.z<=maxLife && !mp.count(make_pair(x.y*x.z, x.z))){
				Node t=(Node){x.x+1, x.y*x.z, x.z};
				q[++cnt] = make_pair(t.y, t.x);
				mp[make_pair(t.y, t.z)] = true;
				d.push(t);
			}
		}
	}
}
int main(){
	cin>>n>>m>>mc;
	for(int i=1; i<=n; i++)
		scanf("%d", &a[i]);
	for(int i=1; i<=n; i++)
		scanf("%d", &b[i]);
	for(int i=1; i<=m; i++){
		scanf("%d", &c[i]);
		maxLife = max(maxLife, c[i]);
	}
	memset(dp, 0xcf, sizeof(dp));
	dp[0][mc] = 0;
	for(int i=1; i<=n; i++)
		for(int j=0; j<=mc-a[i]; j++){
			dp[i][j] = max(dp[i-1][j+a[i]]+1, dp[i][j]);
			dp[i][min(j+b[i], mc)] = max(dp[i-1][j+a[i]], dp[i][min(j+b[i], mc)]);
		}
	for(int i=1; i<=n; i++)
		for(int j=0; j<=mc; j++)
			maxDay = max(maxDay, dp[i][j]);
	bfs();
	sort(q+1, q+1+cnt);
	for(int i=1; i<=m; i++){
		if(c[i]<=maxDay){
			printf("1\n");
			continue;
		}
		// cout<<"FaQ\n";
		int j=1, maxn=-0x3f3f3f3f;
		bool flag=false;
		for(int k=cnt; k>=1; k--){
			while(j<=cnt && q[k].first+q[j].first<=c[i]){
				maxn = max(maxn, q[j].first-q[j].second);
				j++;
			}
			if(maxn+maxDay+q[k].first-q[k].second>=c[i]){
				flag = true;
				break;
			}
			if(q[k].first<=c[i] && maxDay-q[k].second+q[k].first>=c[i]){
				flag = true;
				break;
			}
		}
		if(flag)	printf("1\n");
		else	printf("0\n");
	}
	return 0;
}
												
											loj2021 「HNOI2017」大佬的更多相关文章
- loj #2021. 「AHOI / HNOI2017」大佬
		
#2021. 「AHOI / HNOI2017」大佬 题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢 ...
 - AC日记——「HNOI2017」礼物 LiBreOJ 2020
		
#2020. 「HNOI2017」礼物 思路: A题进程: 一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft ...
 - AC日记——「HNOI2017」单旋 LiBreOJ 2018
		
#2018. 「HNOI2017」单旋 思路: set+线段树: 代码: #include <bits/stdc++.h> using namespace std; #define max ...
 - loj2020 「HNOI2017」礼物
		
所有的下标从 \(0\) 开始. 考虑枚举 \(C\) (第一个加上负的等于第二个加上其绝对值)和第二个手链的偏移量 \(p\).答案就是 \[\sum_{i=0}^{n-1}(x_i+C-y_{(i ...
 - loj#2020 「AHOI / HNOI2017」礼物 ntt
		
loj#2020 「AHOI / HNOI2017」礼物 链接 bzoj没\(letex\),差评 loj luogu 思路 最小化\(\sum\limits_1^n(a_i-b_i)^2\) 设改变 ...
 - 「AHOI / HNOI2017」单旋
		
「AHOI / HNOI2017」单旋 题目链接 H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据结构,因为代码好写,功能多,效率高,掌握这种 ...
 - 「AHOI / HNOI2017」影魔
		
「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...
 - loj #2023. 「AHOI / HNOI2017」抛硬币
		
#2023. 「AHOI / HNOI2017」抛硬币 题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个 ...
 - [LOJ 2022]「AHOI / HNOI2017」队长快跑
		
[LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...
 
随机推荐
- 关于验证码在IE中不刷新的快速解决方法
			
今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码 ...
 - python2含有中文路径报错解决办法[\xe4\xbf\xa1\xe6\x81\xaf]
			
如图所示 百度的解决办法大多数是针对python3版本的,在脚本开头加# -*- coding:utf-8 -*-,但是python2版本加了编码格式,还是报错,具体解决办法是:path =unico ...
 - hiho一下 第四十五周 博弈游戏·Nim游戏·二(转成NIm)
			
Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N.现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以随自己的意愿 ...
 - 关于日志造成的频繁的IO
			
记录日志可能消耗大量的IO [Q] 每次写入都是一个IO操作 即使是同一个文件 两次写入也要打开两次IO操作 [F] 设想有这样一个扩展 把php中要记录的日志 用文件名 和 内容的方式记录在内存中 ...
 - Beta冲刺(周五)
			
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...
 - Ubuntu 下安装WPS
			
1.先到wps官网上下载wps的deb包. http://www.wps.cn/product/ 2.我使用的64位的,所以得安装32位兼容包 sudo apt-get install ia32-li ...
 - Bootstrap历练实例:默认的媒体对象
			
Bootstrap 多媒体对象(Media Object) 本章我们将讲解 Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论), ...
 - vs 2012打开vs2013的sln
			
Project -> Properties -> General -> Platform Toolset (as IInspectable correctly commented)
 - 自定义AlertView的方法和改变Alert的弹出位置以及其宽度
			
此方法在IOS7中不适合 一.自定义AlertView 1.首先新建一个OC类继承与AlertView. 2.然后再.m中添加方法 - (void)layoutSubviews 可以再这个方法里边改变 ...
 - 简单的Datable转List方法
			
public static class DataTableUtils<T> where T : new() { public static List<T> ConvertToM ...