string [线段树优化桶排]】的更多相关文章

题意大概是给你一个字符串,1e5次修改,每次给一个区间升序排列或降序排列,最后输出这个字符串; 其实是个挺裸的线段树优化题;但是我没有意识去结合桶排,扑该..... 首先 1.40分算法 O(NMlogN) inline void update(int k){ ;i<=;++i){ tmp[k].tong[i]=tmp[ls].tong[i]+tmp[rs].tong[i]; } } void ud(int k,int l,int r,int L,int R){ if(L<=l&&am…
题目链接:http://codeforces.com/contest/558/problem/E E. A Simple Task time limit per test5 seconds memory limit per test512 megabytes inputstandard input outputstandard output   This task is very simple. Given a string S of length n and q queries each qu…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5877  题意:给你一颗树,有n个节点,每个节点都有一个权值v[i]:现在求有多少对(u,v)满足u是v的祖先,并且au*av<=k, k是已知的: 思路:从根节点开始dfs遍历整棵树,当遍历到某点u时,已经在栈中的节点都是u的祖先的,所以我们只要找到在栈中的节点有多少个是<=k/a[u]的即可: 由于n的值最大可达到10e5,所以直接查找是会TLE的,我们可以用线段树优化即可:在dfs…
题意:一个长度为n的字符串(只包含26个小字母)有q次操作 对于每次操作 给一个区间 和k k为1把该区间的字符不降序排序 k为0把该区间的字符不升序排序 求q次操作后所得字符串 思路: 该题数据规模很大 排序是关键想到计数排序,根据计数排序原理,由只有26个小写字母,需要统计区间字母的个数,还需要更新区间,想到用线段树优化,对于每个字母建一个线段树维护各字母在区间的个数. #include <map> #include <set> #include <list> #i…
题目链接 and 题目大意 hdu3698 但是 hdu的数据比较弱,所以在这luogu提交吧UVA1490 Let the light guide us 有一个\(n*m\)的平原,要求每行选一个点,选\(n\)个点建造塔楼. 平原上每个点都有他自己的花费时间和魔法值. 为了正确控制塔楼,我们必须保证连续两排的每两座塔共用一个共同的魔法区域. 也就是要求每两行相邻的点都满足如下关系: 如果第\(i\)行选\(j\),第\(i+1\)行选\(k\),则需\(|j-k|≤f(i,j)+f(i+1,…
D. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard input output standard output Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought required ingredients and a wonder-oven whic…
http://codeforces.com/problemset/problem/629/D 题目大意: 我第一反应就是求最长上升子序列和  但是数值太大了  不能直接dp求  可以用线段树优化一下 #include<stdio.h> #include<string.h> #include<stdio.h> #include<math.h> #include<iostream> #include<algorithm> using na…
这个题目和之前写的一个线段树优化建图是一样的. B - Legacy CodeForces - 787D 线段树优化建图+dij最短路 基本套路 之前这个题目可以相当于一个模板,直接套用就可以了. 不过注意为了提高效率,在区间与区间之间建边的时候建了两个虚点. 题目 G. 神圣的 F2 连接着我们 #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include…
D - The Bakery CodeForces - 834D 这个题目好难啊,我理解了好久,都没有怎么理解好, 这种线段树优化dp,感觉还是很难的. 直接说思路吧,说不清楚就看代码吧. 这个题目转移方程还是很好写的, dp[i][j]表示前面 i 个蛋糕 分成了 j 个数字的最大价值. dp[i][j]=max(dp[k][j-1]+val[k+1~i]) 显而易见的是,这个肯定不可以直接暴力求,所以就要用到线段树优化. 线段树怎么优化呢, 先看这个问题,给你一个点 x ,问你以这个点为右端…
B - Legacy CodeForces - 787D 这个题目开始看过去还是很简单的,就是一个最短路,但是这个最短路的建图没有那么简单,因为直接的普通建图边太多了,肯定会超时的,所以要用线段树来优化建图. 这个题目我一开始也没想到,不知道怎么用线段树优化,然后看了一下题解,豁然开朗. 首先建两棵线段树,有点类似拆点,然后其中一颗从下往上建图A,一颗从上往下建图B. 从上往下建图的每一个叶子节点连着从上往下建图的每一个叶子节点. 权值都是0 p==1 那就直接是B 的叶子节点连着A 的叶子节点…