noip模拟赛 whzzt-Warmth
分析:这道题难度和天天爱跑步差不了多少啊......裸的暴力只有10分,最好大的还是那个5%的数据,不过这也才15分,比天天爱跑步的暴力分不知道少到哪里去了.
正解是dp,毕竟要求方案数嘛,但是这个dp非常不好想.设f[i][j]表示i到j个数的回文子序列的个数.f[i][j]可以从f[i][j-1]转移得到,就是看第j个数和[i,j-1]中的数形成了多少个新的回文子序列.因为回文子序列的两端都是相同的字母,所以可以先预处理出两个数组:pre,last分别表示i这个位置之前的a[i]最后一次出现的位置和之后第一次出现的位置.设k为i以后a[j]第一次出现的位置,p为j以前a[j]最后一次出现的位置,为了使得首位字母一样,f[i][j] += f[k + 1][j - 1],k,j两个端点的先不算.但是这样的话之前加了f[i][j-1]又会加多,所以减去多的部分f[k + 1][p - 1],因为a[j]作为末尾,开头一定要是a[j],最后对端点进行讨论,看k和j能组成几种回文子序列.
我个人认为j,k,p实际上就是固定的左右端点,用左右端点的方案乘左右端点里的方案就是这一个区间的方案数.好比f[i][j]减掉f[k+1][p-1],其实就是固定了左端点为k或p,右端点为j,看[k+1,p-1]里有多少种方案,乘上左右端点组合的方案(1),就是重复的部分.
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm>using namespace std; const int mod = 1e9 + 7;int T, n, m, k, f[6010][6010], last[6010], nextt[1010], a[6010], pre[6010];int main() {scanf("%d", &T);while (T--){scanf("%d%d%d", &n, &m, &k);memset(last, 0, sizeof(last));for (int i = 1; i <= n; i++){scanf("%d", &a[i]);pre[i] = last[a[i]];last[a[i]] = i;}memset(last, 0, sizeof(last));for (int i = n; i >= 1; i--){last[a[i]] = i;for (int j = i; j <= n; j++){int k = last[a[j]], p = pre[j];int temp = (p < k && k <= j) + (p <= k && k < j);f[i][j] = (f[i][j - 1] - f[k + 1][p - 1] + f[k + 1][j - 1] + temp) % mod;if (f[i][j] < 0)f[i][j] += mod;}}for (int i = 1; i <= m; i++){int l, r;scanf("%d%d", &l, &r);printf("%d\n", f[l][r]);}}return 0; }
转载于:https://www.cnblogs.com/zbtrs/p/7747779.html
noip模拟赛 whzzt-Warmth相关推荐
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- 【noip模拟赛4】Matrix67的派对 暴力dfs
[noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...
- 【HHHOJ】NOIP模拟赛 捌 解题报告
点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...
- jyzy noip模拟赛5.22-2
不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...
- NOIP模拟赛csy2021/10/30
NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...
- 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告
[WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...
- NOIP 模拟赛 长寿花 题解
NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...
- 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)
[题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...
- NOIP模拟赛套路技巧经验总结
前言 还有2天就NOIP了,之前做了这么多场模拟赛,是时候拿出来总结一下, 算是给自己一针强心剂. 列表 从最近的考试总结起(个人认为的重点,可能有重复,仅供参考): (转化很重要,一定要简化问题过后 ...
- 【NOIP 模拟赛】平均数 涂色游戏 序列题解
吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...
最新文章
- 面向回家编程!GitHub标星两万的Python抢票教程”,我们先帮你跑了一遍
- python使用教程pandas-「Python」pandas入门教程
- mybaits十六:使用choose标签实现分支选择
- 上传本地代码到gitHub过程详解
- Shader Compiler 界面进展2
- 2000以内最好的无人机_全球军用无人机排行榜之国产翔龙无人机
- MapInfo开发心得——控件篇
- 【转】系统管理员之企业生存守则
- 数据分析师必须会python_数据分析师必须掌握的9种数据分析方法
- webpack常用知识点
- webpack热更新和常见错误处理
- MongoDB+MongoVUE安装及入门
- 2021年危险化学品生产单位安全生产管理人员找解析及危险化学品生产单位安全生产管理人员复审考试
- toastr弹出提示窗口的使用
- 技术类岗位面试中经典问题总结分享
- 有关计算机的英语作文一千字,关于网络的英语作文
- CentOS7设置笔记本合盖不休眠
- 数组和链表数据结构描述,各自的时间复杂度
- linux 文件缓存大小设置,Linux文件读写机制及优化方式
- TC358746AXBG/748XBG 桥接器说明