cf Sereja and Array】的更多相关文章

http://codeforces.com/contest/315/problem/B #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define maxn 200000 using namespace std; int a[maxn],b[maxn],c,v,x; int main() { int n,m; cin>>n>>…
A.Even Odds 给你n和k, 把从1到n先排奇数后排偶数排成一个新的序列,输出第k个位置的数. 比如 10 3  拍好后就是 1 3 5 7 9 2 4 6 8 10   第3个数是5. //cf 318 A //2013-06-18-20.30 #include <iostream> using namespace std; int main() { __int64 n, k; while (cin >> n >> k) { if (k <= (n+1)…
给定一个数列:A1, A2,……,An,定义Ks为区间(l,r)中s出现的次数. t个查询,每个查询l,r,对区间内所有a[i],求sigma(K^2*a[i]) 离线+分块 将n个数分成sqrt(n)块. 对所有询问进行排序,排序标准: 1. Q[i].left /block_size < Q[j].left / block_size (块号优先排序) 2. 如果1相同,则 Q[i].right < Q[j].right (按照查询的右边界排序) 问题求解: 从上一个查询后的结果推出当前查询…
离线+分块 将n个数分成sqrt(n)块. 对所有询问进行排序,排序标准:       1. Q[i].left /block_size < Q[j].left / block_size (块号优先排序)       2. 如果1相同,则 Q[i].right < Q[j].right (按照查询的右边界排序) 问题求解: 从上一个查询后的结果推出当前查询的结果.(这个看程序中query的部分) 如果一个数已经出现了x次,那么需要累加(2*x+1)*a[i],因为(x+1)^2*a[i] =…
这个题目的数据感觉不能更水了.从复杂度上计算,肯定有极限数据可以卡掉暴力方法的么. 总之,暴力的做法就是树状数组了,对于区间更新,就挨个更新就是了.当然,判断是否是Lucky Number的话,可以用一个数组标记一下,因为题目中有说数据不会超过10000的.总之就是一个非常不靠谱的方法过了……话说用线段树的区间操作以及延迟标记的话,真心不知道怎么判断加上d之后的Lucky Number的个数,o(╯□╰)o #include <cstdio> #include <cstring>…
简介:分块算法主要是把区间划分成sqrt(n)块,从而降低暴力的复杂度, 其实这算是一种优化的暴力吧,复杂度O(n*sqrt(n)) 题意:给定一个数列:a[i]    (1<= i <= n)    K[j]表示 在区间 [l,r]中j出现的次数. 有t个查询,每个查询l,r,对区间内所有a[i],求sigma(K[a[i]]^2*a[i]) 思路:离线+分块处理 分块和离线处理: 将n个数分成sqrt(n)块,设每块有bsize个数, 并且我们计算出每个询问的左端点所在的块号(q[i].b…
给你n个数,求[l, r] 的一段数,a[l] - a[r] 一共含有k个不相同的数,且sum a[l, r] 最小的那一段. 用队列维护当前数段中不同元素的个数即可. #include<iostream> #include<algorithm> #include<fstream> #include<string> #include<vector> #include<stack> #include<queue> #incl…
A. Sereja and Swaps time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output As usual, Sereja has array a, its elements are integers: a[1], a[2], ..., a[n]. Let's introduce notation: A swap operatio…
CodeForces - 315B Sereja and Array Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status Description Sereja has got an array, consisting of n integers, a1, a2, ..., an. Sereja is an active boy, so he is now going…
清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问题. 应用范围:一般问题是让你回答多个连续区间上的问题,如果你知道了区间[l,r]的答案.你就可以在O(1)或O(logn)时间内知道[l+1,r].[l,r+1].[l-1,r].[l,r-1]区间的答案,那么你就可以应用莫队算法. 实现方法:数组长度为n,查询个数为m.先读入所有查询,然后把查询[l,r]…
题目链接 A. Sereja and Mugs time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:standard output Sereja showed an interesting game to his friends. The game goes like that. Initially, there is a table with an empty cup…
根据题目意思,很容易得出,一个区间里面连续的段数即为最少的group数. 题解上面给的是用树状数组维护的. 询问一个区间的时候,可以一个一个的向里面添加,只需要判断a[i]-1 和 a[i]+1是否已经添加在内,如果两个都在,则总段数减1,如果两个都不在,总段数加1,其他情况总段数不变了.这里有一个需要深入理解的就是其实无论是按顺序添加还是随便添加,统计结果是不变的,但是要看怎么维护了. 每加入一个点,都会有一个改变量v[i],那么此时总段数就是sum{ v[i] } (1 <= i <= x…
背景:czy上课讲了新知识,从未见到过,总结一下. 所谓动态dp,是在动态规划的基础上,需要维护一些修改操作的算法. 这类题目分为如下三个步骤:(都是对于常系数齐次递推问题) 1先不考虑修改,不考虑区间,直接列出整个区间的dp方程.这个是基础,动态dp无论如何还是dp(这一步是一般是重点) 2.列出转移矩阵.由于有很多修改操作,我们将数据集中在一起处理,还可以利用矩阵结合律,并且区间比较好提取,(找一段矩阵就好了),修改也方便. 3.线段树维护矩阵.对于修改,我们就是在矩阵上进行修改,对于不同的…
Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Input:Digit string "23" Output: ["ad", "ae", &q…
这次周赛题目拉了CF315和CF349两套题. 因为我代码模板较长,便只放出关键代码部分 #define ll long long #define MMT(s,a) memset(s, a, sizeof s)#define GO(i,a,b) for(int i = (a); i < (b); ++i)#define GOE(i,a,b) for(int i = (a); i <= (b); ++i)#define OG(i,a,b) for(int i = (a); i > (b);…
一.简介 协同过滤算法[Collaborative Filtering Recommendation]算法是最经典.最常用的推荐算法.该算法通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统关于该指定用户对此信息的喜好程度预测. 二.步骤 1.收集用户偏好. 2.找到相似的用户或物品. 3.计算推荐. 三.用户评分 从用户的行为和偏好中发现规律,并基于此进行推荐,所以收集用户的偏好信息成为系统推荐效果最基础的决定因素. 数据预处理: 1.减噪 因为用户…
A. Sereja and Bottles 模拟. B. Sereja and Array 维护全局增量\(Y\),对于操作1(即\(a_{v_i}=x\))操作,改为\(a_{v_i}=x-Y\). C. Sereja and Contest 观察式子\(d_i=\sum_{j=1}^{i-1}{(a_j\cdot(j-1)-(n-i)\cdot a_i)}\) 假设最先排除的是\(k\),那么对于\(i<k\)的数是不会有影响的,因为\(d_i\)会因为总人数\(n\)的减少而变大. D.…
官网Functions and Operators部分 版本:0.266 目录 官网Functions and Operators部分 1 Comparison Functions and Operators is distinct from greatest/least any/all/some like 2 Conditional Expressions if nullif try 3 Lambda Expressions 4 Conversion Functions cast/try_ca…
http://codeforces.com/problemset/problem/368/B B. Sereja and Suffixes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Sereja has an array a, consisting of n integers a1, a2, ..., an. The bo…
题目链接: 传送门 Devu and Partitioning of the Array time limit per test:1 second     memory limit per test:256 megabytes Description Devu being a small kid, likes to play a lot, but he only likes to play with arrays. While playing he came up with an interes…
B. Yet Another Array Partitioning Task time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output An array bb is called to be a subarray of aa if it forms a continuous subsequence of aa , that is, if…
C. Ayoub and Lost Array time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Ayoub had an array aa of integers of size nn and this array had two interesting properties: All the integers in the a…
题解 非常容易想到的线段树, 还可以用并查集来. 还有一位大神用了$O(n)$ 就过了Orz 要判断是否能染色出输入给出的序列,必须满足两个条件: 1. 序列中必须存在一个$q$ 2. 两个相同的数$x$的中间不存在比 $ x$ 小的数 首先判断输入的数列中是否存在$q$, 若不存在$q$ 且没有 $a_i = 0$, 表示序列中一定没有$q$, 直接输出NO 若存在某个$a_i = 0$ , 将任意一个染成$q$即可 然后我们再查询两个相同的数$x$ 中是否存在比$x$ 小的数,用线段树来维护…
You are given an array of integers. Vasya can permute (change order) its integers. He wants to do it so that as many as possible integers will become on a place where a smaller integer used to stand. Help Vasya find the maximal number of such integer…
任意门:http://codeforces.com/contest/1114/problem/B B. Yet Another Array Partitioning Task time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output An array bb is called to be a subarray of aa if it f…
E. Sereja and Squares http://codeforces.com/contest/314/problem/E 题意: 给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种,用除x之外的小写字母a~z表示.在擦去的地方填入一括号,求有多少种合法的括号序列.答案对4294967296取模. 分析: 首先dp的时候如果前面的一个左括号确定了,右边也就确定了(和它一样就行了).左边不确定的时候'?',假设随便填入一个,最后乘以25就行了.所以状态只与左括号的个数有关.所以可…
You are given an array d1,d2,-,dn consisting of n integer numbers. Your task is to split this array into three parts (some of which may be empty) in such a way that each element of the array belongs to exactly one of the three parts, and each of the…
Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Devu being a small kid, likes to play a lot, but he only likes to play with arrays. While playing he came…
题目链接:http://codeforces.com/problemset/problem/314/C 题意:给定一个数列a.(1)写出a的不同的所有非下降子列:(2)定义某个子列的f值为数列中各个数的乘积.(3)求所有非下降子列的f值之和. 思路:我们用s[i]表示以数字a[i]结尾的所有非下降子列的f之和.那么a必然是接在之前小于等于a的某个数之后,设这个位置为j,那么s[i]=(s[j]+1)*a[i].也就是,a[i]可以接在其后或者自成一个子列.那么最后的答案就是所有的s值之和.这里有…
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #define lson rt<<1,L,mid #define rson rt<<1|1,mid+1,R /* 题意:给出原始序列a[1],a[2],...a[n] 给出m个操作方式 l r d,把a[l],...a[r]都加上d 然后给出k个操作 x y 执行第x到第y个操…