1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol video solution AI分析

解题思路

老小区有 n 盏灯、每盏灯各有一个开关;按下第 i 个开关会翻转第 i 盏灯,同时还会额外翻转若干盏灯(给出影响关系)。已知初始状态 a[i]∈{0,1}(0 关、1 开),问是否存在一组开关使所有灯都为 0;若存在,输出按下的开关编号(升序),并在多解中选择

  1. 开关数量最少;2) 数量相同则字典序(从小到大序列的字典序)最小。

算法选择:位运算状态压缩 + 子集枚举

  • 将每个开关的作用用一个 n 位的位掩码表示:effect[i] 的第 j 位为 1 表示按下 i 会翻转第 j 盏灯。注意第 i 位始终为 1(会翻转自身)。

P3794.第2题-关灯方案

    1000ms Tried: 451 Accepted: 116 Difficulty: 7 所属公司 : 华为
    算法与标签>位运算

题目内容

老旧小区需要关闭一排灯,由于接线混乱,按某个灯的开关时可能会同步影响多个灯的状态,被影响的灯的状态会发生反转,即:原先亮着的灯会关闭,而关的灯会打开。

已知第 iii 个开关除了改变 iii 号灯的状态之外,还会额外影响多个灯的状态;

请问是否存在方案使得所有的灯都关闭,如果无解则输出 −1-1−1 ,有解时则输出选择按开关数量最小的方案,如果按开关数量相同再比较输出字典序最小的方案。

输入描述

第 111 行两个整数 nnn 和 m(1<=n<=20,0<=m<=n∗(n−1))m(1<=n<=20,0<=m<=n*(n-1))m(1<=n<=20,0<=m<=n∗(n−1)) ,表示 nnn 个灯(每个灯一个开关), mmm 个额外的影响关系。

第 222 行 nnn 个整数 a[i]a[i]a[i] 表示灯的初始开关情况,000 表示关闭,111 表示开启 (0<=a[i]<=1,1<=i<=n(0<=a[i]<= 1,1 <=i<=n(0<=a[i]<=1,1<=i<=n ,表示灯的索引序号)。

第 333 行到第 m+2m+2m+2 行,每行两个整数 xxx 和 yyy ,表示对灯 xxx 进行开关时会额外影响灯 yyy ,题目保证输入影响关系不重复。

输出描述

如果无解,输出 −1-1−1 ;

如果有解,输出一行从小到大排序后的整数序列,用空格隔开;

如果有多个可行解,则输出按开关数量最小的方案,数量相同时输出字典序最小的方案。这里字典序最小的比较遵循按相同开关数的方案从小到大排序后,依次从第一个数开始比较,比较到第一个不同的位置时,更小的数所在序列更小。

样例1

输入

2 2
0 1
1 2
2 1

输出

-1

说明

有两盏灯,灯 111 为关闭状态,灯 222 为打开状态;两盏灯的状态是相互影响的,当关闭灯 222 时,灯 111 会从关闭状态变为打开状态;当再次关闭灯 111 时灯 222 状态又会被打开;

所以不存在方案把两盖灯都关闭,因此输出为 −1-1−1 ;

样例2

输入

3 4
1 0 0
2 1
2 3
3 1
3 2

输出

1

说明

方案一:按下开关 111 后,只有灯 111 自身关闭,此时为 000 000 000 ,满足条件。

方案二:选择 111 222 333 的方案也可以使得最终值所有灯关闭,也满足条件,但是该方案选取的个数更多,所级输出第一种方案。

样例3

输入

3 3
0 0 1
1 2
1 3
3 2

输出

2 3

说明

当选择开关 222 和 333 之后

按下开关 222 后,没有其他影响的开关,只有灯 222 自身,此时亮灯情况为 000 111 111 。

按下开关 333 后,格外影响灯 222 、则 222 和 333 分别切换开灯状态,此时为 000 000 000 所有灯关闭。

提示

(1)如果存在两种方案均满足,其中解法一输出为 111 222 ,解法二输出为 111 333 ,根据题目的字典序最小输出要求,最终输出为解法一的答案 111 222 ;

(2)初始状态下,至少有一盏灯是打开状态;

开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 56ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?