首页 > 其他分享 >hdu 5086(dp)

hdu 5086(dp)

时间:2023-05-29 18:32:30浏览次数:47  
标签:tmp __ hdu int 5086 maxn include dp


题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086

题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和。

解题思路:这道题直接枚举肯定不行,所以要找递推关系。

假设:{1,2,3,4}为某一个序列,假设我们已经找到了{1,2,3},接下来把{4}加入进去;

由于{1,2,3}已经有{1},{2},{3},{1,2},{2,3},{1,2,3},那么我们需要观察,把{4}放进去会有哪些影响,

首先会多出{3,4},{2,3,4},{1,2,3,4},{4},这是突破口,我们只要找到[k,3]的所有和,再把{4}给补上即可。

这样我们就有递推式:dp[i] = dp[i-1] + tmp[i-1] + i * a[i],其中dp[i]表示前i个序列的子串和,tmp[i]表示sum{[k,i]},k-i的总和。

由于要取模,所以必须把所有的数都要变成__int64,这里WA若干次。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

const int maxn =  447005;
const int mod = 1e9+7;
int n;
__int64 a[maxn],dp[maxn],tmp[maxn];

int main() 
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i = 1; i <= n; i++)
			scanf("%I64d",&a[i]);
		dp[1] = tmp[1] = a[1];
		for(int i = 2; i <= n; i++)
			tmp[i] = (tmp[i-1] + i * a[i] % mod) % mod;
		for(int i = 2; i <= n; i++)
			dp[i] = (dp[i-1] + tmp[i-1] + i * a[i] % mod) % mod;
		printf("%I64d\n",dp[n]);
	}
	return 0;
}




标签:tmp,__,hdu,int,5086,maxn,include,dp
From: https://blog.51cto.com/u_16143128/6373502

相关文章

  • hdu 5188(限制01背包)
    zhxandcontestTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/65536K(Java/Others)ProblemDescriptionAsoneofthemostpowerfulbrushesintheworld,zhxusuallytakespartinallkindsofcontests.Oneday,zhxtakespar......
  • hdu 5171(矩阵快速幂)
    GTY'sbirthdaygiftTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/65536K(Java/Others)ProblemDescriptiona,b∈S),andadda+b Input2≤n≤100000,1≤k≤1000000000).Thesecondlinecontainsnelementsai......
  • hdu 5157(manacher+前缀和+树状数组)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5157解题思路:我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来,然后进行处理。加入对以p为中心的点,从p-r[i]+1~p都是回文串的开头,那么对于每个回文串(开头是j)只要记录结尾从1~j-1的回文串个数,我们可......
  • 【Oracle impdp/expdp】Big lesson from failure with impdp/expdp in 12c
     最近忙于做数据库12c-19c迁移,基于公司的情况,选用了最拿手的expdp/impdporacle自带的王者级别工具进行迁移。按照常规思路,一顿操作猛如虎,expdp直接选用full=y将数据全库导出,然后在19c中导入,无论是12c中的导出还是19c中的导入数据,没有任何的错误,然而在无意间,反过来去检查下两......
  • upc 6888: 守卫(区间dp O(n^2) )
    6888:守卫时间限制:1Sec  内存限制:512MB提交:102  解决:33[提交][状态][讨论版][命题人:admin]题目描述九条可怜是一个热爱运动的女孩子。这一天她去爬山,她的父亲为了她的安全,雇了一些保镖,让他们固定地呆在在山的某些位置,来实时监视九条可怜,从而保护她。具体来......
  • upc 6597: Don't Be a Subsequence (字符串的最短不匹配子序列 dp)
    6597:Don'tBeaSubsequence时间限制:1Sec  内存限制:128MB提交:237  解决:45[提交][状态][讨论版][命题人:admin] 题目描述AsubsequenceofastringSisastringthatcanbeobtainedbydeletingzeroormorecharactersfromSwithoutchangingtheor......
  • wordpress 友情链接
    add_filter('pre_option_link_manager_enabled','__return_true'); 在你用的那个主题的function.php里面添加下面这个东东,然后去后台就多了一个链接,你添加就行了啊    前台怎么调用呢?看的别人的,也可以添加图片,就是不能上传,只能添加图片地址,主要的表就是wp_links......
  • Unity的IPostGenerateGradleAndroidProject:深入解析与实用案例
    UnityIPostGenerateGradleAndroidProjectUnity是一款流行的跨平台游戏引擎,它支持多种平台,包括Android。在Unity中,我们可以使用IPostGenerateGradleAndroidProject接口来自定义Gradle构建过程。本文将介绍如何使用IPostGenerateGradleAndroidProject接口,并提供三个使用例子。IPos......
  • 从注册表中删除RDP连接缓存
    打开注册表计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\TerminalServerClient\Default根据需要删除如下键值:重启生效......
  • FreeSWITCH添加自定义endpoint
    操作系统:CentOS7.6_x64   FreeSWITCH版本:1.10.9 日常开发过程中会遇到需要扩展FreeSWITCH对接其它系统的情况,这里记录下编写FreeSWITCH自定义endpoint的过程。一、模块定义函数使用FreeSWITCH自带的框架来定义模块函数,函数指针及参数列表定义如下(src/include/switc......