P4340 [SHOI2016]随机序列】的更多相关文章

题目 P4340 [SHOI2016]随机序列 思维好题 做法 是否觉得水在于你是否发现加减是会抵消的,所以我们只用考虑乘的部分 一块乘只能前面无号(也就是前缀形式)才统计,所以用线段树维护区间前缀乘就行了 My complete code #include<cstdio> #include<cstring> #include<string> #include<iostream> #include<string> #include<algo…
https://www.lydsy.com/JudgeOnline/problem.php?id=4597 https://www.luogu.org/problemnew/show/P4340 妄图直接暴力维护一堆东西,以直接维护题目要求的值(具体见代码...) 最后花了2个小时维护完了,A掉了,然而好像常数比别人大一倍? 上网搜题解,发现大部分东西都可以抵消掉??回想维护过程中,好像有一堆抵消掉的东西? 看来即使可以暴力维护,也还是要多观察题目性质... #include<cstdio>…
题目大意:有$n(n\leqslant10^5)$个数,每两个数之间可以加入$+-\times$三种符号,$q(q\leqslant10^5)$次询问,每次询问修改一个数后,所有表达式可能的值的和 题解:发现任意一个表达式,把所有的$+-$取反,后面的值为相反数,相互抵消,而第一项的连乘,符号一定是正的.所以只有最开始连乘的一段是有用的,线段树区间修改即可 卡点:无 C++ Code: #include <cstdio> #include <iostream> #define ma…
[BZOJ4597][Shoi2016]随机序列 Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者减号或者乘号.那么一共有 3^(n-1) 种可能的表达式.你对所有可能的表达式的值的和非常感兴趣.但这毕竟太简单了,所以你还打算支持一个修改操作,可以修改某个Ai 的值.你能够编写一个程序对每个修改都输出修改完 之后所有可能表达式的和吗?注意,修改是永久的,也就是说每次修改都是在上一次修改的基础上进行,…
4597: [Shoi2016]随机序列 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 255  Solved: 174[Submit][Status][Discuss] Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表达式.你对所有可能的表达式的值的和非常感兴趣.但这毕竟太 简单了,所以你还打算…
Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表达式.你对所有可能的表达式的值的和非常感兴趣.但这毕竟太 简单了,所以你还打算支持一个修改操作,可以修改某个Ai 的值.你能够编写一个程序对每个修改都输出修改完 之后所有可能表达式的和吗?注意,修改是永久的,也就是说每次修改都是在上一次修改的基础上进行, 而不是 在最初的表达式上进行. Input…
https://www.lydsy.com/JudgeOnline/problem.php?id=4597 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者减号或者乘号.那么一共有 3^(n-1) 种可能的表达式.你对所有可能的表达式的值的和非常感兴趣.但这毕竟太简单了,所以你还打算支持一个修改操作,可以修改某个Ai 的值.你能够编写一个程序对每个修改都输出修改完之后所有可能表达式的和吗?注意,修改是永久的,也就是说每次修…
先考虑题目所说的太简单了的问题.注意到只要把加减号相取反,就可以得到一对除了第一项都互相抵消的式子.于是得到答案即为Σf(i)g(i),其中f(i)为前缀积,g(i)为第i个数前面所有符号均填乘号,第i个数后面符号不填乘号,剩余任意填的方案数,也即g(i)=2*3n-i-1(i<n),g(n)=1. 现在考虑修改产生的影响.显然会造成一段后缀的前缀积的改变.给他们区间乘一下维护区间和就好了. #include<iostream> #include<cstdio> #inclu…
给你一个数列,在相邻两个数之间插入加号,减号或乘号 每次支持单点修改,求所有这样可以得到的表达式之和,膜1e9 + 7 sol: 我是个 sb ... 可以发现,如果某位置出现了加号,后面一定有一个减号把它消掉,于是答案就是一些出现了好几次的前缀积之和 算一下每段前缀积的贡献即可 #include<bits/stdc++.h> #define int long long using namespace std; inline int read() { ,f = ;char ch = getch…
可以发现加减号之间可以互相抵消. 真正加到答案里的只有一些前缀积. 记s[i]为a[1]*a[2]*a[3]...*a[i].那s[i]在答案中出现的次数就是2*3^(n-i-1); 修改一个数只会对后面的数有影响. 预处理逆元然后用线段树维护即可. #include<iostream> #include<cstdio> #include<cstring> #define N 100010 #define P 1000000007 using namespace std…
Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表达式.你对所有可能的表达式的值的和非常感兴趣.但这毕竟太 简单了,所以你还打算支持一个修改操作,可以修改某个Ai 的值.你能够编写一个程序对每个修改都输出修改完 之后所有可能表达式的和吗?注意,修改是永久的,也就是说每次修改都是在上一次修改的基础上进行, 而不是 在最初的表达式上进行. Input…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
题解 我们发现只有从第一个往后数,用乘号联通的块是有贡献的 为什么,因为后面所有表达式 肯定会有 + ,还会有个-,贡献全都被抵消了 所以我们处理出前缀乘积,然后乘上表达式的方案数 答案就是\(\sum_{i = 1}^{n - 1} S[i] * 2 * 3^{n - 1 - i} + S[n]\) 设新值为v,旧值为u,修改的时候相当于一段区间乘上\(\frac{v}{u}\) 线段树维护即可 代码 #include <iostream> #include <algorithm>…
定义区间是内部只含有乘号的区间. 对于区间左端点是 \(l \geq 2\) 的情况,左端点前头是加号的情况和前头是减号的情况的个数是相同的.因此这些区间不对答案产生贡献. 所以区间左端点必定是 \(1\).当 \(r=n\) 时,这个区间产生一次贡献.当 \(r < n\) 时,这个区间产生 \(2 \times 3^{n-r-1}\) 次贡献. 掏出一棵支持区间乘,整体求和的线段树. #include <iostream> #include <cassert> #incl…
传送门 这道题的题意就是给你n个数让你在每个数之间插入+.-.*三种运算符中的一种,然后算出一个答案,再把答案加起来. 这题肯定是不能暴力的(题目都告诉你了由3n-1种结果).我们先从小的情况枚举找一找规律. n=1 a1 n=2 2*a1+a1*a2 n=3 6*a1+2*a1*a2+a1*a2*a3 n=4 18*a1+6*a1*a2+2a1*a2*a3+a1*a2*a3*a4 发现没有?每一项是一个前缀积,每一项的系数除了最后两项都是后一项*3.这样我们就可以拿线段树维护这个答案了. 每次…
Day0 学校刚期中考完,全科血崩,感觉这次真要考不到一本线了tat 晚上写了个可持久化trie的题,也懒得敲板子(上个礼拜都敲过了),就碎叫了 Day1 上午起床吃饭水群看球,吃完中饭就去考场了. 下雨,路上花了挺长时间,到的挺晚的.然后就开考了. 这次和LN.JL是同一套卷子,感觉丢脸要丢到外省去了啊TAT 看题,T1是一棵树,然后可以插眼啥的题,求最小费用.感觉一脸可做啊,应该是树DP,感觉做过类似的题? 不过决定先看完题目.然后再看T2,网格图挖点求正方形个数,这怎么做啊qaq 然后再看…
问题描述: 给定输入N,生成从1开始的:1,2,3,4,......N 一组随机序列,序列中的数不能重复出现. 比如:N=5,合法的随机序列为{4,3,1,5,2} .{3,1,4,2,5}……非法的序列有{5,4,1,2,1} 来源:<数据结构与算法分析-MAW著  第二章习题2.8> 思路1: 对于数据a[N]而言,当随机生成第i个数a[i]时,确保a[i]在 a[0]至a[i-1]中没有出现过,就把该数放入a[i],继续生成下一个数a[i+1] 算法复杂度为O(N^2logN)---每生…
[OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果a[n+1]在之前出现不超过两次,n = n + 1 并且转到第二步. 比如,如果S=4, A=2, B=1并且P=6,那么我们构建的序列是4,3,1,3,1 Bob认为两个随机产生的序列之前应该会有某种关联.所以他想知道这两个随机生成的序列的最长公共子序列.一个序列的子序列是指可以从该序列中删除某…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Status][Discuss] Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 464  Solved: 264[Submit][Status][Discuss] Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解…
本文介绍如何利用Python自行生成随机序列,实现了 Whichmann / Hill 生成器. 参考: [1]Random Number Generation and Monte Carlo Methods(P.47) [2]简单产生白噪声的算法 [3]各种分布白噪声的产生 基本原理 本文粗略将随机数分为两种:均匀分布以及非均匀分布.均匀分布随机数通过非线性变换可得到非均匀分布的随机数.故而均匀分布随机数更基本.引文[3]中提到了三种生成算法:线性同余法.联合法.反馈位移寄存法.限于时间,简述…
「SHOI2016」黑暗前的幻想乡 sb题想不出来,应该去思考原因,而不是自暴自弃 一开始总是想着对子树做dp,但是状态压不起去,考虑用容斥消减一些条件变得好统计,结果越想越乱. 期间想过矩阵树定理,但没想清楚又被我忽略了. 其实非常简单 你对着所有的东西跑一遍生成树计数,然后你发现统计了同一个施工队的方案,然后发现可以枚举子集,就是个sb容斥了 Code: #include <cstdio> #include <cctype> #include <algorithm>…
这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. 有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这个饰品只剩下了n-1条细线,但通过这些细线,这颗小星星还是被串在一起,也就是这些小星星通过这些细线形成了树.小Y找到了这个饰品的设计图纸,她想知道现在饰品中的小星星对应着原来图纸上的哪些小星星.如果现在饰品中两颗小星星有细线相连,那么要求对应的…
检验两个随机序列的beta系数 代码 def test_beta(loops=10): ''' 检验两个随机序列的beta系数 :loops: int, 循环次数, 每次循环会产生两个随机序列, 然后 绘图, 然后估算其beta值, 最后把结果打印出来 >>> test_beta() ''' _date = datetime.now().date().isoformat() title='两个随机序列的beta系数检验 制作日期: {}'.format(_date) print(titl…
P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理(高斯消元+乘法逆元)+容斥 ans=总方案数 -(公司1未参加方案数 ∪ 公司2未参加方案数 ∪ 公司3未参加方案数 ∪ ...... ∪ 公司n未参加方案数) 方案数=生成树方案数 所以用矩阵树定理瞎搞 显然后面的部分可以用容斥原理求解 枚举的时候用一个数转成二进制来表示哪些公司参加/不参加 mod=1e9+7是质数所以可以在高斯消元的时候用逆元搞 #include<iostream> #include<cstdio>…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 324  Solved: 187 Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解决方案. 风间幽香是幻想乡里少有的意识到了问题的严…
Loj 2028 随机序列 连续的乘号会将序列分成若干个块,块与块之间用加减号连接: \[ (a_1*a_2*...a_i)\pm(a_{i+1}*a_{i+2}*...a_j)\pm... \] 除去所有都是乘号的一种,对于任意一个序列,总有与之对应唯一的另一个序列,它们所有的加减号都相反. 把这两个序列的和相加,就只剩下了 \(2*(a_1*a_2*...a_i)\),其中 \(i\) 为第一个加减号之前的位置. 那么平均下来,相当于每个序列的贡献为 \((a_1*a_2*...a_i)\)…
[BZOJ4596][Shoi2016]黑暗前的幻想乡 Description 幽香上台以后,第一项措施就是要修建幻想乡的公路.幻想乡有 N 个城市,之间原来没有任何路.幽香向选民承诺要减税,所以她打算只修 N- 1 条路将这些城市连接起来.但是幻想乡有正好 N- 1 个建筑公司,每个建筑公司都想在修路的过程中获得一些好处. 虽然这些建筑公司在选举前没有给幽香钱,幽香还是打算和他们搞好关系,因为她还指望他们帮她建墙.所以她打算让每个建筑公司都负责一条路来修.每个建筑公司都告诉了幽香自己有能力负责…
#2024. 「JLOI / SHOI2016」侦查守卫   题目描述 小 R 和 B 神正在玩一款游戏.这款游戏的地图由 nnn 个点和 n−1n - 1n−1 条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有 nnn 个节点的树. 游戏中有一种道具叫做侦查守卫,当一名玩家在一个点上放置侦查守卫后,它可以监视这个点以及与这个点的距离在 ddd 以内的所有点.这里两个点之间的距离定义为它们在树上的距离,也就是两个点之间唯一的简单路径上所经过边的条数. 在一个点上放…
#2026. 「JLOI / SHOI2016」成绩比较   题目描述 THU 的 G 系中有许许多多的大牛,比如小 R 的室友 B 神.B 神已经厌倦了与其他的同学比较 GPA(Grade Point Average,平均学分绩),他只在意 G 系中共有多少同学被他“碾压”. B 神声称,在 G 系共有 kkk 位同学被他碾压.同是 G 系大牛的 D 神则认为 B 神在吹牛,他查到了 B 神每门必修课在 G 系的排名.他用了 173 毫秒的时间就计算出了有多少种情况使得 B 神所说的话成立.现…