HDU 4455 Substrings 第37届ACM/ICPC 杭州赛区现场赛 C题 (DP)
来源:互联网 发布:致幻蘑菇 知乎 编辑:程序博客网 时间:2024/05/22 11:54
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4455
题目大意给你一串有序数,分成m个子集后,每个子集中不同元素的个数和是多少
这题感谢帽神的提点,不然真想不到可以这样dp
用样例为例子 1 1 2 3 4 4 5
很容易知道dp[1]=7;
当m=2时 可以分为 1 1,1 2,2 3,3 4,4 4,4 5;
这时可以发现,当m++时每个子集加入了后面一个数,最后一个子集被删去了
可以得到dp[i]=dp[i-1]-最后子集不重复元素个数+新增加的不同元素的个数。
后面两个都可以得出于是求证。
答案要用longlong。这里wa了几次~~
#include<stdio.h>#include<string.h>#define MAX 1000010int equ[MAX]; //记录距离为i的相同的数有多少个int dis[MAX]; //记录一个数离上一个相同的数的距离int a[MAX];int vis[MAX]; //记录后面哪些数出现过int f[MAX];long long ans[MAX];int main(){ int n; while(scanf("%d",&n)==1&&n) { int i; memset(dis,0,sizeof(dis)); memset(equ,0,sizeof(equ)); for(i=1;i<=n;i++) { scanf("%lld",&a[i]); equ[i-dis[a[i]]]++; dis[a[i]]=i; } memset(vis,0,sizeof(vis)); f[1]=1; vis[a[n]]=1; for(i=2;i<=n;i++) { if(!vis[a[n-i+1]]) { vis[a[n-i+1]]=1; f[i]=f[i-1]+1; } else f[i]=f[i-1]; } ans[1]=n; long long tt=n; for(i=2;i<=n;i++) { ans[i]=ans[i-1]-f[i-1]; tt-=equ[i-1]; ans[i]+=tt; } int m; scanf("%d",&m); for(i=0;i<m;i++) { int b; scanf("%d",&b); printf("%lld\n",ans[b]); } }}
0 0
- HDU 4455 Substrings 第37届ACM/ICPC 杭州赛区现场赛 C题 (DP)
- Substrings 第37届ACM/ICPC 杭州赛区现场赛C题(hdu 4455)
- HDU 4455 Substrings (2012年杭州赛区现场赛C题)
- HDU 4431 Mahjong 第37届ACM/ICPC 天津赛区现场赛A题
- HDU 4778 2013 ACM/ICPC 杭州赛区现场赛 I. Gems Fight!
- hdu--4455+ Substrings+2012杭州区域赛C题+DP
- hdu 5950 2016ACM/ICPC沈阳赛区现场赛C题【矩阵快速幂】
- 2017年第42届ACM-ICPC亚洲区域赛青岛赛区(现场赛)
- HDU 4790 Just Random (2013ACM/ICPC成都赛区现场赛J题)
- HDU-5112-A Curious Matt (2014ACM/ICPC北京赛区现场赛A题!)
- HDU-5122-K.Bro Sorting (2014ACM/ICPC北京赛区现场赛K题!)
- HDU-5112-A Curious Matt (2014ACM/ICPC北京赛区现场赛A题!)
- HDU 5073 Galaxy (2014 ACM/ICPC 鞍山赛区现场赛D题)
- HDU 5117 Fluorescent(2014 ACM/ICPC 北京赛区现场赛)
- hdu 5950 Recursive sequence 2016ACM/ICPC沈阳赛区现场赛C
- HDU 5534 HDU 5532 2015ACM-ICPC长春赛区现场赛H题
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP(两种解法)
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP
- Codeforces700BConnecting Universities(算贡献)
- 2016.7.24 (c++编程思想)
- Excel动态合并行、合并列
- [Leetcode]74. Search a 2D Matrix
- mongodb 使用python作客户端
- HDU 4455 Substrings 第37届ACM/ICPC 杭州赛区现场赛 C题 (DP)
- Python学习笔记16:网络编程
- LeetCode 112. Path Sum
- 正则基础之——贪婪与非贪婪模式
- 利用Fiddler手机抓包对ONE·APP网页爬虫实现电影资讯微信Java开发
- Factorial Trailing Zeroes
- 基于最小二乘法的直线拟合----同济---第六版---下册---125页
- iOS微信第三方登录实现
- 利用枚举得到表单信息