题目描述

考虑将如此安排在一个 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)。

输入输出样例

输入样例#1: 复制

9 9 12
6 6 6
6 3 6
输出样例#1: 复制

4 5 8 9

说明

题目翻译来自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 时钟的更多相关文章

  1. Vijos——T 1016 北京2008的挂钟 || 洛谷—— P1213 时钟

    https://www.luogu.org/problem/show?pid=1213 题目描述 考虑将如此安排在一个 3 x 3 行列中的九个时钟: 目标要找一个最小的移动顺序将所有的指针指向12点 ...

  2. [转] STM32各种时钟的区别

    [原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是 ...

  3. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  4. 理解Java对象的交互:时钟显示程序

    实现: 结构: 对象:时钟  - 对象:小时                 - 对象:分钟 小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象: 但是两者之间又具有联系( ...

  5. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  6. 浅谈时钟的生成(js手写代码)

    在生成时钟的过程中自己想到布置表盘的写法由这么几种: 当然利用那种模式都可以实现,所以我们要用一个最好理解,代码有相对简便的方法实现 1.利用三角函数 用js在三角函数布置表盘的过程中有遇见到这种情况 ...

  7. Linux(Unix)时钟同步ntpd服务配置方法

    http://xu20cn.blog.51cto.com/274020/69689 假定时钟服务器IP地址为:192.168.0.1 服务器端配置: 1:置/etc/ntp.conf文件内容为: se ...

  8. S5PV210_时钟系统

    1.S5PV210的时钟获得:外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频 S5PV210外部有4个W晶振接口,可以根据需要来决定在哪里接晶振.接了晶振之后上电相应的模块就能产生振 ...

  9. Canvas绘制时钟

    ①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟. <canvas id="myCanvas" width="600" height ...

随机推荐

  1. MySQL 索引机制

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  2. vmware vSphere Data Protection 6.1 --------1-部署

    一.简介 1.vdp的介绍 介绍可以参考:vmware vSphere Data Protection简述(未完成) 官方中文文档:https://docs.vmware.com/cn/VMware- ...

  3. 什么是HTTPS协议

    一 HTTPS协议一直是web开发,无论前后端都不可或缺的重要知识点,然而由于历史原因,这个协议和知识点枯燥而繁多,如果看书和文字十分难懂苦涩.但又不得不掌握,怎么办呢? 正好,从朋友小灰那里得到一片 ...

  4. 【前端开发】ES6知识点系统化梳理笔记

    >ES6扩展: #Map和Set是es6标准新增的数据类型 ##Map是key-value(关键字-值),Map允许修改value,不允许修改key,Map支持下标操作 var m = new ...

  5. Android笔记(十五) Android中的基本组件——单选框和复选框

    单选框和多选框通常用来在设置用户个人资料时候,选择性别.爱好等,不需要用户直接输入,直接在备选选项中选择,简单方便. 直接看代码: <?xml version="1.0" e ...

  6. java - day014 - 编译期,运行期

    编译期 静态成员 私有变量 成员变量 运行期 非静态方法 package day1401; public class Test1 { public static void main(String[] ...

  7. 部署Nginx网站服务实现访问状态统计以及访问控制功能

    原文:https://blog.51cto.com/11134648/2130987 Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物 ...

  8. PYTHON 爬虫 baidu美女图片

    from urllib import requestimport re import osdef main(): #page=request.urlopen("http://image.ba ...

  9. python3 读取avro文件

    官网示例文档:http://avro.apache.org/docs/current/gettingstartedpython.html#download_install 需要注意的是,官网给出的是p ...

  10. golang 时间的比较,time.Time的初始值?

    参考: https://golangcode.com/checking-if-date-has-been-set/ https://stackoverflow.com/questions/209243 ...