bzojnbsp;1770nbsp;[Usaco2009nbsp;Nov]lightsnbsp;…
Description
Input
Output
Sample Input
1 2
1 3
4 2
3 4
2 5
5 3
輸入細節:
一共有五盞燈。燈1、燈4和燈5都連接著燈2和燈3。
Sample Output
輸出細節:
按下在燈1、燈4和燈5上面的開關。
陡然发现这题用的繁体字。。。说呢怎么这么黑。。。
嗯、这题是用异或方程。
初始一个n*(n+1)的矩阵。
第i行表示第i盏灯的情况,其中的第j位表示第j盏灯的状态变化是否会对其产生影响。第n+1列表示最终状态与初始状态的异或值(一开是都为1,因为都是从关到开转变了状态)
然后就是果果的高斯消元,我的做法是对于每个a[i,i]把n行都消过去、、不是倒三角。。。如果有唯一解的话终态是一条对角线加一条“虚线”,即第n+1列。
然后进行深搜。枚举每个多解情况的操作。
理论复杂度是2^n。。。不过这个的状态树枯枝败叶各种多啊。。。随便减下都只剩下差不多个树干。。。。
在每层深搜之前判断当前解是否小于当前最优解,否则退出。。。
原来超时的20ms水过。。。
AC CODE
program bzoj_1770;
var a:array[1..40,1..40] of longint;
ans,tot,n,m:longint;
//===================================================================
procedure init;
var i,x,y:longint;
begin
readln(n,m);
for i:=1 to n do a[i,i]:=1;
for i:=1 to n do a[i,n+1]:=1;
for i:=1 to m do
begin
readln(x,y);
a[y,x]:=1; a[x,y]:=1;
end; m:=n+1;
end;
//===================================================================
procedure change(x:longint);
var i,j,tt:longint;
begin
for i:=x+1 to n do
if a[i,x]<>0 then
begin
for j:=1 to m do
begin
tt:=a[x,j]; a[x,j]:=a[i,j]; a[i,j]:=tt;
end; exit;
end;
end;
//===================================================================
procedure xiaoyuan;
var i,j,k:longint;
begin
for i:=1 to n do
begin
if a[i,i]=0 then change(i);
if a[i,i]=0 then continue;
for j:=1 to n do
begin
if j=i then continue;
if a[j,i]=0 then continue;
for k:=i to m do
a[j,k]:=a[j,k] xor a[i,k];
end;
end;
end;
//===================================================================
procedure dfs(now:longint);
var i:longint;
begin
if tot>ans then exit; //加了这一句就过了、、
if now=0 then
begin
if tot
exit;
end;
if a[now,now]=1 then
begin
if a[now,m]=1 then inc(tot);
dfs(now-1);
if a[now,m]=1 then dec(tot);
end else
begin
if a[now,m]=1 then exit;
dfs(now-1);
for i:=now-1 downto 1 do
if a[i,now]=1 then a[i,m]:=a[i,m] xor 1;
inc(tot); dfs(now-1); dec(tot);
for i:=now-1 downto 1 do
if a[i,now]=1 then a[i,m]:=a[i,m] xor 1;
end;
end;
//===================================================================
begin
assign(input,'1.in'); reset(input);
init;
xiaoyuan;
ans:=maxlongint;
tot:=0; dfs(n);
writeln(ans);
end.
bzojnbsp;1770nbsp;[Usaco2009nbsp;Nov]lightsnbsp;…相关推荐
- bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料*
bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料 题意: 约翰开车来到镇上,他要带K吨饲料回家.如果他的车上有X吨饲料,每公里就要花费X^2元,开车D公里就需要D* X^ ...
- [BZOJ1724][Usaco2006 Nov]Fence Repair 切割木板
1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1272 Solved: ...
- 1642: [Usaco2007 Nov]Milking Time 挤奶时间(dp)
1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 935 Solved: 5 ...
- NetBeans 时事通讯(刊号 # 124 - Nov 11, 2010)
现在的 netbeans.org 瞬息万变.为了帮助您快速的获得最新消息,一个由志愿者组成的团队会每周收集与 NetBeans 相关的时事通讯,包括文章,教程,重要事件等等.刊号 # 124 - No ...
- Mon Nov 18 01:40:52 CST 2019 WARN: Establishing SSL connection without server's identity verificatio
今天在写ssh项目的时候,部署tomcat之后出现这样的错误 Mon Nov 18 01:40:52 CST 2019 WARN: Establishing SSL connection withou ...
- NetBeans 时事通讯(刊号 # 125 - Nov 17, 2010)
现在的 netbeans.org 瞬息万变.为了帮助您快速的获得最新消息,一个由志愿者组成的团队会每周收集与 NetBeans 相关的时事通讯,包括文章,教程,重要事件等等.刊号 # 125 - No ...
- 1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 )
倒过来看 , 每次总是选择最短的两块木板合并 , 用heap维护 ------------------------------------------------------------------- ...
- bzoj1230[Usaco2008 Nov]lites 开关灯*
bzoj1230[Usaco2008 Nov]lites 开关灯 题意: 一个01序列,初始全部元素为0,两种操作:l到r全部元素取反.询问l到r1的个数.序列长度≤100000,询问个数≤10000 ...
- 1707: [Usaco2007 Nov]tanning分配防晒霜
1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 548 Solved: 262 [S ...
最新文章
- 使用VS.NET2003编写存储过程
- 利用Wireshark和OSS的API文档简单实现上传和下载
- 参数估计Bayesian方法的困惑点
- php服务器队列执行,lnmp php添加队列服务器的配置
- Java国际化的简单实现方法
- 中邮消费金融签约神策数据 致力最优产品与服务模式
- [云炬创业基础笔记]第七张创业资源测试
- python strip_Python3 strip()方法
- 九、BDB OneToMany
- 盘点Linux下19 个有趣的命令!
- 最佳的开源云项目有哪些?
- qt读oracle时间戳,QT解析时间戳与微秒级精度
- Spark源码学习1.6——Executor.scala
- Git/mercurial...版本控制分支曲线图解析
- 4符号代码_身为程序员我敢跟你打赌100块,这个数学符号你根本不会认不会写...
- 2-visio使用与卸载
- Android10源码下载和编译(解锁/刷机)
- oracle的odac dll,.NET2.0中施用最少的ODAC动态库文件连接Oracle数据库
- java 无领导小组面试,无领导小组讨论面试前的准备不包括:( )
- JavaWeb项目打包上线简单流程