题解 P4692 【[Ynoi2016]谁的梦】】的更多相关文章

传送门 分别考虑每一种颜色对答案的贡献.每种颜色的贡献就是他出现的区间个数,那么可以用总区间减去不包含它的区间个数,把每一个序列里不包含它的区间个数加起来,然后不同序列用乘法原理计算即可 于是我辛辛苦苦打了两个小时交上去只剩两分--后来看了题解之后才发现我忘了考虑某个序列全都是一个数的情况--那种情况下这个数贡献为0,然而后面删除它的时候没办法消除贡献因为0没有逆元-- 于是解决方法就是记录一下这个数字是否在某个序列里全都是,如果是的话不包含它的区间为0,否则的话正常计算就可以了 然后代码里是一…
Ynoi 中少见的不卡常题呢....虽说有 50 个数据点... 果然还是道好题 noteskey 总之就是补集转化的思想,算出每种颜色选点的总方案减去不可行方案(就是不包含 该种颜色的点的区间选取方案)就是每种颜色的贡献 然后就是考虑每种颜色把一个区间分成若干份,那么我们只需要算出这若干份区间内的子区间个数就行了 具体操作也就是考虑每次加入一个点后会减去原来区间的贡献然后加上新的两个区间的贡献 那么删除点也是同理 复杂度 \((n+m)log(n+m)\) ,说白了就是 \(O(n ~log…
题目大意: 给定$n$个序列,要你从每个序列中选一个非空子串然后拼起来,拼成的序列的贡献为不同元素个数. 支持单点修改,在开始时和每次修改完后,输出所有不同选取方案的贡献和. 解题思路: 窝又来切Ynoi辣 STL题. 考虑每种元素的贡献,相当于求出有多少种方案包含这个数.补集转化成有多少种方案不包含这个数. 求有多少种方案不包含这个数,就相当于求每个序列有多少子区间不包含这个数,然后乘法原理. 而求有多少子区间不包含这个数,就相当于用这个数把序列分成若干区间,每个区间内部可以任意选取. 用一个…
5395: [Ynoi2016]谁的梦 Time Limit: 80 Sec  Memory Limit: 128 MBSubmit: 22  Solved: 7[Submit][Status][Discuss] Description 6.373 世界是独立于我的意志的. 6.374 就算我们所期望的全部的事情都发生了 这果然也只能说是命运的恩惠吧. 要问为什么,那是因为意志和世界之间 能够保证这件事的逻辑性的关联并不存在 Ludwig Josef Johann Wittgenstein [逻…
按照旧例,先安利一下主要作者:一扶苏一 以及扶苏一直挂念的——银临姐姐:银临_百度百科 (滑稽) 好哒,现在步入正题: 先看第一题: 题解: 在NOIP范围内,看到“求方案数”,就说明这个题是一个计数问题.数据范围小的时候一般用DP/递推,数据范围大了的话一般就是数学问题的(组合数学警告).如果这道题用DP的话,状态即为:dp[i][j]表示第i盆花摆到第j个空的方案数.状态转移方程即为:dp[i][j]=∑dp[i-1][k],k=2*(i-2)+1,...,j-2;时间复杂度为O(n2m).…
UVA540 Team Queue 题解 题目描述:题目原题 https://vjudge.net/problem/UVA-540 Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At l…
题面. 看到这道题,我第一反应就是莫队. 我甚至也猜出了把所有询问的三个区间压到一起处理然后分别计算对应询问答案. 但是,这么复杂的贡献用什么东西存?难道要开一个数组 query_appear_time[ 100000 ][ 100000 ]? 于是我打消了这个念头,最后还是看题解做的. 简化题意:给一个序列,给一些询问,每个询问包含三个区间代表序列的三个子序列,要求出这三个对应子序列去掉三个子序列都具有的公共数字后剩下的数字个数. 令三个区间为a1,a2,a3. 要求的答案就是a1数字个数-公…
题目传送门 这道题暴力又让我过了...数据真的很水(luogu) 暴力枚举n~m的每个数,再统计一次,交付评测...AC #include<bits/stdc++.h> using namespace std; ]; int main(){ scanf("%d%d",&n,&m); for(int i=n;i<=m;i++){ ,fs; ){ ++k; fs=tmp%; tmp/=; a[fs]++; } } ;i<=;i++) printf(&…
B题(数学题: 问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式  如果可以 输出 m%1e9+7 否则 输出no n<=1e18 刚看题没思路 暴力一下吧 发现根本没有no的情况 那么就好办多了 所求的值序列为 1, 2, 9, 50, 289, 1682, 9801, 57122, 332929, 1940450, 11309769 设(1+sqrt(2)) ^n为 A_n+B_n*sqrt(2) ,则: A_n = A_(n-1)+2*B_(n-1)…
题面传送门:https://www.luogu.org/problemnew/show/P4688 (温馨提示,请直接翻至题目描述部分) 1e5的数据范围,以及对区间每个权值出现次数取min此类主席树才能解决的操作会让我们想到莫队: 三个区间取交集的操作会让我们想到bitset. 然而同个数值在多个位置出现需要分别计算,这点让我们对于使用bitset产生了怀疑. 但实际上我们可以利用一个小trick来解决这个问题,那就是利用不寻常的离散化,就是sort之后不用unique,让bitset每一位不…