CodeForces 616D Longest k-Good Segment】的更多相关文章

用队列维护一下即可 #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; +; int n,k; int a[maxn]; +]; struct Node { int id; int val; } node[maxn]; queue<Node>Q; int main() { scanf("%d%d"…
题意 n个数里,找到最长的一个连续序列使里面最多k个不同的数. 分析 尺取法,每次R++,如果第R个数未出现过,那么不同的数+1,然后这个数的出现次数+1,如果不同的数大于k了,那就要去掉第L个数,直到不同的数为k,然后更新答案. 代码 #include<cstdio> #define ll long long #define N 500005 int n,k; int a[500005],num[1000005]; int l,r; int s,ansl,ansr; int main() {…
K. Perpetuum Mobile Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/K Description The world famous scientist Innokentiy almost finished the creation of perpetuum mobile. Its main part is the energy generator which…
题目链接:http://codeforces.com/gym/100971/problem/K K. Palindromization time limit per test 2.0 s memory limit per test 256 MB input standard input output standard output Mihahim has a string s. He wants to delete exactly one character from it so that th…
D. Longest Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given array a with n elements and the number m. Consider some subsequence of a and the value of least common…
E. K Integers 题目连接:https://codeforces.com/contest/1269/problem/E 题意 给了一个排列p,你每次操作可以交换两个相邻的元素,现在问你最少操作多少次可以形成一个形如1,2,3,4..k 这样的子段 k从1~n 题解: 都在期末考试了,这题解出的也太慢了,我来水一发 首先根据题意可得,要得到一个排好序的子段 对于k=1时,答案必为0 对于k=n时,肯定是将排列p排成1,2,3,...n的最少操作次数 那么当k在1~n之间时,最少操作次数应…
Codeforces 题目传送门 & 洛谷题目传送门 好家伙,刚拿到此题时我连啥是 huffman 编码都不知道 一种对 \(k\) 个字符进行的 huffman 编码的方案可以看作一个由 \(k\) 个叶节点组成的二叉树,从根节点开始走到左儿子相当于在字符串后面添一个 \(0\),走到右儿子相当于在字符串后面添一个 \(1\),那么一个叶子节点就对应着一个字符的编码. huffman 编码的一个很经典的问题是,我们现在对每个字符定义了一个频率 \(f_i\),我们需构造出一棵有 \(k\) 个…
K - Cross SpiderTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87794#problem/K Description The Bytean cross spider (Araneida baitoida) is known to have an amazing ability. Namely, it can instantly b…
http://codeforces.com/problemset/problem/242/E 题意:给出初始n个数,还有m个操作,操作一种是区间求和,一种是区间xor x. 思路:昨天比赛出的一道类似题目,对于一个数,把它变成二进制,那么做xor操作的时候,其实如果那一位xor 1,那么就是取反,否则不变.于是,可以对每一个二进制位开一棵线段树,由于数字最大有1e6,所以只需要开log(1e6) = 20棵线段树.对每一棵线段树统计区间内1的个数,那一位对答案的贡献就是那一位的权值*区间1的个数…
[原题题面]传送门 [题面翻译]传送门 [解题思路] 操作涉及到区间求和和区间异或,考虑到异或操作,我们对每个数二进制分解. 把每一位单独提出来做,异或要么取反要么变为不变,对于每一位建一颗线段树,那么原题中的信息维护就相当于: 1.区间取反 2.区间求和 那就打标记传标记好了.. [code] #include<bits/stdc++.h> using namespace std; ; int n,q,abt,x,y,z; ][N]; ][N<<]; ][N<<],a…