P1213 时钟
题目描述
考虑将如此安排在一个 3 x 3 行列中的九个时钟:
目标要找一个最小的移动顺序将所有的指针指向12点。下面原表格列出了9种不同的旋转指针的方法,每一种方法都叫一次移动。选择1到9号移动方法,将会使在表格中对应的时钟的指针顺时针旋转90度。
移动方法 受影响的时钟
1 ABDE
2 ABC
3 BCEF
4 ADG
5 BDEFH
6 CFI
7 DEGH
8 GHI
9 EFHI
Example
[但这可能不是正确的方法,请看下面]
输入输出格式
输入格式:
第1-3行: 三个空格分开的数字,每个数字表示一个时钟的初始时间,3,6,9,12。数字的含意和上面第一个例子一样。
输出格式:
单独的一行包括一个用空格分开的将所有指针指向12:00的最短移动顺序的列表。
如果有多种方案,输出那种使其连接起来数字最小的方案。(举例来说5 2 4 6 < 9 3 1 1)。
输入输出样例
说明
题目翻译来自NOCOW。
USACO Training Section 1.4
// luogu-judger-enable-o2
//九维数组暴力判啊
//hash写的太渣 #include<iostream>
#include<cstdio>
#include<string>
#include<map>
#include<queue>
#include<algorithm>
using namespace std; const int N=;
const int mod=; string move[]={"","","","","","","","","",""};
int len[]={,,,,,,,,,};
struct CLO
{
int id;
string s;
int pre;
string way;
int cnt;
}clo[];
int num_clo;
string ans[];
int len_ans,sum; bool operator < (string a,string b)
{
return a+b<b+a;
} bool h[N];
bool hash(string a)
{
int tmp=;
for(int i=;i<;++i)
{
tmp=tmp*+a[i]-'';
}
if(h[tmp])
return ;
h[tmp]=;
return ;
} void bfs()
{
queue<CLO> que;
que.push(clo[]);
hash(clo[].s);
CLO now,tmp;
len_ans=N;
while(!que.empty())
{
now=que.front(),que.pop();
// cout<<now.s<<endl;
if(now.cnt>=len_ans)
break;
for(int i=;i<=;++i)
{
// cout<<"i: "<<i<<endl;
tmp.s=now.s;
for(int j=;j<len[i];++j)
{
++tmp.s[move[i][j]-''];
if(tmp.s[move[i][j]-'']=='')
tmp.s[move[i][j]-'']='';
}
// cout<<"tmp.s: "<<tmp.s<<endl;
if(tmp.s=="")
{
ans[++sum]=now.way;
ans[sum]+=i+'';
len_ans=min(len_ans,now.cnt+);
continue;
}
if(hash(tmp.s))
continue;
tmp.cnt=now.cnt+;
tmp.id=++num_clo;
tmp.way=now.way;
tmp.way+=i+'';
tmp.pre=now.id;
clo[num_clo]=tmp;
que.push(tmp);
// cout<<"num_clo: "<<num_clo<<endl;
}
}
} int main()
{
// freopen("testdata.in","r",stdin);
for(int i=,a;i<=;++i)
{
scanf("%d",&a);
clo[].s+=a/+'';
}
bfs();
sort(ans+,ans+sum+);
// for(int i=1;i<=sum;++i)
// cout<<ans[i]<<endl;
// cout<<sum;
for(int i=;i<ans[].length();++i)
printf("%c ",ans[][i]);
return ;
}
P1213 时钟的更多相关文章
- Vijos——T 1016 北京2008的挂钟 || 洛谷—— P1213 时钟
https://www.luogu.org/problem/show?pid=1213 题目描述 考虑将如此安排在一个 3 x 3 行列中的九个时钟: 目标要找一个最小的移动顺序将所有的指针指向12点 ...
- [转] STM32各种时钟的区别
[原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是 ...
- [转载]:STM32为什么必须先配置时钟再配置GPIO
转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...
- 理解Java对象的交互:时钟显示程序
实现: 结构: 对象:时钟 - 对象:小时 - 对象:分钟 小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象: 但是两者之间又具有联系( ...
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
- 浅谈时钟的生成(js手写代码)
在生成时钟的过程中自己想到布置表盘的写法由这么几种: 当然利用那种模式都可以实现,所以我们要用一个最好理解,代码有相对简便的方法实现 1.利用三角函数 用js在三角函数布置表盘的过程中有遇见到这种情况 ...
- Linux(Unix)时钟同步ntpd服务配置方法
http://xu20cn.blog.51cto.com/274020/69689 假定时钟服务器IP地址为:192.168.0.1 服务器端配置: 1:置/etc/ntp.conf文件内容为: se ...
- S5PV210_时钟系统
1.S5PV210的时钟获得:外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频 S5PV210外部有4个W晶振接口,可以根据需要来决定在哪里接晶振.接了晶振之后上电相应的模块就能产生振 ...
- Canvas绘制时钟
①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟. <canvas id="myCanvas" width="600" height ...
随机推荐
- chrome下载离线安装包
chrome下载离线安装包 - codeflyto - 博客园 下载页面:
- hdu 6562 Lovers (线段树)
大意: 有$n$个数字串, 初始为空, 两种操作(1)把$[l,r]$范围的所有数字串首位添加数位$d$ (2)询问$[l,r]$区间和 假设添加的数为$L$, $L$位数为$H$, $L$翻转后乘上 ...
- ubuntu下使用eclipse调试jni无法获取环境变量,本地库(java.library.path,LD_LIBRARY_PATH)等问题的解决。
首先要把本地库全部配置到LD_LIBRARY_PATH中. 然后一定要采用命令行方式启动eclipse(也可以写一个启动shell,通过桌面启动器打开这个shell),这样环境变量才会有效. 打开终端 ...
- Qt界面阴影效果(背景图片)
实现原理: 1.顶层窗体设置为无边框,背景半透明 2.顶层窗体的子窗体使用带有阴影的图片做背景 代码: //CMainWindow.h#ifndef CMAINWINDOW_H#define CMAI ...
- git版本控制系统重新认识
git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...
- Authentication failed for "http://xxxxxx"
1.配置用户信息 git config --global user.name [username] git config --global user.email [email] 2.查询用户信息 ...
- werkzeug/routing.py-Map()源码解析
Map类主要用来存储所有的url规则和一些配置参数的.其中有一些配置的值只存储在Map实例里,因为这些值影响着所有的规则,还有一些其他的默认规则可以被重写. 通过之前分析的add_url_rule源码 ...
- 移动端调试工具Vconsole
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- CSS选取第一个、最后一个、偶数、奇数、第n个标签元素
1.first-child first-child表示选择列表中的第一个标签.例如:li:first-child{background:#fff} 2.last-child last-child表示选 ...
- aspx反射调用方法
string name = base.Request["action"]; ]); if (obj2 != null) { s = obj2.ToString(); } 传入方法名 ...