原文链接https://www.cnblogs.com/cly-none/p/9697662.html

题目当然不会做完了,这里只讲有做&会做的。

A. Last chance

题意:有\(n\)个敌方飞船,己方有\(m\)个武器,有以下三种类型:

  • 能攻击编号属于一个大小为\(k_i\)的集合的所有飞船。
  • 能攻击编号在\([l_i,r_i]\)区间内的所有飞船。
  • 能攻击三个飞船,编号分别为\(a_i,b_i,c_i\)。

其中,前两种类型的武器每个只能攻击\(1\)个飞船,第三种每个只能使用\(0\)次或\(2\)次。

特别性质:每个飞船最多会被一个第三种武器纳入攻击范围。

在每个飞船只能被攻击一次的情况下,问最多能攻击到多少个飞船,并输出方案。

\(n,m \leq 5000, \, \sum{k_i} \leq 10^5\)

容易想到,本题是个最大流。

那么,第一种武器可以暴力连边,第二种武器可以线段树优化建图,问题就在于第三种武器,只能使用\(0\)次或\(2\)次。

接下来当然要考虑特殊性质。考虑每个被同一个第三种武器锁定的三元组,它们其中只要有一个被前两种武器攻击,就可以全部被攻击;否则也能有两个被攻击。换言之,不考虑第三种武器,每个三元组最多被攻击一次。因此,我们每个三元组建一个辅助点让它们的流量和小于等于\(1\),就相当于是把第三种武器处理掉了。统计答案时再加上第三种武器的贡献就可以了。

那么,点数、边数就是\(O(n \log n)\)的了。

最后输出方案,一个好写的方法是类似于找增广路,把已有的流量一条条退回去就好了。

B. Space Isaac

在模\(m\)的意义下,给出一个大小为\(n\)的集合\(A\)。询问任取两个元素,一个在这个集合里,一个不在,相加所不能得到的数有那些。

\(n \leq 2 \times 10^5, \, m \leq 10^9\)

考虑一个数\(x\)如果不能得到,那么对于所有\(y \in A\),一定有\(x - y \in A\)。那么,我们把所有数按0/1表示它在不在集合\(A\)中,得到的一个0/1无限序列一定关于\(x\)对称。当然,对称只用看\(m\)位就可以了。因此,我们枚举这\(m\)位最左端的\(1\)是\(A\)中的哪一个元素,最右端的\(1\)也就确定了,然后用字符串哈希判断字符串是否回文就好了。

时间复杂度\(O(n)\)。

H. Self-exploration

求在\([l,r]\)区间内有多少数满足在二进制下:

  • 子串\(00\)的个数为\(C_{00}\)。
  • 子串\(01\)的个数为\(C_{01}\)。
  • 子串\(10\)的个数为\(C_{10}\)。
  • 子串\(11\)的个数为\(C_{11}\)。

答案对\(10^9 + 7\)取模。

\(l,r \leq 2^{10^5}\)

首先,我们容易得到所有满足条件的数二进制下的长度。

考虑没有\([l,r]\)的限制的情况。整个0/1序列就是很多段连续全0或全1的序列,而通过\(C_{01},C_{10}\)这两个常数,我们可以计算得到,全0的序列有多少个,全1的序列又有多少个。然后,我们也能得到一共有多少个0和1。于是问题就变成了把若干个1分到若干个全1序列中,若干个0分到若干个全0序列中,这可以用插板法来求。

而存在\([l,r]\)的限制的情况下,我们先把限制转化为\([0,r)\)的类型,然后枚举前面有多少位是相同的。也就是说,我们计算的二进制数小于\(r\)的情况下,它们不同的最高一位,一定是在\(r\)为\(1\)的位置上填了\(0\)。之后就可以忽略\(r\)的限制了。因此,我们枚举最高的不同的一位就好了。

时间复杂度\(O(\log r)\)。

