CF240F (26颗线段树计数)】的更多相关文章

题目链接:Topcoder----洛谷 题目大意: 给定一个长为n的由a到z组成的字符串,有m次操作,每次操作将[l,r]这些位置的字符进行重排,得到字典序最小的回文字符串,如果无法操作就不进行. 思路: 用26颗线段树分别统计在每个位置上是否有对应的字母 每次操作: 1.有出现次数为奇数的字母: 大于1,不可能回文,无法操作. 等于1,放到中间 2.全是偶数次数: 分别放两端 1 # include<bits/stdc++.h> 2 using namespace std; 3 #defin…
题目链接: http://codeforces.com/problemset/problem/558/E E. A Simple Task time limit per test5 secondsmemory limit per test512 megabytes 问题描述 This task is very simple. Given a string S of length n and q queries each query is on the format i j k which mea…
题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序. 题解:建立26棵线段树,类似计数排序思想. #include <bits/stdc++.h> using namespace std; ; struct SegTree { ], sum[], l, r; }T[N << ]; ][N]; void pushup(int p, int c) { T[p…
https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用于区间查询) 多颗线段树的时候将函数写进结构体里,这样所有函数只需要写一次了 #include<bits/stdc++.h> #define pb push_back #define M 100005 using namespace std; int n,i,x[M],y[M],sz,tp; lo…
以前似乎做过类似的不过当时完全不会.现在看到就有点思路了,开始还有洋洋得意得觉得自己有不小的进步了,结果思路错了...改了很久后测试数据过了还果断爆空间... 给你一串数字A,然后是两种操作: "1 l r k c":意思是当 l=<i<=r 对(i-a)%k = =0 的每个 Ai 都增加 c (1=<k<=10) "2 i" :意思是求出 Ai 一看就是区间更新和单点查询,其实可以用树状数组做,可是觉得线段树好弄一点,结果成功入坑...…
又是一开始觉得的水题,结果GG了好久的东西... 题意是给你n个英雄,每个英雄开始为1级经验为0,最多可以升到k级并且经验一直叠加,每一级都有一个经验值上限,达到就升级.接着给你两种操作:W li ri ei:从第li到第ri个增加经验基数ei,注意这儿ei还需要乘以级数才是真正增加的经验,还有就是先在此等级下增加此等级倍数的经验,然后再判断升级情况 Q li ri :在第li到第ri个查找经验最多的值 记录最大值嘛,不过因为级数控制增加的倍数,也就是说区间更新时,多次更新标记得到的只是基数ei…
http://codeforces.com/problemset/problem/85/D 题意: 给你N(0<N<1e5)次操作,每次操作有3种方式, 1.向集合里加一个数a(0<a<1e9)(增加数a之前的集合一定不存在a) 2.向集合里删一个数a(0<a<1e9)(删除数a之前的集合一定存在a) 3.将下标i%5==3的数相加,计算总和并相加. 分析: 先离散,然后线段树,sum[i]用来标识前i项有几个数,ans[rt][i]表示以rt为根的子树中第i大数的和…
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+11; typedef long long ll; char str[maxn]; int a[26][maxn]; struct ST{ #define lc o<<1 #define rc o<<1|1 int num[maxn<<2],lazy[maxn<<2],lazy2[maxn<<2]; vo…
http://codeforces.com/problemset/problem/558/E Examples input 1 abacdabcda output 1 cbcaaaabdd input 2 agjucbvdfk output 2 abcdfgjkuv 题意:给出一个字母的序列(只包含小写字母),每次对它的一个区间进行排序(递增或递减),问最后的字母序列. 自闭题,身为蒟蒻的我读完题后单纯的觉得这题如名字一一样一个简单的任务(完全没有意识到问题的严重性),直接sort走起,结果..…
计数排序的原理,只要知道了有几个数比i小,就可以知道i的位置 这道题只有26个字母,搞26颗线段树,然后区间更新 #include <cstdio> #include <cstring> #include <algorithm> //using namespace std; ; int N,Q; char line[maxn]; #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r #defi…