BZOJ 4828 DP+BFS
被一道简单BFS坑了这么长时间我也是hhh了
//By SiriusRen
#include <bits/stdc++.h>
using namespace std;
struct Node{int d,x,l;Node(int D=,int X=,int L=):d(D),x(X),l(L){}};
int n,m,mc,xx,a[],w[],maxx,f[][],top;
set<int>s[];pair<int,int>p[];
void BFS(){
queue<Node>q;q.push(Node(,,));
while(!q.empty()){
Node t=q.front();q.pop();
if(t.d<maxx){
q.push(Node(t.d+,t.x,t.l+));
if(t.l>&&t.x<=/t.l&&s[t.l].find(t.x*t.l)==s[t.l].end())
p[++top]=make_pair(t.x*t.l,t.d+),
s[t.l].insert(t.x*t.l),
q.push(Node(t.d+,t.x*t.l,t.l));
}
}
}
int main(){
memset(f,0xcf,sizeof(f));
scanf("%d%d%d",&n,&m,&mc),f[][mc]=;
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&w[i]);
for(int i=;i<n;i++)
for(int j=;j<=mc;j++){
if(j-a[i+]>=)
f[i+][j-a[i+]]=max(f[i+][j-a[i+]],f[i][j]+),
f[i+][min(mc,j-a[i+]+w[i+])]=max(f[i+][min(mc,j-a[i+]+w[i+])],f[i][j]);
maxx=max(maxx,f[i][j]);
}
BFS(),sort(p+,p++top);
for(int i=;i<=m;i++){
scanf("%d",&xx);
int mn=0x3f3f3f3f;
if(xx<=maxx){puts("");goto ed2;}
for(int j=top,k=;j;--j)
{
while(k<top&&p[k+].first+p[j].first<=xx) ++k,mn=min(mn,p[k].second-p[k].first);
if(mn+p[j].second-p[j].first+xx<=maxx){puts("");goto ed2;}
if(p[j].first<=xx&&p[j].second+xx-p[j].first<=maxx){puts("");goto ed2;}
}
puts("");
ed2:;
}
}
BZOJ 4828 DP+BFS的更多相关文章
- hdu 3247 AC自动+状压dp+bfs处理
Resource Archiver Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Ot ...
- 洛谷P3724 大佬 [AH2017/HNOI2017] dp+bfs
正解:dp+bfs 解题报告: 传送门! 这题看起来很复杂的样子其实真的很复杂 但是仔细看一下题目,会发现其实操作只有两个目的嘛,一个是保证自己不死,一个是让对手减血 而且保证自己不死只有一种操作 而 ...
- bzoj 3622 DP + 容斥
LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...
- BZOJ_3049_[Usaco2013 Jan]Island Travels _状压DP+BFS
BZOJ_3049_[Usaco2013 Jan]Island Travels _状压DP+BFS Description Farmer John has taken the cows to a va ...
- BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs
BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...
- 【BZOJ】1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(dp/-bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1616 我觉得bfs是可过的,但是交bfs上去是wa? 然后没办法看dp,原来这bfs能和dp联系在一 ...
- bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】
因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...
- Robots on a grid(DP+bfs())
链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=25585 Current Server Time: 2013-08-27 20:42:26 Ro ...
- FZU 2092 收集水晶 dp+bfs
定义dp[t][x1][y1][x2][y2]为在t时刻,人走到x1,y1,影子走到x2,y2所获得最大价值 最终就是所有的dp[max][..][..][..][..]的最大值 然后递推也很自然,枚 ...
随机推荐
- python之cookbook-day01
第一章:数据结构和算法 1.1 解压序列赋值给多个变量 >>> p = (4, 5) >>> x, y = p >>> x 4 >>& ...
- hdu 1527威佐夫博弈
//http://www.cnblogs.com/bo-tao/archive/2012/04/16/2452633.html #include<stdio.h> #include< ...
- 选择数字(codevs 3327)
题目描述 Description 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入描述 Input De ...
- Docker website
https://github.com/docker/labs/ (nguo123gmail Cooooos123!) Docker Tutorials and Labs At this time ...
- kendo grid 点击更新没有反映
因为没有在dataSource上写schema schema: { model: { id: "DeptId", fields: { CompanyId: { editable: ...
- 几道splay
hdu 1890 题意:每次将第i位到第i小数字所在的位置之间的位置翻转,每次输出第i小数字所在的位置 分析: 简单的splay处理区间翻转问题 有三点需要注意: 1.区间是1~n+2 2.此题里的查 ...
- Drools等规则引擎技术对比分析
项目中需要设计开发一个规则引擎服务,于是调研了业界常用的规则引擎. 常见的规则引擎如下: Ilog JRules 是最有名的商用BRMS: Drools 是最活跃的开源规则引擎: Jess 是Clip ...
- I/O 模型及其设计模式
来源:伯乐在线 - 咸菜 链接:http://blog.jobbole.com/104638/ 前言 I/O在软件开发中的重要性无需多言,无论是在操作系统.网络协议.DBMS这种底层支撑软件还是在移动 ...
- eclipse 安装egit插件
一.Eclipse上安装GIT插件EGit Eclipse的版本eclipse-java-helios-SR2-win32.zip(在Eclipse3.3版本找不到对应的 EGit插件,无法安装) E ...
- 【c++】简单的string类的几个基本函数
// string的几个基本函数的实现 #include <iostream> #include <assert.h> #include <string.h> us ...