CF79D 题解
题解
你有 \(n\) 个灯泡,一开始都未点亮。
同时你有 \(l\) 个长度,分别为 \(a_1 \sim a_l\)。
每次你可以选择一段连续的子序列,且长度为某个 \(a_i\),并将这些灯泡的明灭状态取反。
求最少的操作次数,使得最后有且仅有 \(k\) 个位置是亮的,这些位置已经给定,为 \(x_1 \sim x_k\)。
\(1 \le n \le 10^4,1\le l \le 10^2,1\le k\le 10\)。
题解
看到 \(k\) 的范围,考虑状压。但思考了一会没有什么头绪。于是开始寻找充要条件。
发现难点在于区间翻转。一个常见的技巧是差分。于是将原序列变成其异或差分序列,即 \(a_i=a_i \oplus a_{i+1}\)。易证差分序列与原序列是一一对应的。
此时操作变成了将两个距离一定的位置单点翻转。此时状压已经初见眉目了:如果翻转两个 \(0\),就可以变成更大的状态。但如果是其他情况呢?
如果翻转 \(1\) 和 \(0\),会导致最终状态应该是 \(1\) 的点出现 \(0\)。那么其最后肯定是要翻回来的。因为翻转的顺序不影响结果,我们可以先考虑“翻回来”的操作。于是可以发现,操作构成一条路径。因为最后一定落在最终状态为 \(0\) 的点上,故做一下最短路后就可以解决。
如果翻转两个 \(1\),显然没有意义。
于是此题解决。
CF79D 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- "人生重开模拟器",10分钟轻松搭建!
人生重开模拟器是最近爆火的一款非常好玩的模拟游戏,会带你走入一个有趣的世界,开启全新的人生旅程,即"人生重开". 然而实际上,这款游戏短短在3天内上线,在百度贴吧.朋友圈.QQ群. ...
- unity 扇形范围检测目标
第一种 代码方法 传入目标点测试即可 private float ScopeDistance = 2f;//扇形距离 private float ScopeJiaodu = 120;//扇形的角度 / ...
- [Err] [Dtf] 1044 - Access denied for user 'root'@'localhost' to database 'information_schema'
在从Oracle向mysql数据库传输数据时,报出来这个错误,原因是因为没有打开mysql数据库,在navicat里打开mysql,并选中要传输的数据库 再重复传输一下即可
- C# 将Dll文件打包到exe中
首先在资源管理里面将需要使用的dll添加进入 然后将dll文件的生成操作改成嵌入的资源 然后新建一个类 LoadResourceDll.cs 1 using System; 2 using Syst ...
- openGL 学习笔记 (一) 了解 OpenGL,创建第一个OpenGL窗口
// 序章最开始我以为OpenGL是一系列的API,他给出了一系列对计算机图像的操作接口.但其实OpenGL其实并不是一个API,他是由khronos组织制定并维护的规范. 早期的OpenGL使用立即 ...
- Python的入门学习Day 25~27——form”夜曲编程“
Day 27 time: 2021.8.24. 时流轻快,转眼间就载着我到达了学习Python的第27个日子.一开始,我还以为本次学习的全程对我而言小菜一碟--但,当我亲自走过以后,发现这些进步, ...
- gradle的配置
第一次接触公司的JAVA项目,使用了gradle,于是乎到网上搜索一番,终于弄明白了是个什么东东,由于之前也没有接触过maven和ant,所以对这个东西还是很陌生.好了,废话不多说,开始我的环境搭建. ...
- ORACLE 失效索引重建
-- 获取失效索引 SELECT * FROM USER_INDEXES WHERE TABLE_NAME IN ('表名') AND STATUS = 'UNUSABLE'; -- 重建语法alte ...
- 浅析sleep()方法与wait()方法
为什么 wait() 方法不定义在 Thread 中? wait() 是让获得对象锁的线程实现等待,会自动释放当前线程占有的对象锁.每个对象(Object)都拥有对象锁,既然要释放当前线程占有的对 ...
- hadoop集群搭建之测试集群,配置历史服务器,日志聚集,时间同步
hadoop集群搭建之测试集群,配置历史服务器,日志聚集,时间同步前期概要:我们完全分布式集群已经搭建完毕,并且还写了群启/群关的脚本, 接下来有必要来测试一遍集群,我们可以使用官方的案例,用它们在集 ...