题意:这个题给你n个数,然后有q组询问,无修改,每次询问一个长度x,问你所有长度为x的区间价值加和是多少,区间的价值的计算是这样定义的,一个区间的价值就等于这个区间中不同数字的个数

思路:看了题解虽然理解了,但感觉还是很难想啊,原本这个题卡在了怎么把n2的降维成n的,这个题目也算是很经典的一个套路吧,疯狂预处理,把所需要的信息不断转化,疯狂降维预处理,然后达到On递推,感觉对于dp[i]和dp[i-1]之间的关系,单点贡献的那一部分不怎么容易想到,而且想到了单点贡献,也想不到怎么预处理,QAQ

附传送门一只

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;const int maxn=1e6+7;
int n;
int a[maxn],cnt[maxn];
LL dp[maxn],vis[maxn];
int main()
{while(~scanf("%d",&n),n){for(int i=1;i<=n;i++)scanf("%d",&a[i]);int res=0;memset(dp,0,sizeof(dp));for(int i=n;i>=1;i--){if(!dp[a[i]])dp[a[i]]=1,res++;cnt[n-i+1]=res;}memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){dp[i]=vis[a[i]];vis[a[i]]=i;}memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){vis[i-dp[i]]++;}vis[n+1]=0;for(int i=n;i>=1;i--)vis[i]+=vis[i+1];dp[1]=n;for(int i=2;i<=n;i++){dp[i]=dp[i-1]-cnt[i-1]+vis[i];}int q;scanf("%d",&q);while(q--){int x;scanf("%d",&x);printf("%lld\n",dp[x]);}}return 0;
}

转载于:https://www.cnblogs.com/lalalatianlalu/p/9981507.html

HDU 4455 Substrings(线性dp,很有意思)相关推荐

  1. HDU 4455 Substrings(dp+树状数组优化)

    题意: 给定一个序列ai,个数为n.再给出一系列w: 对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数 解析: 一直想不出来怎么转移,看了网络上面的题解才明白怎么做 ...

  2. HDU 4293 Groups (线性dp)

    OJ题目:click here~~ 题目分析:n个人分为若干组 , 每一个人描写叙述其所在的组前面的人数和后面的人数.求这n个描写叙述中,最多正确的个数. 设dp[ i ] 为前i个人的描写叙述中最多 ...

  3. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  4. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

  5. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

  6. 算法模板:动态规划之线性DP【沈七】

    算法模板:动态规划之线性DP 前言 线性DP 数字三角形模型 摘花生 最小路径和 不同路径模型 不同路径(有障碍) 过河卒 (综合应用) 最长上升子序列模型 木棍加工 导弹拦截 完结散花 参考文献 前 ...

  7. 2020.8.3【算协集训】线性dp

    线性dp A - 超级楼梯 (HDU-2041) 分析 代码 B - 一只小蜜蜂... (HDU-2044) 分析 代码 C - 母牛的故事 (HDU-2018) 分析 代码 D - Common S ...

  8. 动态规划之线性DP题集

    动态规划之线性DP 文章目录 动态规划之线性DP (一)LIS问题 最长上升子序列 (朴素动规) (二分+贪心+动规) 最大子序和 (动规) (贪心) 最长连续递增序列 (动规) (双指针) 俄罗斯套 ...

  9. HDU 4915 Parenthese sequence DP

    [题目大意] 题目很短,自己读题吧. [思路] 其实是个很有意思的题. 在括号匹配中,当前的栈存的全是'('.那么,我们可以用dp[i][j]表示到了第i个字符,栈内存j个'('的方法数.这样显然是可 ...

  10. 动态规划:线性dp、背包问题、区间3

    区间DP 2955 -- Brackets 给定一个由字符 a1a2 ... an 组成的括号序列,你的目标是找到最长的正则括号序列的长度,它是 s 的子序列.也就是说,您希望找到最大的 m,使得对于 ...

最新文章

  1. 测验2: Python基本图形绘制 (第2周)
  2. 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、
  3. 为何解析浏览器地址参数会为null_request 包中出现 DNS 解析超时的探究
  4. Centos7安装MariaDB10.28稳定版
  5. Cadence Virtuoso IC617的启动和新建工程
  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)
  7. [Nescafé41]异化多肽(多项式求逆元)
  8. 【Datawhale IntelVINO学习笔记】OpenVINO音频和人体姿态识别
  9. easydarwin 安装_centos服务器安装部署搭建 EasyDarwin【步骤详解】
  10. 贝塞尔插值曲线绘制软件设计
  11. Visual C++ 图像与文字的合成
  12. 一文读懂keepalive的工作原理
  13. python dict的get函数
  14. 【推荐系统论文精读系列】(一)--Amazon.com Recommendations
  15. 关于高版本web3j调用okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody异常
  16. Xcode 使用 code snippets (代码块)Xcode 11以上
  17. idea中提示程序包不存在或cannot resolve symbol
  18. Windows 10 使用命令行格式化磁盘/U盘
  19. 中国国有资本投资运营公司“十四五”投资规划及发展动向展望报告2022-2028年
  20. android设置路由器,如何在Android手机上设置无线路由器以实现WiFi互联网访问

热门文章

  1. LNMP详解(十六)——Nginx日志切割
  2. C++ 从入门到入土(English Version) Section 1:Gates, Circuits and Boolean Algebra
  3. 用ifconfig命令,只有lo,没有eth0的解决方案
  4. NYOJ-97兄弟郊游问题
  5. 卫健委:不存在因流感引起大量坏死性脑病的现象
  6. Centos7快速安装docker
  7. 《Docker技术入门与实战》——3.5 创建镜像
  8. redis 条件查询
  9. 高性能tornado框架简单实现restful接口及运维开发实例
  10. 从零开始学习Sencha Touch MVC应用之三