首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ4105 [Thu Summer Camp 2015]平方运算 【线段树】
】的更多相关文章
BZOJ4105 [Thu Summer Camp 2015]平方运算 【线段树】
题目链接 BZOJ4105 题解 平方操作orz,虽说应该是线段树,但是不会维护啊QAQ 小瞧一眼题解... 平方成环?环长\(lcm\)小于\(60\)? 果然还是打表找规律题.... 那就很好做了,先预处理每个数是否在环上,如果当前区间存在数不在环上,就暴力修改 如果当前区间都在环上了,就处理出环,之后每次修改只在环上走一步即可 每次修改可能会重置\(logn\)个节点的信息,由于重置一次要求出环,是\(O(60)\)的,所以修改总复杂度是\(O(60nlogn)\)的,可以接受 #incl…
2018.10.18 bzoj4105: [Thu Summer Camp 2015]平方运算(线段树)
传送门 线段树妙题. 显然平方几次就会循环(打表证明不解释). 然后所有环长度的lcmlcmlcm不大于70. 因此维护一下当前区间中的节点是否全部在环上. 不是直接暴力到叶子节点修改. 否则整体打标记. 简单合并一下就行了.(细节见代码) 代码: #include<bits/stdc++.h> #define N 100005 #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p].r>>…
bzoj4105: [Thu Summer Camp 2015]平方运算
填坑 我不知道怎么算的,但是所有环的LCM数不会超过60 然后用线段树维护这个东西,每个节点记录子树内的循环节 没到循环节的暴力枚举 复杂度是nlogn再乘以循环节长度 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<vector> #de…
bzoj:4105: [Thu Summer Camp 2015]平方运算
Description Input 第一行有三个整数N,M,p,分别代表序列的长度.平方操作与询问操作的总次数以及在平方操作中所要模的数. 接下来一行N个数代表一开始的序列{X1,X2,...,XN}. 接下来M行,每行三个整数op,l,r.其中op代表本次操作的类型.若op=0,代表这是一次平方操作,平方的区间为[l,r]:如果op=1,代表这是一次询问操作,询问的区间为[l,r]. Output 对于每次的询问操作,输出一行代表这段区间内数的总和.注意:答案没有对任何数取模.…
4105: [Thu Summer Camp 2015]平方运算
首先嘛这道题目只要知道一个东西就很容易了:所有循环的最小公约数<=60,成一条链的长度最大为11,那么我们就可以用一个很裸的方法.对于在链上的数,我们修改直接暴力找出并修改.对于在环上的数,我们对每一步建立一颗线段树,那么修改就变成了交换60棵线段树的某个子树.然后我们就可以愉快的写啦~~~ 在想的时候被同学坑了,他说最长的循环不超过60.... 在实现方面,我用一个map+树状数组维护链上的答案,然后用60棵线段树来维护这个环.懂了之后还是很好写哒~~~ Code: #include <cs…
[Thu Summer Camp 2015]解密运算
4104: [Thu Summer Camp 2015]解密运算 Time Limit: 10 Sec Memory Limit: 512 MB Description 对于一个长度为N的字符串,我们在字符串的末尾添加一个特殊的字符".".之后将字符串视为一个环,从位置1,2,3,...,N+1为起点读出N+1个字符,就能得到N+1个字符串. 比如对于字符串“ABCAAA”,我们可以得到这N+1个串: ABCAAA. BCAAA.A CAAA.AB AAA.ABC…
【BZOJ 4104】 4104: [Thu Summer Camp 2015]解密运算 (智商)
4104: [Thu Summer Camp 2015]解密运算 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 370 Solved: 237 Description 对于一个长度为N的字符串,我们在字符串的末尾添加一个特殊的字符".".之后将字符串视为一个环,从位置1,2,3,...,N+1为起点读出N+1个字符,就能得到N+1个字符串. 比如对于字符串“ABCAAA”,我们可以得到这N+1个串: ABCAAA. BCAAA.A C…
BZOJ4104:[Thu Summer Camp 2015]解密运算——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4104 对于一个长度为N的字符串,我们在字符串的末尾添加一个特殊的字符".".之后将字符串视为一个环,从位置1,2,3,...,N+1为起点读出N+1个字符,就能得到N+1个字符串. 比如对于字符串“ABCAAA”,我们可以得到这N+1个串: ABCAAA. BCAAA.A CAAA.AB AAA.ABC AA.ABCA A.ABCAA .ABCAAA 接着我们对得到的这N+1个串按字典…
BZOJ4104 [Thu Summer Camp 2015]解密运算 【乱搞】
题目链接 BZOJ4104 题解 我们将已知字符排序,由循环就可以得到一个对应关系 如样例就是: 0->第5行 1->第1行 1->第2行 1->第3行 1->第5行 2>第6行 3->第4行 按照这个循序加入答案即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #inc…
bzoj 4104 [Thu Summer Camp 2015]解密运算——思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4104 想了很久,想出一个 nlogn (也许是 n2logn )的,可惜空间是 n2 . 已知字符集,对它排个序,对应上给出的那些字符,就能知道每个字符前面是哪个字符. 这样得到了一些长度为2的串.这些长度为2的串一定也是这 n+1 行的开头:所以对它们排序后对应上给出的那些字符,就能得到长度为3的串.这样就能得到答案. 但是太慢.考虑已知长度为 k 的串,想一下把它接成 2*k 的串.…