poj 1167 简单搜索
这题主要是注意好限定的条件
条件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 简单搜索的更多相关文章
- POJ 2243 简单搜索 (DFS BFS A*)
题目大意:国际象棋给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次. 求最少明显用bfs,下面给出三种搜索算法程序: // BFS #include<cstdio> #i ...
- poj 3279 Fliptile (简单搜索)
Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16558 Accepted: 6056 Descrip ...
- 简单搜索 kuangbin C D
C - Catch That Cow POJ - 3278 我心态崩了,现在来回顾很早之前写的简单搜索,好难啊,我怎么写不出来. 我开始把这个写成了dfs,还写搓了... 慢慢来吧. 这个题目很明显是 ...
- ElasticSearch 5学习(4)——简单搜索笔记
空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...
- nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...
- solr简单搜索案例
solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...
- 和我一起打造个简单搜索之SpringDataElasticSearch入门
网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
随机推荐
- 【JSP&Servlet学习笔记】4.会话管理
Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...
- linux shell编程学习笔记(二) --- grep命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
- cache在spring中使用
一:参考文章 (1)http://haohaoxuexi.iteye.com/blog/2123030 Spring使用Cache,这篇文章讲的比较详细. 注:本文是对参考文章和实际使用中经验的总结 ...
- DataGridView添加另外一个控件。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- Python subprocess模块学习总结
从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.comman ...
- Visual Studio 2010 旗舰版安装图解
微软发布了最新的 Visual Studio 2010 软件开发编程平台及 .Net Framework 4 框架.这次 VisualStudio 2010 包括 Professional 专业版.P ...
- 开发设计模式(一)Command模式
Command定义 将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节. 这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能. 优 ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
- fatal error C1853
http://myswirl.blog.163.com/blog/static/513186422011827105224739/ 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C ...
- centos 下查找软件安装在哪里的命令
linux centos 下查找软件所安装的目录在哪里 1. 如果是rpm安装的可以:rpm -ql linux(1)package-name 具体你可以man rpm 2. 可以在根目录上直接fin ...