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 ...
随机推荐
- spring中EL解析器的使用
SpEL对表达式语法解析过程进行了很高的抽象,抽象出解析器.表达式.解析上下文.估值(Evaluate)上下文等对象,非常优雅的表达了解析逻辑.主要的对象如下: 类名 说明 ExpressionPar ...
- php 跳转页面
header('location:./example.php'); header('refresh:2;url=./example.php');
- shiro登录验证简单理解
这两天接手了下师兄的项目,要给系统加个日志管理模块,其中需要记录登录功能的日志,那么首先要知道系统的登录是在哪里实现验证的. 该系统把所有登录验证还有权限控制的工作都交给了shiro. 这篇文章就先简 ...
- C#用户控件实战01_CSS布局
很多应用系统的主页布局,一般采用如下案例所示布局较多,如下图的CSS布局框架,上.中.下,接下来我们演示,在C#中实现如下的业务架构布局. 代码范例: 在<body></body&g ...
- nginx buffer
1.错误日志:warn:an upstream response is buffered to a temporary file 解决办法:增加fastcgi_buffers 8 4K; fa ...
- 【转载】Sqlserver限制最大可使用内存
在Sqlserver的使用过程中,我们会发现随着运行时间的增长,Sqlserver占用的系统也越来越大,查了网上的相关资料说,Sqlserver在查询完相应数据后,为了下一次查询的性能,并不会马上释放 ...
- js同时获取多个共同class内容标签内容集合
1.获取标签内容 标签如下: <img image-code="#qq_1_gif#" class="emoji_icon" src="i ...
- Android拍照和从相册获取照片
1.从相册获取照片 private void openAlumb() { //mRxPermissions:三方权限库 mRxPermissions .request(Manifest.permiss ...
- 前端BOM对象
location.href 查看当前的url location.href http://www.baidu.com 跳转URL location.reload 重载当前页面 windows.alert ...
- C语言面试题目之指针和数组
说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序. 先来几个简单的热热身. 1.计算以下sizeof的值. char str ...