这题主要是注意好限定的条件

条件1:每个公交车都至少要到达两次

条件2:公交车相同时间和相同间隔是属于两种车辆

条件3:不同的车可能到达时间相同

上述都是深搜的重要条件:

 #include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using std::sort;
int const N = ;
struct node
{
int begin,interval,Count;
bool operator <(const node &tmp)const
{
return Count>tmp.Count;
}
}bus[N];
int sum[N],n,val,cnt,ans;
int Min(int a,int b)
{
return a<b?a:b;
}
bool judge(int b,int inter)
{
for(int i=b;i<=;i+=inter)
{
if(sum[i]==)
return false;
}
return true;
}
void dfs(int t,int num)
{
if(n<=)
{
ans=Min(num,ans);
return ;
}
for(int i=t;i<cnt;i++)
{
if(num+(n/bus[i].Count)>=ans)return ;
if(judge(bus[i].begin,bus[i].interval))
{
for(int j=bus[i].begin;j<=;j+=bus[i].interval)
{
sum[j]--;
n--;
}
dfs(i,num+);
for(int j=bus[i].begin;j<=;j+=bus[i].interval)
{
sum[j]++;
n++;
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
memset(sum,,sizeof(sum));
cnt=;
for(int i=;i<n;i++)
{
scanf("%d",&val);
sum[val]++;
}
for(int i=;i<=;i++)
{
if(sum[i]==)continue;
for(int j=i+;j<=-i;j++)
{
if(judge(i,j))
{
bus[cnt].begin=i;
bus[cnt].interval=j;
bus[cnt].Count=(-i)/j+;
cnt++;
}
}
}
ans=;
sort(bus,bus+cnt);
dfs(,);
printf("%d\n",ans);
}
return ;
}

poj 1167 简单搜索的更多相关文章

  1. POJ 2243 简单搜索 (DFS BFS A*)

    题目大意:国际象棋给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次. 求最少明显用bfs,下面给出三种搜索算法程序: // BFS #include<cstdio> #i ...

  2. poj 3279 Fliptile (简单搜索)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16558   Accepted: 6056 Descrip ...

  3. 简单搜索 kuangbin C D

    C - Catch That Cow POJ - 3278 我心态崩了,现在来回顾很早之前写的简单搜索,好难啊,我怎么写不出来. 我开始把这个写成了dfs,还写搓了... 慢慢来吧. 这个题目很明显是 ...

  4. ElasticSearch 5学习(4)——简单搜索笔记

    空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...

  5. nyoj 284 坦克大战 简单搜索

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...

  6. 分布式搜索ElasticSearch构建集群与简单搜索实例应用

    分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...

  7. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  8. 和我一起打造个简单搜索之SpringDataElasticSearch入门

    网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...

  9. 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮

    前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...

随机推荐

  1. mysql innodb 数据打捞(四)innodb 簇不连续页扫描提取(试验)

    一,用winhex把正常页有意做成不连续的两部分,把后8K向后移动4K,中间隔开4K,启动第一次扫描; 扫描结果是,没有提取到有效页面,但在输出目录生成两个文件:upper.pages和upper.l ...

  2. 学习C++ Primer 的个人理解(八)

    结束了第一部分,在最后的第七章,我只简单的总结了一下,因为后面还会更详细的说明有关类的内容.而且说实在的这一张的内容让我很不舒服,验证了本书实际上有许多内容是作者的学生一起拼凑而成的.第七章结构给我感 ...

  3. web页面背景色控制

    有一道题要实现输入rgb数值,实现更换页面背景色的功能,如下图所示: 答案: <html> <head> <script type="text/javascri ...

  4. css3的3D翻牌效果

    利用hover控制动画,一个从翻面向正面翻,一个从正面向反面翻. 利用:backface-visibility: hidden;控制反面的元素不显示. 不支持的浏览器直接切换层级换图. <!DO ...

  5. 如何让sudo命令不需要输入密码就可执行

    通过visudo 来编辑/etc/sudoers来实现 在该文件中追加一下记录即可 username ALL=(ALL) NOPASSWD:ALL ——-下面文章转载自网络———– # User pr ...

  6. oracle 11g实验五——触发器的使用

    实验要求: 实验五 触发器的使用 实验目的 1.  理解触发器的概念.作用及分类: 2.  掌握触发器的创建.使用: 实验内容 1.  建立表orders:用于存储订单列表信息:表order_item ...

  7. 如何读懂Oracle文档中的语法图(转)

    本文转载自:http://kyle.xlau.org/posts/syntax-diagrams.html Oracle文档中用到了两种表达语法的方法,语法图和BNF. BNF, Backus-Nau ...

  8. 用Cocos2d-x实现2D光线效果

    2015.3.23优化修改,现在已经能达到稳定60帧了.. 本博客地址:http://www.cnblogs.com/wolfred7464/ 创意来自于:http://ncase.me/sight- ...

  9. 一步步学习ASP.NET MVC3 (9)——JsonReslt,JavaScript,@Ajax

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们讲述了ActionResult的三个子类,非别是EmptyResult,RediretResult和Conte ...

  10. CSS3 display:flex和display:box有什么区别?

    **区别**,仅是各阶段草案命名.- W3C 2009年第1次草案:[display:box;](https://www.w3.org/TR/2009/WD-css3-flexbox-20090723 ...