传送门

你个好好的省选怎么可以出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]甲苯先生的线段树的更多相关文章

  1. 【题解】Luogu P5342 [TJOI2019]甲苯先生的线段树

    原题传送门 挺有趣的一道题 \(c=1\),暴力求出点权和n即可 \(c=2\),先像\(c=1\)一样暴力求出点权和n,考虑有多少路径点权和也为n 考虑设x为路径的转折点,\(L\)为\(x\)向左 ...

  2. p5342 [TJOI2019]甲苯先生的线段树

    分析  代码 #include<bits/stdc++.h> using namespace std; #define int long long ],yy[],cnt1,cnt2; ][ ...

  3. [TJOI2019] 甲苯先生的线段树

    臭名昭著的巧合:CF750G 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数. 题解传送门 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题. 直觉告诉我们只需要求出两点在线段 ...

  4. [LOJ3109][TJOI2019]甲苯先生的线段树:DP

    分析 首先,请允许我 orz HN队长zsy.链接 我们发现树上的链有两种类,一类是直上直下的,一类不是直上直下的(废话).并且,如果我们确定了左侧和右侧的链的长度和整条链上所有节点的编号之和,那么这 ...

  5. 【LOJ】#3109. 「TJOI2019」甲苯先生的线段树

    LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是$x$,左边走了$l$,右边走了$r$ 肯定答案会是$(2^{l + 1} + 2^{r + ...

  6. [luogu P3801] 红色的幻想乡 [线段树][树状数组]

    题目背景 蕾米莉亚的红雾异变失败后,很不甘心. 题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一 ...

  7. [luogu P3797] 妖梦斩木棒 [线段树]

    题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的 ...

  8. Luogu P3740 [HAOI2014]贴海报_线段树

    线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...

  9. Luogu P1438无聊的序列【线段树/差分】By cellur925

    题目传送门 题目大意:维护一个序列,维护区间加等差数列,单点查询的操作. 首先我们肯定是要用线段树来维护了,按照一般的思维局限,我选择了维护序列中的值,但是区间修改的时候由于公差的存在,所以区间修改有 ...

随机推荐

  1. 分布式-网络通信-NIO

    目录:一.java NIO 和阻塞I/O的区别     1. 阻塞I/O通信模型     2. java NIO原理及通信模型二.java NIO服务端和客户端代码实现 一.java NIO 和阻塞I ...

  2. Vue一个案例引发的动态组件与全局事件绑定总结

    最近在自学 Vue 也了解了一些基本用法,也记录了一些笔记有兴趣的朋友可以去查看我的其他文章,技术这东西真的不能光靠看,看是没有的,你必须要动手实践,只有在实战项目中才能发现问题,才能发现我们没有掌握 ...

  3. linux输出与查看的几种方式

    输出的几种方式:echo/ tee echo "postgres install Failed !!!!!!" | tee -a "$Install_log"# ...

  4. leetcode-easy-string-28 Implement strStr()

    mycode   77.15% class Solution(object): def strStr(self, haystack, needle): """ :type ...

  5. Java反序列化与远程代码执行

    https://mp.weixin.qq.com/s/asQIIF8NI_wvur0U0jNvGw 原创: feng 唯品会安全应急响应中心 2017-09-19 https://mp.weixin. ...

  6. shell 并发进程的例子

    linux shell 实现后台多进程运行的,开始和终止 原创 2014年11月21日 12:04:51 9953 linux shell 实现后台开始,和停止多进程 知识点: xxxxcmd.sh ...

  7. wordpress 更新时需要FTP 服务器账户密码的解决方法

    首先进入 apache下的wordpress 的目录下 (这是apache服务器默认安装的路径) cd /var/www 接着,给html整个文件夹进行赋值权限,如果不赋予权限 更新的时候会报权限不足 ...

  8. 使用bloomfilter

    package bloom; /** * 项目名:SpiderCrawler * 文件名:BloomFilterTest.java * 作者:zhouyh * 时间:2014-8-29 下午02:54 ...

  9. Linux_ubuntu-命令系统管理

    <1>查看当前日历:cal al命令用于查看当前日历,-y显示整年日历: <2>显示或设置时间:date 设置时间格式(需要管理员权限): date [MMDDhhmm[[CC ...

  10. one vs all -- 将01分类器用于多类分类问题

    大多数分类器都是01分类器,如logistic regression.当我们要将数据分为多类的时候, 可以用一种叫one-vs-all的方法将01分类器用于多类分类(mult-class classi ...