题解 P2642 【双子序列最大和】】的更多相关文章

题目描述 给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和.一个连续子序列的和为该子序列中所有数之和.每个连续子序列的最小长度为1,并且两个连续子序列之间至少间隔一个数. 输入输出格式 输入格式: 第一行是一个整数表示n. 第二行是n个整数表示整数序列. 输出格式: 一个数,两个连续子序列的序列和之和. 输入输出样例 输入样例#1: 5 83 223 -13 1331 -935 输出样例#1: 1637 输入样例#2: 3 83 2…
前言 其实这道题的关键就是在于预处理,其方法类似于 合唱队形 正文 求最大子段和 要想求出双子序列最大和,首先我们要会求出最大子段和 最大子段和的求值方法很简单 定义 \(f_i\) 为以第 \(i\) 个数结尾的最大子段和 #include <bits/stdc++.h> using namespace std; int f[1000010],a[1000010]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++)cin>…
Description 给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和.一个连续子序列的和为该子序列中所有数之和.每个连续子序列的最小长度为1,并且两个连续子序列之间至少间隔一个数. Input 第一行是一个整数表示n. 第二行是n个整数表示整数序列. Output 一个数,两个连续子序列的序列和之和. 动态规划.这不某年初赛题 我们设\(l[i]\)代表从\(1\)到\(i\)的最大的子序列的和,\(r[i]\)代表从\(i\)…
Description 给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和.一个连续子序列的和为该子序列中所有数之和.每个连续子序列的最小长度为1,并且两个连续子序列之间至少间隔一个数. Input 第一行是一个整数表示n. 第二行是n个整数表示整数序列. Output 一个数,两个连续子序列的序列和之和. Range 对于30%的数据N<=100. 对于60%的数据有N<=10000. 对于100%的数据有N<=100000…
[题解]SDOI2015序列统计 来自永不AFO的YYB的推荐 这里是乘积,比较麻烦,不过由于给定的序列膜数是个小质数,所以可以\(O(m^2\log m)\)找原跟(实际上不需要这么多). 乘积有点麻烦,转换成加法就好了,然后取离散对数\(a_i\equiv g^{c_i} \mod m\),现在每个元素都用原根的指数代替了,问题就转变成了有多少种方案使得每个元素的乘积等于\(\log x\mod m\). 根据题意直接构造 \[ F(x)=\sum [\exist \log a_i=i]x^…
题目描述 两伙外星人策划在未来的XXXX年侵略地球,侵略前自然要交换信息咯,现在,作为全球保卫队队长,你截获了外星人用来交换信息的一段仅由“F”,“B”,“I”,“O”组成的序列.为了保卫地球和平,为了使家园不受破坏,你要机智地破解密码,勇敢地迎击外星人!记住,你不是一个人在战斗!你不是一个人!你的背后是千千万万的地球人! 输入输出格式 输入格式 一组仅由“F”.“B”.“I”.“0”组成的序列(“F”.“B”.“I”.“0”这四个字母中的某一个或某几个不一定会出现,且保证序列长度≤2000)…
Description 维护三个操作:区间加,区间翻转,区间求最大值.\(n \leq 50000\) Solution fhqtreap大法好! 模板题(我是不会告诉你这篇题解是用来存个代码的 Code #include <bits/stdc++.h> using namespace std; const int INF = 2147483647; const int N = 50050; int n, m; struct node { int d, rnd, Mx, add, rev, s…
也想了有半天,没有做出来……实际上做法确实也是十分精妙的.这里推荐一个blog,个人认为这位博主讲得挺好了:Sengxian's Blog; 感觉启示是:首先要加强对莫队算法 & ST表的熟练程度. 在想与数列有关的问题的时候,要尽量多在草稿纸上手玩几组数据,观察其中的联系,应该可以观察到许多有用的性质. 不过这题还有一个地方:网上的题解基本上都是先移动了右指针,后移动左指针:如果反过来,竟然被卡到只有10分.具体的原因我也不知道,但我猜想是不是由于r 和 l 的左右颠倒导致程序出现了一些问题,…
感觉这个题挺妙的...... 考虑最暴力的\(dp\),令\(f[i][j]\)表示生成大小为\(i\)的序列,积为\(j\)的方案数,这样做是\(O(nm)\)的. 转移就是 \[ f[i+1][j] = \sum\limits_{ab\equiv j(mod\ m)} f[i][a]f[1][b] \] 后面那个柿子很像卷积?但下标是乘法......好像不那么好卷. 套路的去个对数啥的把他转化成加法?比方说取个ln 那底数怎么确定呢? 我们想把\(1...m-1\)这\(m-1\)个数通过取…
0X00 P1433 吃奶酪 状压 \(DP\),把经过的点压缩成01串.若第 \(i\) 位为 \(0\) 表示未到达,为 \(1\) 则表示已到达. 用 \(f[i][j]\) 表示以 \(i\) 为起点,经过 \(j\) 所含 \(1\) 位置的所有点的最小距离. 先预处理出点两两之间的距离,记为 \(dis[i][j]\),初始化 \(f\) 数组为极大值(\(memset(f,127,sizeof(f))\) 可以为浮点数赋极大值).将所有的 \(f[i][1<<(i-1)]\) 赋…