LYDSY模拟赛day3 序列】的更多相关文章

NOIP不考可持久,弃坑…
[ 问题描述]有一天, 小 A 得到了一个长度为 n 的序列.他把这个序列的所有连续子序列都列了出来, 并对每一个子序列都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,最后他报出了第 k 小的平均值.你要做的就是模仿他的过程.[ 输入格式]第一行两个整数 n,k, 意义如题中所述.第二行 n 个正整数, 即为小 A 得到的序列.[ 输出格式]一行一个实数, 表示第 k 小的平均值, 保留到小数点后 4 位.[ 样例输入输出] ave.in ave.out 6 103 5 4 6…
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <queue> using namespace std; typedef long long ll; ,mod=; int c[N][N],s[N][N],…
问题描述 在数列 a[1], a[2], -, a[n] 中,如果 a[i] < a[i+1] < a[i+2] < - < a[j],则称 a[i] 至 a[j] 为一段递增序列,长度为 j-i+1. 给定一个数列,请问数列中最长的递增序列有多长. 输入格式 输入的第一行包含一个整数 n. 第二行包含 n 个整数 a[1], a[2], -, a[n],相邻的整数间用空格分隔,表示给定的数列. 输出格式 输出一行包含一个整数,表示答案. 样例输入 7 5 2 4 1 3 7 2…
今天模拟赛题目 纯考输入的傻逼题,用$scanf$用到思想僵化的我最终成功被$if$大法爆$0$了(这题只有一组$100$分数据). 输入后面那个$(+1/2)$很难$if$判断,所以我们要判两个字符串中间空的是空格还是换行.$getchar$和$cin.getline$都可以做到. 会输入基本上就做完了.至于题面的意思,也比较绕,但想想就明白了,飞机来回两次飞行一次是顺着地球自转.一次是逆着地球自转,所以时间可能一长一短. 根据“假设飞机来回飞行时间相同,求飞机的飞行时间”一句话,结合样例,可…
/* 大模拟题,做的时候思路还是比较清晰的 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #define ll long long #define fo(i,l,r) for(int i = l;i <= r;i++) #define fd(i,l,r) for(int i = r;i >= l…
典型的状压思想 设0表示黑球,1表示白球,用一串01序列代表剩下的球的状态,记f[i]表示在i状态下取球的最大期望 那么可以利用记忆化搜索更新,每一层枚举可能拿走的球然后向下搜索,同时记忆化即可 在状态中删去一个点可以利用位运算实现 同时要注意一个问题,就是状态0010和状态010并不是相同的状态,但是如果不做处理在记忆化的过程中很可能把他俩算成相同的状态,所以我们在初始状态最前面放一个1,这样就可以区分上述两种状态了 还有就是本题卡常卡的很厉害,所以对比较小的状态我们用数组,对过大的状态再使用…
今年BJ省选某题的弱化版…… 这看起来就没那么难了,有几种方法维护,这里提两种. 第一种(傻逼的我写的) 维护 一维&二维前缀和. 对于一个长度为$m$的序列$b_1,b_2,...,b_m$, 由于 二维前缀和$=b_1*m+b_2*(m-1)+...+b_m*1$, 每一项都和$m$有关系,而$m$可以是任意子区间的长度,于是很不好维护. 我们可以解除这些数与$m$的关系,最简单的方法就是把它们反过来维护. 我们已经维护了一维前缀和(即$b_1 to b_m$的和), 所以我们可以反过来维护…
题目描述LYK有一个括号序列,但这个序列不一定合法.一个合法的括号序列如下:()是合法的括号序列.若A是合法的括号序列,则(A)是合法的括号序列.若A和B分别是合法的括号序列,则AB是合法的括号序列.LYK想通过尽可能少的操作将这个不一定合法的括号序列变成合法的括号序列.一次修改操作是将某个字符变成另一个字符. 你能帮帮它吗? 输入格式(bracket.in) 一行一个字符串S. 输出格式(bracket.out) 一个数表示最少修改次数. 输入样例())) 输出样例1 样例解释将第二个字符修改…
/* 暴力枚举两个后缀,计算最长能匹配多少前缀. 最优策略一定是贪心改掉前 k 个失配的字符. 时间复杂度 O(n3). */ #include<cstdio> ],b[]; int main(){ freopen("master.in","r",stdin);freopen("master.out","w",stdout); scanf(,b+); ;i<=n;i++);j<=n;j++) ;x<…
/* 假设路径是 a − b − c − d,考虑枚举中间这条边 b − c,计 算有多少可行的 a 和 d. 设 degx 表示点 x 的度数,那么边 b − c 对答案的贡献为 (degb − 1)(degc − 1)− 经过 b − c 这条边的三元环个数. 计算三元环的个数只需要枚举除 b; c 之外的另一个点即可. 位运算优化 */ #include<cstdio> ; ],m,n,i,j,d[N];char g[N][N];long long ans; ]+cnt[x&];…
/* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. 时间复杂度 O(20 · 2^20 + n + m) */ #include<cstdio> ,M=; int n,m,i,x,y,cnt,g0[N],g1[N],v[M],nxt[M],ed,h,t,q[N],d[N]; void add(int*g,int x,int y){v[++ed]=…
/* 注意分解质因数,如果i是,那么n/i也是,这样就可以解决分解质因数的时间问题了 当 k ≥ 1 时,只有这些数的约数才会对答案产生贡献. 求出 m 个数的所有不超过 n 的约数,去重后统计即可. 求出 k = 1 到 m 的所有答案后,剩下的数字个数就是 k = 0 的答案. 时间复杂度 O(m2√a) */ #include<cstdio> #include<algorithm> ; ],f[N]; ;i<=n/i;i++))b[++cnt]=i,b[++cnt]=n…
/* orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足.然后,因为容量<=10^9,显然是不可能开一个这么大的数组,而且这么大一个容量,价值又很小,我们可以考虑用二分解决 对每个询问二分答案,需要判定用容量为 M 的背包是否可 以装下 mid 的价值. 设 fi 表示装了 i 价值所需的最小容量,gi 表示 min(fi,fi+1,fi+2,……). 那么只需要检查 gmid 是否不超过 M 即可.…
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<<],ed,cur,ans[N]; int size[N],f[N],d[N],son[N],top[N]; int fa[N],dep[N],A[N],B[N]; ],V[M],W[M],NXT[M],ED; ]; void add(int x,int y){v[++ed]=y;nxt[ed]=g[x];g…
终于A题啦鼓掌~开心~ 开考看完题后,觉得第二题很好捏(傻叉上线 搞到十一点准备弃疗了然后突然发现我会做第一题 于是瞎码了码,就去准备饭票了... 好了,停止扯淡(就我一个我妹子每天不说话好难受QAQ ---------------------------------------------------- T1 题意:huffman树的过程,只不过不贪心取,随机取,问最后的期望结果 好像很多人做对的样子.. 发现其实结果和每个数是什么是没有关系的,而且每个数对答案的期望贡献是相同的 于是我们可以…
典型树形dp 这里,我们应该看到一些基本性质: ①:如果这个边不能改(不是没有必要改),我们就不改,因为就算改过去还要改回来,显然不是最优的 注意:"不能改"是指边的性质和要求的相同而不包括对边的颜色没有要求的情况! ②:如果我们每翻转一条边,就认为将这条边的两个端点度数+1,那么不难看到,最后翻转的所有边构成的路径总数就是度数为奇数点个数的1/2 (性质②的证明:一条路径只会对两端的点产生度数上的影响,而中间的点都是+2,还是偶数,所以无影响) 接下来,我们进行dp: 记状态f[i]…
Description  Solution T1 game 咕咕咕 T2 string fail树各个节点的深度之和怎么求? 我们考虑每个前缀的深度是什么 发现这个值就相当于有多少个前缀等于它的后缀 所以有个思路就是考虑一对相同子串的贡献 假设这两个子串是\(S[x..y]\)和\(S[l..r]\) 那么包含\(S[x..r]\)的fail树有\(n-r+1\)个,所以贡献就是\(n-r+1\) 发现上面的可以转化为求\(\sum f_i\),其中\(f_i\)表示\(S[1..i]\)包含的…
显然发现可以二分. 对于n<=100暴力dp f[i][j]表示前i个数分成j段对于当前的答案是否可行. 可以发现这个dp是可以被优化的 sum[i]-sum[j]<=mid sum[i]-mid<=sum[j] 维护一个最大的sumj 即可O(1)转移 复杂度nklog 可以获得 40分. 考虑ai>=0 二分完之后直接贪心即可 能选就选 可以证明 这是最优的或者说对后面结果不会更差. 考虑ai<=0 二分完之后可以发现能分成一段就分成一段 只要分的段数>=k即可.…
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件结束终止. 每一个测试用例的第一行包含整数n,m和k. 第二行包含n个整数,即s1,s2,-,sn. 输出 对于每一个测试用例,输出一个表示结果的整数. 样例输入 3 2 2 1 2 1 4 2 2 1 2 1 2 样例输出 2 4 提示 \(1 ≤ n ≤ 10^5:1 ≤ m ≤ min{n -…
正整数的摆动序列 问题描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列.即 a[2i]<a[2i-1], a[2i+1]>a[2i]. 小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个. 输入格式 输入一行包含两个整数 m,n. 输出格式 输出一个整数,表示答案.答案可能很大,请输出答案除以10000的余数. 样例输入 3 4 样例输出 14 样例说明 以下是符合要求的摆动序列: 2 1 2 2 1 3 2 1 4 3 1 2 3…
合法括号序列 题目 问题描述 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多少种? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. package 省模拟赛; public class 合法括号有多少种 { //14种 public static int count=0,n=4; public static vo…
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas classroom.cpp/c/pas 输入文件 robot.in spring.in iceroad.in classroom.in 输出文件 robot.out spring.out iceroad.out classroom.out 时间限制 1000MS 1000MS 1000MS 1000…
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath> #include <iostream> using namespace std; #define MAXN 100010 struct node { int a,b,c; }ans[MAXN]; int main() { int R, G; scanf("%d%d",&…
2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r. 为了体现在线操作,对于一个询问(x,y):…
2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1116  Solved: 292[Submit][Status] Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r. 为了体现在线操作,对于一个询问(x,y):…
GDOI模拟赛Round 1 数据结构 题目描述:给出一个长度为\(n\)的序列,支持两种操作: 1.对某段区间都加上一个数 2.给出\(p.k\),求下面表示式对\((10^9+7)\)取模 \[\sum_{i=1}^{n} a_i \times max(0, k-|i-p|)\] solution 维护某段区间 第一个数乘1+ 第二个数乘2+ -- +第\(n\)个数乘\(n\)是线段树的经典题型,把问题拆成两部分\((p-k, i),(i, p+k)\),注意一下边界就可以了. #incl…
学长FallDream所出的模拟赛,个人感觉题目难度还是比较适中的,难度在提高+左右,可能比较接近弱省省选,总体来讲试题考查范围较广,个人认为还是很不错的. 所有试题如无特殊声明,开启-O2优化,时限1s,内存上限为128MB T1(seq)小Z爱序列 题意简析 给出一个1~n的全排列,问有多少对\((i,j)\)满足\(a_{i}<max( a_{[i+1,j-1]} ) < a_{j}\) 数据范围及约定 \(1<=n<=10^6\) 解题思路 通过观察,我们可以发现,答案在从…
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲错文件名可能把文件给编译消失了,所以不要考试到最后再试这个. T1:一道有点考察$bfs$性质的题,给定一些黑点,一些白点,黑点每步会往四联通的格子扩展一步,问每个白点最早被扩展到是什么时候. 一次性把所有黑点都放进队列里面$bfs$即可. T2:给定一个长度为$n$的序列,其中有的数未知,每个数的…
模拟赛 今天第一节课是历史,当然是不可能上的,一来到机房发现今天高二考试... 老师说以后可能还要给高一考...那还不如现在跟着做好了,毕竟在学长学姐中垫底显得没那么丢人 这套题风格挺奇怪的...为什么前面还是神牛后面直接成牛了... T1:http://hzwer.com/5053.html 题意概述:给出一个长度为$n$的数列,从某个地方把它分成两部分(均不为空),从前半部分选出一些数,后半部分选出一些数,使得前面这些数的$xor$和等于后面的$and$和,求方案数. $n<=10^3,0<…