小结:这三道题都是可以自己想出来的,但在比赛时还是被BH卡住了。实际上B题对答案有分析就好了,H题在于不能粗暴往数位dp的方向去想。

【做题】CF1045(ABH)的更多相关文章

  1. UOJ 做题记录

    UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...

  2. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  3. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  4. 屏蔽Codeforces做题时的Problem tags提示

    当在Codeforces上做题的时,有时会无意撇到右侧的Problem tags边栏,但是原本并不希望能够看到它. 能否把它屏蔽了呢?答案是显然的,我们只需要加一段很短的CSS即可. span.tag ...

  5. ACM 做题过程中的一些小技巧。

    ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long l ...

  6. [日记&做题记录]-Noip2016提高组复赛 倒数十天

    写这篇博客的时候有点激动 为了让自己不颓 还是写写日记 存存模板 Nov.8 2016 今天早上买了两个蛋挞 吃了一个 然后就做数论(前天晚上还是想放弃数论 但是昨天被数论虐了 woc noip模拟赛 ...

  7. CodeM美团点评编程大赛复赛 做题感悟&题解

    [T1] [简要题意]   长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...

  8. (luogu1704)寻找最优美做题曲线 [TPLY]

    寻找最优美做题曲线 题目链接:https://www.luogu.org/problemnew/show/P1704 题目大意: 求包含指定点的最长不降子序列(严格递增) 题解 首先我们发现 一个序列 ...

  9. project euler做题记录

    ProjectEuler_做题记录 简单记录一下. problem 441 The inverse summation of coprime couples 神仙题.考虑答案为: \[\begin{a ...

  10. bzoj5108: [CodePlus2017]可做题

    Description qmqmqm希望给sublinekelzrip出一道可做题.于是他想到了这么一道题目:给一个长度为n的非负整数序列ai,你需 要计算其异或前缀和bi,满足条件b1=a1,bi= ...

随机推荐

  1. html5-移动端布局模板

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  2. Another Meaning (KMP + DP)

    先用KMP重叠匹配求出各个匹配成功的尾串位置.然后利用DP去求,那转移方程应该是等于 上一个状态 (无法匹配新尾巴) 上一个状态 + 以本次匹配起点为结尾的状态(就是说有了新的位置) + 1 (单单一 ...

  3. OC 反射-->动态创建类

    系统方法 NSLog(@"%s", __func__); //打印出类的方法名称,如: //打印结果:2018-02-22 10:52:15.394575+0800 DemoRun ...

  4. win10 Xshell5连ubuntu服务器

    相当于ubuntu做服务器,win10远程访问,同一局域网下,完全参考度娘 教你怎么使用xshell远程连接linux服务器 ubuntu系统ifconfig -a查看ip地址,添加到主机那里,连接时 ...

  5. FilenameFilter

    Introduction: java.io.FileNameFilter is a interface which is for filtering by filename, if filename ...

  6. java中的神奇"this"

    java中的神奇"this",神奇的原因事它能不用new就可以直接创造一个对象出来,后来研究发现,其实java的“this”使用时,也是"new"了一个当前的对 ...

  7. nginx tomcat https

    .首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel . server { listen s ...

  8. Numpy 数组简单操作

    创建一个2*2的数组,计算对角线上元素的和 import numpy as np a = np.arange(4).reshape(2,2) print (a) #[[0 1] # [2 3]] n1 ...

  9. Mysql初级第二天(wangyun)

    SQL 1.LIKE 操作符 SELECT 列名称 FROM 表名称 WHERE 列 LIKE 值('N%'/'%N%'/'%N','N_') SELECT 列名称 FROM 表名称 WHERE 列 ...

  10. Tomcat启动报错:[The configuration may be corrupt or incomplete]的解决方案

    1,场景说明: 偶然碰见Tomcat启动报错,此时并没有Add任何Web项目: Could not load the Tomcat server configuration at /Servers/T ...