HDU 4455 DP

Intel SGX Explained 计算机中最主要的资源是CPU和内存,由操作系统和虚拟管理系统等系统软件来管理这些资源。 阅读详情
思路:

已知dp[n],则dp[n+1]等于dp[n]减去最后一组长度为n的不同数的个数,因为这一组不能再加一个数使长度变成n+1

然后对于长度为n的每组加上后一个数,如果这个数在前面长度为n的串中没有出现则dp[n+1]加1

#include<cstdio>
#include<cstring>
typedef long long ll;

const int maxn=1000007;
ll dp[maxn];
int d[maxn]; //第i个数和前面最近相同的数的距离 例如1,2,1    d[3]=2
int r[maxn]; //和前面最近相同的数的距离为i的个数
int tmp[maxn];
int lastp[maxn]; //数i的最近上一个位置
int x[maxn];
int df[maxn]; //从n-i+1到n不同的数的个数

int main()
{
	int n,q;
	while(~scanf("%d",&n),n)
	{
		int i;
		memset(lastp,0,sizeof(lastp));
		for(i=1;i<=n;i++)
		{
			scanf("%d",x+i);
			d[i] = i-lastp[x[i]];
			lastp[x[i]] = i;
		}
		memset(r,0,sizeof(r));
		for(i=1;i<=n;i++)
		{
			r[d[i]]++;
		}
		memset(tmp,0,sizeof(tmp));
		int t=0;
		for(i=n;i>0;i--)
		{
			if(!tmp[x[i]])
			{
				tmp[x[i]]=1;
				t++;
			}
			df[n-i+1]=t;
		}

		dp[1]=n;
		int sum=n;
		for(i=2;i<=n;i++)
		{
			dp[i] = dp[i-1] - df[i-1];
			sum -= r[i-1];
			dp[i] += sum;
		}
		scanf("%d",&q);
		while(q--)
		{
			scanf("%d",&t);
			printf("%I64d\n",dp[t]);
		}
	}
	return 0;
}



彻底解决Win11锁屏界面黑屏或者图片不变化 windows锁屏后黑屏 阅读详情

相关推荐

百度慧眼人口位置数据:从原理到实战的GIS处理全流程

本文详细解析百度慧眼人口位置数据的处理全流程,从基本原理到实战应用。通过空间网格划分、终端数量统计等技术手段,百度慧眼数据能准确反映人群分布特征。文章涵盖坐标系转换、核密度分析、热力图制作等GIS处理技巧,并分享商业选址、城市规划等典型业务场景的解决方案,帮助读者高效利用这一数据资源。

weixin_30872157的博客 534

HDU 4455 DP+树状数组

题意给一串数字,里面有N个数字。有Q次查询,每次查询长度为X的串,不相同的数字个数之和。题解很难看出来是DP,不过考虑到查询问题,并且无法用普通的数据结构进行解决,同时长度之间存在利用关系,因此可以用DP解决。 首先对于长度为1的串,很明显可以得到dp[1]=n。对于长度为2的串,我们首先要删除末尾的一个长度为1的串,然后对于每个串再加上一个值,如果新增了一个数字,那么这个值就是1,否则就是0。然

zhenlingcn的博客 879

聚焦112Gb/s SerDes芯片的AN/LT端口自协商和链路学习,评估验证高速链路的信号质量并分析调优(400/800G高速以太网互联接口,AI加速卡网络RDMA性能测试,交换背板接口性能评估)

在112G SerDes高速通道下的400G/800G高速以太网端口下,如何保障通信速率,验证SerDes的数据完整性和链路余量,自动协商(AN)和链路训练(LT)功能显得尤其重要,其在DAC、ACC、AEC铜缆连接或高速背板通信上,自动协商(AN)和链路训练(LT)的工作与否将决定高速链路传输质量的优劣。本文将系统的讨论介绍自动协商(AN)和链路训练(LT)的测试流程,其可以独立使用,也可以与teledynelecroy SierraNet M1288配合使用。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 9406

HDU4455(DP)

这道题思路十分巧妙,我觉得看到10^6次方的数据和查询,一般都会先往线段树方向考虑。我也想了半天,实在思考不出来去看了邝大神的博客才恍然大悟。编程实现不难主要是思路很难想到。时间复杂度为O(n),dp方程:dp[i] = dp[i-1]+A-B (A,B含义见注释)。 代码如下: 1 #include <iostream> 2 #include <cstd...

