题解

传送门

你有 \(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 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. 两个jsp界面之间使用window.location.href使用?传递参数以及接受参数

    这篇文章如果能给你带来帮助,不胜荣幸,如果有不对的地方也欢迎批评指正. 网上有很多方法是讲怎么截取字符串啊等等的方法来获取参数,说实话,看着我就觉得费劲,咱们可以换一种思路来思考.一般跳转界面多为前段 ...

  2. CentOS下下查看硬盘型号、大小等信息(含Raid)

    一.普通模式(该机硬盘没有做磁盘阵列) 1.fdisk -l 查看你的硬盘编号,如sda,sdb 等 2.smartctl --all /dev/sda [html] view plain copy ...

  3. C# 读取串口设备列表

    ManagementObjectSearcher 解析不到头文件,需要手动 Add Referance 需要添加引用:System.Management,然后引入命名空间:using System.M ...

  4. CCIE DC Multicast Part 4.

    Hi Guys, Part 4 of my CCIE DC multicast article is presented below, in this article we are going to ...

  5. CCIE DC Multicast Part 2.

    Hi Guys! In my last blog post, we had a quick look at multicast and a more in depth look at how PIM ...

  6. 2023 新年FLAG 当你无所事事的时候,打开本博客看看,置顶着呢,别说你看不到,摸鱼狗

    2023.2.15 接触到了Visual Grounding,但是是3D的,不知道这是不是冥冥之中的一颗种子,我现在有强烈的直觉我未来就是搞这个方向. 2023.2.14 回到学校正式开始工作 OK, ...

  7. Jmeter学习:常用内置函数

    常用函数一:  常用函数二: __counter 功能介绍: 生成一个计数器变量,每次使用的时候+1 __counter(false,gseq)表示所有线程共用,所有线程及迭代共享计数. __coun ...

  8. HBase对表增查操作 API

    public class HBaseDML { //静态属性 public static Connection conn = HBaseConnection2.conn; //添加数据 public ...

  9. docker 安装 elasticsearch7.6.2 kibana7.6.2

    [root@abcdefg bin]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6896f6e3202c ...

  10. M1 安装apache tomcat

    一.下载以及安装 1.Tomcat(官网:http://tomcat.apache.org/) 2.找到需要的版本:我用的9版本 二.将下载的文件放在自己一个目录下去 三.设置Apache环境路径 e ...