搜索的最广泛应用优化——剪枝

这道题的dp和贪心都是无正确性的,所以,搜~~~~~~~

搜的时候你发现不剪枝极容易被卡掉(然而良心NOIP没有这么做,不剪枝仍然飞快),所以我们需要一些玄学的剪枝最常见的有俩:I.我们一层一层累加被感染人群若当前被感染人群已经大于已知解那么就舍去。 II.之后的每一层如果都取最大仍不如已知解优则舍去。

玄学.........

#include <cstdio>
#include <vector>
#include <algorithm>
#define MAXN 310
namespace pre{
inline void read(int &sum){
register char ch=getchar();
for(sum=;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';sum=(sum<<)+(sum<<)+ch-'',ch=getchar());
}
inline int Max(int x,int y){
return x>y?x:y;
}
int ans;
}
namespace tree{
struct tree{
int to,next;
}c[MAXN<<];
int head[MAXN],t,size[MAXN],f[MAXN],Deep_Max,Max[MAXN];
bool did[MAXN];
std::vector<int> floor[MAXN];
inline int comp(int x,int y){
return size[x]>size[y];
}
inline void add(int x,int y){
c[++t].to=y;
c[t].next=head[x];
head[x]=t;
}
inline void dfs(int x,int fa,int deep){
Deep_Max=pre::Max(deep,Deep_Max);
size[x]=;
f[x]=fa;
floor[deep].push_back(x);
for(int i=head[x];i;i=c[i].next)
if(c[i].to!=fa)
dfs(c[i].to,x,deep+),size[x]+=size[c[i].to];
}
inline void Dfs(int deep,int ans){
//if(ans+Max[deep+1]<=pre::ans)return;
pre::ans=pre::Max(ans,pre::ans);
if(deep==Deep_Max)return;
for(int i=;i<floor[deep+].size();i++)
if(did[f[floor[deep+][i]]])
did[floor[deep+][i]]=;
for(int i=;i<floor[deep+].size();i++)
if(did[floor[deep+][i]]==){
did[floor[deep+][i]]=;
Dfs(deep+,ans+size[floor[deep+][i]]);
did[floor[deep+][i]]=;
}
for(int i=;i<floor[deep+].size();i++)
if(did[f[floor[deep+][i]]])
did[floor[deep+][i]]=;
}
}
namespace mid{
int n,m;
inline void Init(){
using pre :: read;
using tree :: add;
read(n),read(m);
for(int i=,a,b;i<=m;i++)
read(a),read(b),add(a,b),add(b,a);
tree :: dfs(,,);
}
inline void Work(){
using namespace tree;
for(int i=Deep_Max;i>;i--){
std::sort(floor[i].begin(),floor[i].end(),comp);
Max[i]=Max[i+]+size[floor[i][]];
}
Dfs(,);
printf("%d",n-pre::ans);
}
}
int main(){
freopen("epidemic.in","r",stdin);
freopen("epidemic.out","w",stdout);
mid :: Init();
mid :: Work();
return ;
}

[NOIP2003] 传染病控制 搜索+剪枝的更多相关文章

  1. NOIP2015 斗地主(搜索+剪枝)

    4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 270  Solved: 192[Submit][Status] ...

  2. hdu 5469 Antonidas(树的分治+字符串hashOR搜索+剪枝)

    题目链接:hdu 5469 Antonidas 题意: 给你一颗树,每个节点有一个字符,现在给你一个字符串S,问你是否能在树上找到两个节点u,v,使得u到v的最短路径构成的字符串恰好为S. 题解: 这 ...

  3. hdu 5887 搜索+剪枝

    Herbs Gathering Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. hdu 5113(2014北京—搜索+剪枝)

    题意:有N*M的棋盘,用K种颜色去染,要求相邻块不能同色.已知每种颜色要染的块数,问能不能染,如果能,输出任一种染法. 最开始dfs失败了- -,优先搜索一行,搜完后进入下一列,超时.本来以为搜索不行 ...

  5. luogu 1731 搜索剪枝好题

    搜索剪枝这个东西真的是骗分利器,然鹅我这方面菜的不行,所以搜索数学dp三方面是真的应该好好训练一下 一本通的确该认真的刷嗯 #include<bits/stdc++.h> using na ...

  6. 搜索+剪枝——POJ 1011 Sticks

    搜索+剪枝--POJ 1011 Sticks 博客分类: 算法 非常经典的搜索题目,第一次做还是暑假集训的时候,前天又把它翻了出来 本来是想找点手感的,不想在原先思路的基础上,竟把它做出来了而且还是0 ...

  7. [HNOI2002]彩票 (搜索+剪枝)

    题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...

  8. luogu P3393 逃离僵尸岛-搜索剪枝+spfa

    P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...

  9. [luogu 1092] 虫食算 (暴力搜索剪枝)

    传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...

随机推荐

  1. mac 安装requests

    首先mac上已经安装了python,我的是python2x,我自己安装了python3,python3安装requests,控制台,输入,pip3 install requests 下面就已经安装完成 ...

  2. java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署

    使用ant可以轻松的将一个项目分离代码,直接打包成不同需求的tar.gz包使用 1.build.properties (属性) version.num=1.0 #版本信息 2.build.xml (a ...

  3. HBase Scan,Get用法

    Scan,get用法 1. get help帮助信息 从下列get用法信息可以看出 get 后面可以跟table表名,rowkey,以及column,value.但是如果想通过get直接获取一个表中的 ...

  4. kafka集群部署文档(转载)

    原文链接:http://www.cnblogs.com/luotianshuai/p/5206662.html Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候 ...

  5. 20145202马超《网络对抗》Exp3免杀 进阶

    木马化正常软件,如通过改变机器指令.实现可免杀免防火墙提示的后门. 继上次实验3所做的代码在主函数里面加上一行调用就可以 改各种属性,这里我参考了郝浩同学的博客 最后我还是遇到了问题 后来发现虽然有那 ...

  6. Linux(centos)搭建SVN服务器完美方案及遇到的问题--费元星站长

    QQ:971751392 (欢迎交流) linux搭建SVN服务器 安装步骤如下: 1.yum install subversion   2.输入rpm -ql subversion查看安装位置,如下 ...

  7. ActiveMQ测试实例

    ActiveMQ的安装与启动 1 下载ActiveMQ:http://activemq.apache.org/download.html 2 下载后解压到任意文件夹,解压后文件夹内的目录为: 3 进入 ...

  8. html简单的分享功能

    超级简单的分享. 包括:QQ.QQ空间.新浪微博.腾讯微博,微信(只是一个二维码): 1.首先是html代码: (前端我并不太会,一直用的都是bootstrap) <div class=&quo ...

  9. 阿牛的EOF牛肉串(递推)

    阿牛的EOF牛肉串 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  10. 虚拟现实-VR-UE4-编译源代码后,无法运行

    情况是这个样,在一开始我编译后,是可以运行,但是当我重新做系统后,再次运行时,每次都是到加载的18%的时候提示了如下错误 具体解决方法还没有找到,正在努力找中.........,会后续更新 同时希望有 ...