luogu P5342 [TJOI2019]甲苯先生的线段树
你个好好的省选怎么可以出CF原题啊,你们这个题害人不浅啊,这样子出题像极了cxk,说到cxk,我又想起了他是NBA形象大使,跟我是西游文化大使一样一样的,今年下半年...
别说了,jinsaisannian
因为线段树树高是\(logn\)层的,所以第一问可以直接暴力做,后面记这个权值为\(n\).第二问的话,暴力是枚举路径最上面那个点以及下面的两个端点,不过可以改为枚举两边向下延伸的长度,记为\(l,r\),然后\((x,l,r)\)权值下界为\(x+2x+4x...+2lx+2(x+1)+4(x+1)...+2r(x+1)=(2^{l+1}+2^{r+1}-3)x+2^r-1\)
也就是两条链全往左延伸;对于\((x-1,l,r)\),他权值上界情况下,每个点的权值都是小于\((x,l,r)\)的权值下界情况的对应的点权值,所以对于一对\((l,r)\),\(x\)的权值范围是无交的,那么对于一个\(n\)和\((l,r)\),只有一个\(x\)有贡献,也就是\(\lfloor\frac{n-2^r+1}{2^{l+1}+2^{r+1}-3}\rfloor\).于是可以把\(n\)减去权值下界\((2^{l+1}+2^{r+1}-3)x+2^r-1\),那么只要考虑两条链形态对答案的影响了.以长度为\(l\)的链(左链)为例,可以发现有\(l-1\)个地方可以选择走左边或者右边,如果在从上到下第一个地方选择走右边,最后会多出来\(2^{l-1}-1\)的权值,在第二个地方选择走右边会多出来\(2^{l-2}-1\)的权值...\(r\)类似.现在问题变成枚举\((l,r)\),然后\(n\)减去下界,有两个长度分别为\(l-1,r-1\)的\(01\)串,在某个串第\(i\)位选\(1\)权值加上\(2^i-1\),问多少个确定每个位置\(0/1\)的方案,使得权值为\(n\).这个可以数位dp解决但是我不会qwq,还可以记忆化搜索,复杂度为\(O(d^4)-O(d^5)\) 复杂度也不会证qwq
luogu P5342 [TJOI2019]甲苯先生的线段树的更多相关文章
- 【题解】Luogu P5342 [TJOI2019]甲苯先生的线段树
原题传送门 挺有趣的一道题 \(c=1\),暴力求出点权和n即可 \(c=2\),先像\(c=1\)一样暴力求出点权和n,考虑有多少路径点权和也为n 考虑设x为路径的转折点,\(L\)为\(x\)向左 ...
- p5342 [TJOI2019]甲苯先生的线段树
分析 代码 #include<bits/stdc++.h> using namespace std; #define int long long ],yy[],cnt1,cnt2; ][ ...
- [TJOI2019] 甲苯先生的线段树
臭名昭著的巧合:CF750G 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数. 题解传送门 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题. 直觉告诉我们只需要求出两点在线段 ...
- [LOJ3109][TJOI2019]甲苯先生的线段树:DP
分析 首先,请允许我 orz HN队长zsy.链接 我们发现树上的链有两种类,一类是直上直下的,一类不是直上直下的(废话).并且,如果我们确定了左侧和右侧的链的长度和整条链上所有节点的编号之和,那么这 ...
- 【LOJ】#3109. 「TJOI2019」甲苯先生的线段树
LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是$x$,左边走了$l$,右边走了$r$ 肯定答案会是$(2^{l + 1} + 2^{r + ...
- [luogu P3801] 红色的幻想乡 [线段树][树状数组]
题目背景 蕾米莉亚的红雾异变失败后,很不甘心. 题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一 ...
- [luogu P3797] 妖梦斩木棒 [线段树]
题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的 ...
- Luogu P3740 [HAOI2014]贴海报_线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- Luogu P1438无聊的序列【线段树/差分】By cellur925
题目传送门 题目大意:维护一个序列,维护区间加等差数列,单点查询的操作. 首先我们肯定是要用线段树来维护了,按照一般的思维局限,我选择了维护序列中的值,但是区间修改的时候由于公差的存在,所以区间修改有 ...
随机推荐
- Spring Data JPA的Respository接口中查询方法
- 第九周课程总结 & 实验报告(七)
第九周课程总结 一.多线程 1.线程的状态 2.线程操作的相关方法 二.Java IO 1.操作文件的类---File ()基本介绍 ()使用File类操作文件 .RandomAccessFile类 ...
- Scala学习(四)——模式匹配与函数组合
函数组合 让我们创建两个函数: def f(s: String) = "f(" + s + ")" def g(s: String) = "g(&qu ...
- MySQL 数据库 常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...
- leetcode-easy-listnode-21 merge two sorted lists
mycode 一定要记得创建两个头哦,一个找路,一个找家 # Definition for singly-linked list. # class ListNode(object): # def __ ...
- .Net 无法打开Offie Open XML文件(上传和下载使用)
代码: 首先,贴一个上传 public static string UploadFileIntoDir(FileUpload MyFile, string DirName) { if (IfOkFil ...
- 四十七:数据库之alembic数据库迁移工具的基本使用
在一般情况下,如果修改了模型,如增加或者删除了字段,SQLAlchemy是不会更新的,这就需要使用alembic来实现 使用alembic步骤:一:定义好模型二:使用alembic创建一个仓库:ale ...
- 四十三:数据库之SQLAlchemy之group_by和having子句
group_by:根据某个字段进行分组,比如想要根据年龄进行分组,再统计每一组有多少人having:对查找结果进一步过滤,类似于SQL语句的where 准备工作 from sqlalchemy imp ...
- Python学习之==>字符串格式化
1.第一种方式 import datetime today = datetime.date.today() username = input('请输入用户名:') welcome = '欢迎光临:' ...
- 【SVN】更新提交失败---- Previous operation has not finished; run 'cleanup' if it was interrupted解决方法
Previous operation has not finished; run 'cleanup' if it was interrupted 问题出处 解决方法 2017-11-01 08: ...