Day4:T3搜索 T4数学题排列组合
T3:搜索
很出名的题吧,费解的开关
同T2一样也是一题很考思考的
附上题解再解释吧:
对于每个状态,算法只需要枚举第一行改变哪些灯的状态,只要第一行的状态固定了,接下来的状态改变方法都是唯一的:每一行需要改变状态的位置都在上一行中不亮的灯的正下面,因为只有这样才能使上一行的灯全亮。我们枚举第一行的状态改变方法(共2^5种),对于每种方法都依次改变下面几行的状态使上面一行灯全亮。到最后一行我们需要判断是否最后一行也恰好全亮,并更新最小步数。
首先需要找到第一行的状态,怎么写?枚举深搜啊
找到了其中一种第一行的状态之后呢?按照题解所说的,改变上一行中不亮的灯的正下面...怎么写?模拟啊不用说了吧
为什么是这样改变?因为需要把状态全部推到最后一行,判断是否可行
之后就是根据思路模拟模拟dfs一下即可了:
var
a,g:array[0..6,0..6] of longint;
n,i,j,ans:longint;
k:char; procedure huan(x,y:longint);//对(x,y)进行操作
begin
a[x,y]:=1-a[x,y];
end; procedure work(x:longint);//开始在第一排的状态已经确定的前提下进行其他行的操作
var
i,j,k:longint;
begin
g:=a;//temp数组
k:=x;//初始值表示已经操作过了几次 当然这个k不总是0
for i:=1 to 4 do
for j:=1 to 5 do
if a[i,j]=0 then
begin
huan(i,j);huan(i+1,j);huan(i+2,j);huan(i+1,j-1);huan(i+1,j+1);//将这个点下面一格的灯操作一下
inc(k);
end;
for i:=1 to 5 do
if a[5,i]=0 then break//如果还有灯是关着的那么就结束.
else
if i=5 then
if k<ans then ans:=k;//如果全部都是开着的那么就更新答案
a:=g;
end; procedure cq(x,y:longint);
begin
if x=6 then work(y)//如果有六个灯了那么就开始找 一开始的初始步骤数为y
else
begin
cq(x+1,y);//找下一个灯
huan(1,x);huan(1,x-1);huan(2,x);huan(1,x+1);//操作一个灯
cq(x+1,y+1);//找下一个灯
huan(1,x);huan(1,x-1);huan(2,x);huan(1,x+1);//回溯~
end;
end; begin
readln(n);
for n:=n downto 1 do//n可以这样用
begin
ans:=7;//用于更新答案(如果可以)
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
read(k);
a[i,j]:=ord(k)-48;
end;
readln;
end;//读入数据
cq(1,0);//cq(x,y)表示找第一排的x个灯有y个被操作过的情况(当然是没有重复的)
if ans<7 then writeln(ans) else writeln(-1);
readln;
end;
end.
T4:排列组合
数学题(感觉自己数论方面略弱...需要多练多总结才行)
准备睡觉了...晚安
Day4:T3搜索 T4数学题排列组合的更多相关文章
- [leetcode] 题型整理之排列组合
一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ...
- Codeforces Gym 100187D D. Holidays 排列组合
D. Holidays Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/D ...
- Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls 排列组合
C. Kyoya and Colored Balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...
- UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力
题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种. 我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验证 ...
- HDU 4497 GCD and LCM(分解质因子+排列组合)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4497 题意:已知GCD(x, y, z) = G,LCM(x, y, z) = L.告诉你G.L,求满 ...
- Day2:T3DP(基于排列组合思想)
T3:DP(基于排列组合思想的状态转移) 其实之前写排列组合的题目有一种很茫然的感觉.... 应该是因为之前没有刷过所以没有什么体会 上次刷的vj1060有用到,但是写状态转移还是第一次学习吧 ccy ...
- Codeforces 140E(排列组合、dp)
要点 主要学到的东西:一个序列染色,相邻不染同色,恰用\(j\)种颜色的1.模式数.2.方案数.3.具体染色数. 从大的思路上来讲:先dp预处理出每一层的模式数:\(f[i][j]\)表示\(i\)个 ...
- 自然语言处理(NLP) - 数学基础(1) - 排列组合
正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...
- 10.1 csp-s模拟测试(b) X国的军队+排列组合+回文
T1 X国的军队 贪心,按$b-a$的大小降序排序,然后就贪心吧 #include<iostream> #include<cstdio> #include<algorit ...
随机推荐
- 大数据系列修炼-Scala课程11
接着昨天的list,也是学习集合的相关知识 ListBuffer.ArrayBuffer.Queue.stack相关操作 1.ListBuffer.ArrayBuffer代码实现:ListBuffer ...
- 浅谈JavaScript中的柯里化函数
首先,不可避免的要引经据典啦,什么是柯里化函数呢(from baidu): 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返 ...
- HDU - 1394 Minimum Inversion Number (线段树求逆序数)
Description The inversion number of a given number sequence a1, a2, ..., an is the number of pairs ( ...
- NYOJ 330 一个简单的数学
一个简单的数学题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描写叙述 zyc近期迷上了数学,一天,dj想出了一道数学题来难住他.算出1/n,但zyc一时答不上来希望大家能 ...
- centos5.8本地安装yum资源,安装软件包
首先 [root@mode media]# cd /etc/yum.repos.d/ [root@mode yum.repos.d]# ll total 16 -rw-r--r-- 1 root ro ...
- MVC4
MVC4 本地正常运行,发布到IIS7->403 - 禁止访问: 访问被拒绝. 摘要: 上周五代码编写完成,计划发布一个版本测试,没想到发布到IIS7 竟然报错“403-禁止访问”.还真第一次遇 ...
- Introducing Visual Studio’s Emulator for Android
visual studio 2015支持Android开发了. Microsoft released Visual Studio 2015 Preview this week and with it ...
- 基于OCR的SeeTest框架可行性分析总结
总的来说相比其他几个免费框架,SeeTest功能更全面和易用,但收费有点昂贵:License 3500/年:多平台和多语言(基于OCR)还需要额外购买,分别是500/Year和1750$/.详情请查看 ...
- linux内核的冒险md来源释义# 14raid5非条块读
linux内核的冒险md来源释义# 14raid5非条块读 转载请注明出处:http://blog.csdn.net/liumangxiong 假设是非条块内读.那么就至少涉及到两个条块的读,这就须要 ...
- ExtJs--12--Ext定义类的requires uses singleton 三个配置项的使用
Ext.onReady(function(){ /* * requires uses singleton 三个配置项的使用 */ Ext.define("A",{ //requir ...