hdu 4960 数列合并

news/2024/10/31 3:28:27/

http://acm.hdu.edu.cn/showproblem.php?pid=4960

给定一个长度为n的序列,然后再给出n个数bi,表示合成i个数的代价。每次可以将连续的子序列和成一个数,即为序列中各个项的和。要求将给定长度n的序列变成一个回文串,一个数字只能被合成一次。

先记录前i个的和和后n  - j个和相同的(i,j)对,然后进行dp,dp[i]表示合并前i个和合并后n - g[i]个和合并所需最小代价,那么有递推公式dp[i] = min(dp[j] + b[i-j] + b[k - t]);

所求ans即为min(dp[i] + b[g[i] - i - 1]);

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <vector>
#include<set>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d:%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL;
#define N 10005
int n , m , K;
int a[N] , b[N];
LL sum[N];
int f[N] , g[N];void work(){int i , j , k , t;int ans;sum[0] = 0;a[0] = 0;for (i=1;i<=n;++i) scanf("%d",&a[i]) , sum[i] = sum[i-1] + a[i];for (i=1;i<=n;++i) scanf("%d",&b[i]); ans = b[n]; b[0] = 0;j = n;for (i=1;i<=n;++i){while (sum[n] - sum[j-1] < sum[i]) --j;if (sum[n] - sum[j-1] == sum[i])g[i] = j;else g[i] = -1;}memset(f,0x3f,sizeof(f));g[0] = n+1; f[0] = 0;for (i=1;i<=n;++i){if (g[i] == -1) continue;t = g[i];for (j=0;j<i;++j){if (g[j] == -1) continue;k = g[j];if (t <= i) continue;f[i] = min(f[i],f[j]+b[i-j]+b[k-t]);ans = min(ans,f[i]+b[t-i-1]);}}printf("%d\n",ans);
}int main(){while (~scanf("%d",&n) && n)work();return 0;
}


转载于:https://www.cnblogs.com/zibaohun/p/4046801.html


http://www.ppmy.cn/news/460659.html

相关文章

uvalive 4960 Sensor Network

题意&#xff1a; 给出一个无向图&#xff0c;求一个生成树使得这个生成树的最大边与最小边之差最小&#xff0c;输出这个最小的差值。n的最大值为350。 思路&#xff1a; 这题不看题解想破头也不知道怎么写Orz。 暴力的做法是可以从大到小枚举边作为最小边的权值&#xff0c;求…

4960x支持服务器内存吗,提升不到10%:i7-4960x六核处理器实测

泡泡网CPU频道4月26日 Intel的新一代发烧处理器Ivy Bridge-E将在11月份发布,而到那个时候,Sandy Bridge-E平台将会坚守长达两年时间,这在顶级产品上是很不可思议的。正因为如此,很多发烧友对Ivy Bridge-E都期待万分,特别是它还继续兼容LGA2011接口和X79芯片组。 那么Ivy B…

0008-TIPS-2020-hxp-kernel-rop : bypass-FGKASLR-with-unaffected_gadgets

利用 CTF-WKI中描述中的缺点&#xff1a;.text 节区不参与函数随机化。因此&#xff0c;一旦知道其中的某个地址&#xff0c;就可以获取该节区所有的地址。有意思的是系统调用的入口代码都在该节区内&#xff0c;主要是因为这些代码都是汇编代码。此外&#xff0c;该节区具有以…

国产麒麟服务器等保二级 配置规范(二)

一、redis的配置规范 1.1 禁止以root账号运行redis服务 以下Linux 命令操作创建了一个无 home 目录权限&#xff0c;且无法登录的普通账号redis。 #useradd -M -s /sbin/nologin redis 修改服务允许和配置文件权限&#xff1a; #setsid sudo -u redis /usr/bin/redis-serer /e…

Kafka源码解析之索引

Kafka源码解析之索引 索引结构 Kafka有两种类型的索引&#xff1a; TimeIndex: 根据时间戳索引&#xff0c;可以通过时间查找偏移量所在位置&#xff0c;目录下以.timeindex结尾Index: 根据偏移量索引&#xff0c;.index结尾 构建索引时机 由log.index.interval.bytes 参…

Android——如何在电脑里找到手机中的图片或者视频

1.先让你的手机与你的电脑进行多媒体的连接 2.首先找到你的Android的SDK目录&#xff0c;然后进入platform-tools目录下&#xff0c;然后shift鼠标右键&#xff0c;选择在此处打开cmd或Powershell窗口&#xff0c;然后执行adb shell命令即可 3.然后我们在手机中随便找一个图片…

老电脑如何利用云服务器提升性能,把旧电脑变成云电脑?让手机运行大型PC游戏...

相信很多人家里有电脑&#xff0c;有的闲置了下来&#xff0c;也有还在继续超龄服役的&#xff0c;只不过性能已经跟不上了&#xff0c;平时应付下办公和看视频还是可以的。对于大型游戏&#xff0c;想都别想。 其实云电脑并不是硬件而是软件&#xff0c;能让老旧电脑通过连接云…