思路:

先把能选的路线都预处理出来

按照能停的车的多少排个序 (剪枝1)

搜搜搜

如果当前剩的车÷当前能停车的多少+deep>=ans剪掉 (剪枝2)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,vis[60],xx,cnt,ans=17;
struct Route{int start,gap,all;}route[1005];
bool check(int start,int gap){
for(int i=start;i<60;i+=gap)
if(!vis[i])return 0;
return 1;
}
bool cmp(Route a,Route b){return a.all>b.all;}
void dfs(int x,int deep,int remain){
if(remain/route[x].all+deep>=ans)return;
if(!remain){ans=min(ans,deep);return;}
for(int i=x;i<=cnt;i++){
if(check(route[i].start,route[i].gap)){
for(int j=route[i].start;j<60;j+=route[i].gap)
vis[j]--;
dfs(i,deep+1,remain-route[i].all);
for(int j=route[i].start;j<60;j+=route[i].gap)
vis[j]++;
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&xx),vis[xx]++;
for(int i=0;i<30;i++)
for(int j=i+1;i+j<60;j++)
if(check(i,j)){
route[++cnt].gap=j,route[cnt].start=i;
for(int k=route[cnt].start;k<60;k+=route[cnt].gap)route[cnt].all++;
}
sort(route+1,route+1+cnt,cmp);
dfs(1,0,n);
printf("%d\n",ans);
}

POJ 1167 The Buses 暴搜+剪枝的更多相关文章

  1. hdu 4400 离散化+二分+BFS(暴搜剪枝还超时的时候可以借鉴一下)

    Mines Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  2. 紫书 习题7-14 UVa 307(暴搜+剪枝)

    这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...

  3. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)

    题意:       给你两个数n,k问你是否怎在这样一个序列:      (1)这个序列有k个正整数,且不重复.      (2)这k个数的和是n.      (3)其中有k-1个数的和是一个平方数. ...

  4. 洛谷 1312 Mayan游戏——暴搜+剪枝

    题目:https://www.luogu.org/problemnew/show/P1312 自己写了很久.又T又WA的. 发现对题理解有误.改完后应该只有T了,但还是T的. 自己写了许多剪枝,很鸡肋 ...

  5. CF1340B Nastya and Scoreboard(暴搜剪枝/dp)

    Question 一个n个数码位的分数板,每一个数码位都是一个七段数码管,现在给出每个数码位的显示情况,问再点亮k段数码管的话能显示的最大的数是多少,如果不能构成一串数字,就输出-1 Solution ...

  6. POJ 1166 The Clocks (暴搜)

    发现对这样的模拟题根本没啥思路了,本来准备用bfs的.可是结果超时了,这是參考别的人代码写的: #include <stdio.h> #include <iostream> # ...

  7. poj 1543 Perfect Cubes (暴搜)

    Perfect Cubes Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15302   Accepted: 7936 De ...

  8. POJ 2132 暴搜OR Floyd

    题意: 给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少. 一些经验(WA/TLE的经验): 1. 无脑暴搜 是会TLE的--. 2. 关于精度 dyf神牛说了:long l ...

  9. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

随机推荐

  1. C++容器(二):关联容器简介

    关联容器(associative container)与顺序容器的本质区别在于:关联容器通过键(Key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素.虽然,关联容器的大部分行为 ...

  2. SLF4j 和 common-logging

    http://blog.csdn.net/xydds/article/details/51606010

  3. hdu5391Zball in Tina Town

    //求(n-1)!%n //n 为合数,答案为0,n为素数 . 威尔逊定理可得 //判定一个自然数是否为素数的充分必要条件. 即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ) ...

  4. LightOJ Trailing Zeroes (III) 1138【二分搜索+阶乘分解】

    1138 - Trailing Zeroes (III) PDF (English) problem=1138" style="color:rgb(79,107,114)" ...

  5. echarts 地图 动态 展示 结合css+js

    echarts地图展示功能非常强大,官网上静态展示的样例非常多了,动态的资料少.研究了下.我眼下实现的通过ajax从server获取数据动态展示地图. 另外,我们有时候希望在地图之上做些自己定义的东西 ...

  6. cocos2d-x3.0 关于CCAnimate 的一些资料

    CCAnimate 能够理解为一个动画播放器,  CCAnimation 能够理解为一个动画内容.它须要播放器才干播放动画. 与它们相关的一些类例如以下 SpriteFrameCache  精灵帧缓存 ...

  7. node03--http

    form.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 疯狂java讲义之数据类型与运算符

    Java是一门强类型语言 所有变量必须先声明.后使用 指定类型的变量只能接受类型匹配的值 注释 @author 作者 @version 版本 @param 方法参数 @return 返回值 标识符与关 ...

  9. 可变对象 vs 不可变对象(Python)

    Python 在 heap 中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如 list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string ...

  10. isInstanceOf,asInstanceOf,classOf[T]

    一.scala中把classOf[T]看成Java里的T.class, obj.isInstanceOf[T]看成 obj instanceof T, obj.asInstanceOf[T]看成(T) ...