被一道简单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的更多相关文章

  1. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

  2. 洛谷P3724 大佬 [AH2017/HNOI2017] dp+bfs

    正解:dp+bfs 解题报告: 传送门! 这题看起来很复杂的样子其实真的很复杂 但是仔细看一下题目,会发现其实操作只有两个目的嘛,一个是保证自己不死,一个是让对手减血 而且保证自己不死只有一种操作 而 ...

  3. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

  4. 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 ...

  5. BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs

    BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...

  6. 【BZOJ】1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(dp/-bfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1616 我觉得bfs是可过的,但是交bfs上去是wa? 然后没办法看dp,原来这bfs能和dp联系在一 ...

  7. bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】

    因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...

  8. 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 ...

  9. FZU 2092 收集水晶 dp+bfs

    定义dp[t][x1][y1][x2][y2]为在t时刻,人走到x1,y1,影子走到x2,y2所获得最大价值 最终就是所有的dp[max][..][..][..][..]的最大值 然后递推也很自然,枚 ...

随机推荐

  1. CCF201604-1 折点计数 java(100分)

    试题编号: 201604-1 试题名称: 折点计数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长,而后一天 ...

  2. 利用postman进行接口测试并发送带cookie请求的方法

    做web测试的基本上都用用到postman去做一些接口测试,比如测试接口的访问权限,对于某些接口用户A可以访问,用户B不能访问:比如有时需要读取文件的数据.在postman上要实现这样测试,我们就必要 ...

  3. java8 lambda 函数式编程

    package com.atguigu.java8; import java.util.ArrayList; import java.util.Comparator; import java.util ...

  4. Maven_自动化构建和构建环节

    [构建过程的几个主要环节] ①清理:删除以前的编译结果,为重新编译做好准备. ②编译:将 Java 源程序编译为字节码文件. ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性 ...

  5. 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】

    原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...

  6. mysql中有关树的函数

    用mysql客户端在库中建立函数queryOrgChildren(查找子节点)和queryOrgLevel(查看当前节点在树中的级别):DROP FUNCTION IF EXISTS `queryOr ...

  7. Eclipse查看方法/类调用的方法

    1.(首推)双击选中该方法/类,[Ctrl]+[Alt]+[H](Open Call Hierarchy) 2.(次推)选中该方法/类,[Ctrl]+[Shift]+[G](References) 3 ...

  8. 从头认识java-15.1 填充容器(1)-利用Collection构造器的方式

    这一章节我们来介绍一下填充容器. 就像数组一样,Arrays.fill是填充方法,在容器里面也有. 1.Collections.nCopies 这种方法是生成某种类型多少个对象,然后我们能够把他放到容 ...

  9. jvm 堆内存 栈内存 大小设置

                        4种方式配置不同作用域的jvm的堆栈内存. 1.Eclise 中设置jvm内存: 改动eclipse的配置文件,对全部project都起作用 改动eclipse ...

  10. logistic regression教程1

    实现线性拟合 我们用python2.7实现上一篇的推导结果.请先安装python matplotlib包和numpy包. 具体代码如下: #!/usr/bin/env python #! -*- co ...