[IOI1994] 时钟 - 搜索
考虑九个安排在 \(3 \times 3\) 矩阵中的时钟,每个时钟只会指向 \(3,6,9,12\) 点。有 \(9\) 种操作方式,每种操作方式规定了其固定的操作对象集合,将这几个时钟都往后拨 \(3\) 小时。每种操作方式有一个数字编号。求最小字典序的操作序列使得所有时钟都指向 \(12\) 点。
Solution
每个操作执行的次数不大于 \(3\)
操作序列由操作多重集得到
暴力枚举得到多重集
#include <bits/stdc++.h>
using namespace std;
int a[10];
signed main() {
for(int i=1;i<=9;i++) cin>>a[i], a[i]/=3;
for(int i1=0;i1<=3;i1++)
for(int i2=0;i2<=3;i2++)
for(int i3=0;i3<=3;i3++)
for(int i4=0;i4<=3;i4++)
for(int i5=0;i5<=3;i5++)
for(int i6=0;i6<=3;i6++)
for(int i7=0;i7<=3;i7++)
for(int i8=0;i8<=3;i8++)
for(int i9=0;i9<=3;i9++) {
if((a[1]+i1+i2+i4)%4) continue;
if((a[2]+i1+i2+i3+i5)%4) continue;
if((a[3]+i2+i3+i6)%4) continue;
if((a[4]+i1+i4+i5+i7)%4) continue;
if((a[5]+i1+i3+i5+i7+i9)%4) continue;
if((a[6]+i3+i5+i6+i9)%4) continue;
if((a[7]+i4+i7+i8)%4) continue;
if((a[8]+i5+i7+i8+i9)%4) continue;
if((a[9]+i6+i8+i9)%4) continue;
while(i1--) cout<<1<<" ";
while(i2--) cout<<2<<" ";
while(i3--) cout<<3<<" ";
while(i4--) cout<<4<<" ";
while(i5--) cout<<5<<" ";
while(i6--) cout<<6<<" ";
while(i7--) cout<<7<<" ";
while(i8--) cout<<8<<" ";
while(i9--) cout<<9<<" ";
return 0;
}
}
[IOI1994] 时钟 - 搜索的更多相关文章
- 使用canvas绘制一个时钟
周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...
- ASM:《X86汇编语言-从实模式到保护模式》第9章:实模式下中断机制和实时时钟
中断是处理器一个非常重要的工作机制.第9章是讲中断在实模式下如何工作,第17章是讲中断在保护模式下如何工作. ★PART1:外部硬件中断 外部硬件中断是通过两个信号线引入处理器内部的,这两条线分别叫N ...
- linux时钟同步
方法1. ntpdate ip 搜索时钟服务器.找一个靠谱的时钟ip执行以上命令即可 可以把这个加入crontab中定时同步.# /usr/sbin/ntpdate 210.72.145.44 > ...
- HTML5自学笔记[ 19 ]canvas绘图实例之炫彩时钟
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- STM32F4_RCC系统时钟配置及描述
Ⅰ.概述 对于系统时钟应该都知道它的作用,就是驱动整个芯片工作的心脏,如果没有了它,就等于人没有了心跳. 对于使用开发板学习的朋友来说,RCC系统时钟这一块知识估计没怎么去配置过,原因在于开发板提供的 ...
- STM32F0xx_RTC实时时钟配置详细过程
Ⅰ.概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下. STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待 ...
- Hook任务栏时钟窗口(原理其实很简单,就是注入DLL到时钟窗口进程(explorer.exe))
用过一些日历软件的小伙伴应该都知道它们都实现了在时钟窗口上的Hook,也就是屏蔽了系统原有的功能,实现自己的功能 某日历软件Hook时钟窗口后的效果 经过一番研究,发现原理其实很简单,就是注入DLL到 ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- 使用Canvas制作时钟动画
复习Javascript到Canvas的知识点,看到一个使用Canvas绘制的静态时钟例子,便想将其变成动态显示系统时间的时钟动画.另外再配上数字显示的时钟,一个小的时钟模块的诞生了!目前的界面还比较 ...
随机推荐
- 编译安装-Subversion 1.8.5
下载地址:http://subversion.apache.org/download/#recommended-release @开头的行为注释,#开头的红色行为命令 @下载tar包 #wget ht ...
- Cow Routing(最短路spfa)
题:https://www.luogu.org/problem/P3115 题意:给出起点A,终点B,N条路线,下面没俩行一个路线,第一行是俩个数,第一个为这条路线的花费,第二个为这条路线经过的点数n ...
- OpenCV 亚像素级的角点检测
#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #i ...
- axious设置携带cookie同时允许跨域的问题
axious设置携带cookie同时允许跨域的问题
- 【Vue 学习笔记 一、Vue开发环境搭建】
搭建Vue的开发环境 1.首先安装Nodejs (因为我的系统是Windows的所以就选择第一个了,这个看个人的开发环境) 下载好后,然后一路确定,如果有更改安装目录的需求,就自己切换安装目录,由于 ...
- LVS(注意iptables和selinux的问题)
1.LVS(高负载) LVS(Linux虚拟服务器) Linux Virtual Server LVS集群采用IP负载均和技术和基于内容请求分发技术.调取器具有很好的吞吐率,将请求均衡的转移到不同的服 ...
- 浅谈JobExecutionContext & JobDataMap
JobExecutionContext是什么? 当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的 execute() 方法: Job能通过JobExecu ...
- java连接sqlserver数据简单操作
首先我们下载微软的JDBC驱动包 https://www.microsoft.com/en-us/download/details.aspx?id=11774 下载好后我们打开如下图 点击Unzip ...
- JXJJOI2018_T3_catch
题目描述 Lemon因为偶然的原因,当上了警察局长.而一上任,他就碰到了个大麻烦:追捕周克华. 周克华是人尽皆知的抢劫杀人犯,而就在几天前,他在Lemon辖区内的银行门口,枪杀了一名储户后逃之夭夭.L ...
- 腾讯自动化测试的AI智能
引子: 本文是林奕在腾讯 DevDays 2018 分享内容的脱敏整理,介绍了 CSIG 测试开发中心(前 SNG 测试开发中心)在自动化测试领域所做的智能化尝试. 大致分成下面几部分: 使用AI面对 ...