weixin_33825683的博客 198

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 222

PP-OCRv6 ONNX部署的官方和手搓方案

PP-OCRv6 基于全新设计的 PPLCNetV4 统一骨干网络,提供 tiny、small、medium 三档模型,分别面向端侧/IoT、移动端/桌面端、服务端场景。在内部多场景综合评估集上,PP-OCRv6_medium 相比 PP-OCRv5_server 识别精度提升 5.1%、检测精度提升 4.6%,同时 GPU 推理速度提升 2.37×;以仅 34.5M 参数的规模,精度超越 Qwen3-VL-235B、GPT-5.5 等大型视觉语言模型。

懒人的技术笔记 1913

HDU 4455 Substrings (DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4455 题意:给出长度为n个字符串,然后Q个询问,问长度为k的每个子串中不同的数字个数之和是多少 思路:思路很难想,状态转移:dp[i]=dp[i-1]-A+B,其中A是最后一个长度为i-1的区间的不同数的个数,B是距离上一个与其相等的数为i的数的个数 #include &lt...

Tongqi 613

matlab数学建模练习(2)练习电子科技大学数学实验

【代码】matlab数学建模练习(2)练习电子科技大学数学实验。

c_wrj_的博客 1435

hdu4455 线性DP

题意:给定10^6的数字序列 然后询问长度

江上白衣凌云 785

OD图 arcgis曲线制作插件 od图曲线 路径图曲线制作插件 航线图曲线制作插件

在ArcGIS 10.2 中导入节点数据,打开插件,选择输入起始节点和目标节点的节点文件Point,以Name字段(地名)为连接线的起始字段和目标字段,(Input Table File)选择连接关系表格SDLine.csv,(Origin Column 和 Destination Column)为起始节点和目标节点,(Output Path)为输出路径,应选择.gdb数据库路径,否则容易报错,(Chord Coefficient)为连线的曲率,数值越大,曲率越高。运行环境:ArcGIS10.2。...

JData_Engineer的博客 2670

6、SAP HANA 建模全解析

本文全面解析了 SAP HANA 建模的核心内容,包括属性视图、分析视图和计算视图的创建与使用。文章详细介绍了建模工具的安装、不同视图类型的适用场景及操作步骤,并通过对比和案例分析帮助读者更好地理解建模流程。此外,还涵盖了建模过程中的注意事项及性能优化建议,为 SAP HANA 用户提供实用的建模指导。

juice的博客 203

hdu4455——dp

题意:询问一个序列所有长度为w的连续子序列中不相同数的个数之和。 思路居然是dp,关键一点是明确每次往序列增加数的时候这个序列的不相同数的个数只会增加或者不变。那我们可以预处理出每个数左边最进且与其相同的数的位置。然后一边递推算出所有的答案。 #include #include #include #define lng long long using namespace std; co

cool_Fires的专栏 884

《QGIS快速入门与应用基础》079:KML/KMZ格式:Google Earth兼容

KML/KMZ是专为地理可视化设计的空间数据格式,原生兼容Google Earth,支持点线面要素标注与多媒体集成。KML为XML文本格式,KMZ是其压缩版本。该格式优势在于可视化表现力强、跨平台共享便捷,适合地理标注、路线分享等场景,但存在属性支持弱、大数据量处理效率低等局限。QGIS中可便捷加载和导出KML/KMZ数据,需注意编码设为UTF-8、勾选"导出样式"以保留可视化效果。建议中小规模标注数据使用KMZ格式,确保关联资源完整,提升共享效率。

LuckyHanMo的博客 773

hdu 4455 Substrings dp+线段数组

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4455 一,题意: 给定一个序列ai,序列中元素个数为n。再给定一个整数w,w表示的是字串长度。 要求你求出给定序列中所有长度为w的子串中不同元素个数之和。 二,解析: 该题我们主要用:dp+线段树。 1,在这里线段数组主要用于快速求和,使得dp递推效率更高。 2,dp[i]表示区间长度为

漩涡梦幻 623

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hdu4455 dp

这个题目是2012年的区域赛的题目,是一个典型的dp题目,但是状态定义,即状态转移方程真是不太好想。自己一直在往多维的状态上想,但是都觉得不合理。后来,我也是看了大神的题解才明白的。自己就试着写下自己对这个题目的理解。题目的意思比较好懂:就是给定一个长度为n的序列。然后让你求出它的所有长度为m的连续子序列中,每个序列里不同元素的个数,并将求其和。 题目思路:状态定义为dp[i]表示子序列的长度为

ZT在努力 654

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu4455 dp

http://acm.hdu.edu.cn/showproblem.php?pid=4455 Substrings Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2229Accepted Submissi...

weixin_30345577的博客 237

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU - 4455 (DP)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4455 XXX has an array of length n. XXX wants to know that, for a given w, what is the sum of the distinct elements’ number in all substrings of lengt

Vision 1308

hdu4455Substrings dp

// dp[i+1] = dp[i] + dis[i] - c[i] ; // dp[i] 表示子串长度为i的不同数的和 //dis[i] 表示所有数在其前面和其相同的点的最短距离大于等于i的和 //c[i] 表示最后一个长度为i的子序列的不同数的和 #include #include #include using namespace std ; const int maxn  =

ijbuhv的专栏 1099

HDU 4455 Substrings dp

给定一个序列,个数为n。再给出一系列w;对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数字的个数。 dp[i]表示w=i时所求的答案。dp[1]=n,这个很容易知道,dp[2]中的子串就是删去dp[1]中最后一个子串,再每个子串加上其之后的那个数,以此类推。 对于dp[i-1]推dp[i],加上的那部分:只有当这个数与它前面同值数最短距离大于等于i时才会加权值,否

Kim0403的博客 696

HDU 4455(dp)

题意:给定一个序列ai,个数为n。再给出一系列w;对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数。 思路:动态规划,用dp[w]表示当前长度为w的时候的权值和。显然dp[1] = n; 如果求dp[2]的话,那么它可以由dp[1]推出来,首先它比dp[1]少了最后一个子序列,那么最后一个子序列的权值用num来表示,num[i]从后面开始数i位的权值...

dizhuo0219的博客 318

HDU 4455 Substrings(DP)

题目链接:点击打开链接 思路: 我们用d[i]表示长度为i的答案。   那么我们可以把样例数据写出来看看是否能够递推。   可以发现, d[i] = d[i-1] - last[i-1] + (n-i+1) - dist[i]。 last[i]表示从后往前i长度时不同数字的个数, 也就是说, d[i-1]的最后一个子序列被扔了, 然后d[i]比d[i-1]还可能多加了( n - i + 1)

AC_Arthur的专栏 749

HDU 4455 Substring(DP)

如样例: 1 1 2 3 4 4 5; 明显dp[1]=n=7; 长度为1的时候有7个区间。 从长度为1到长度为2,就是把前6个区间往后增加一个数,最后一个元素不能构成长度为2的区间。 增加的6个数要看在该区间是否出现过,只要看它上一个相等的元素距离是否大于2 所以dp[2]=dp[1]-1+4;   以此类推就可以得出所以的dp值了。 dp[i]=dp[i-1]-A +B;

swust_lian的博客 472

dp-hdu-4455-Substrings

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4455 题目意思: 给一个长度为n的数组,有q个询问w,输出区间长度为w的所有子序列中不同数的个数总和。 解题思路: dp+预处理优化,o(n)的时间复杂度才能过。 dp[i]表示子串长度 对于样例 长度为1:1 1 2 3 4 4 5 长度为2:11 12 23 34 44 4

cc_again的专栏 1293

hdu4455之树状数组+DP

Substrings Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1571    Accepted Submission(s): 459 Problem Description XXX has an arra

Stephen 2221

hdu 4455 dp

题目大意:给定一个数组,求长度为x的字串中不同的数字的总数。 发现看别人的思路做的题写完之后等若干天之后还是想不懂怎么写。。。前几天一直在看后缀数组,ac自动机什么问题的,竟然将这题往后缀自动机那里想了。。。。然后发现实在是想不出来怎么写,然后发现了自己以前写的代码,然后就对自己真的无语了,周四就要去成都参加区域赛,这样的状态是真的让人很无语啊。。。 解题思路: 对于长度为i的字串得出的结果

生活总是要微笑着面对~ 770
上一篇: codeforces 2B The least round way
下一篇: HDU 4465
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值