1. 破解石碑 (stele.cpp/c/pas)
    【问题描述】 相传在上古时期留下了许多块神秘的石碑,石碑的正面按顺序刻上 N 个数 字,并且每个数字的下方都有一个字号较小的数相对应。研究人员把上面的数 字称为 A 列,下面的数字称为 B 列。 在查阅古书后人们得知,每块石碑其实都是一把锁。如果人们在石碑上按 合适的方法对数字进行操作,就会获得巨大的能量。操作的规则如下: 若 Ai和 Ai + 1 不互质,我们可以在原石碑中抹去第 i 和第 i + 1 个数(包括 A 中和 B 中),然后将两个序列重新按顺序编号。 假如最终 B 列中被抹去的数的和达到可能的最大值,这把巨锁就解开了。 由于对石碑上数字的抹去是不可逆的,为了不浪费每块石碑,我们必须事先计 算出每块石碑的操作方案并获得 B 列被删去的可能最大和。
    全国信息学奥林匹克联赛(NOIP2016)Day 1 信烨教育
    第 3 页 共 4 页

【输入】 第 1 行一个整数 N; 第 2 行 N 个整数,依次表示 Ai; 第 3 行 N 个整数,依次表示 Bi。

【输出】 仅含一个整数,表示 B 列被删去的可能最大和。

【输入输出样例】 stele.in stele.out 6 9 8 6 5 6 3 11 19 12 17 18 15 64

【数据范围】 对于 30%的数据,N ≤ 20; 对于 60%的数据,N ≤ 100; 对于 80%的数据,N ≤ 500 对于 100%的数据,N ≤ 800, 1 ≤ Ai, Bi ≤ 109。

program df;
var i,j,n,m,x,y,z,k,l,r:longint;
a,b:array[0..1000] of longint;
sum:array[0..1000] of int64;
f:array[0..1000,0..1000] of int64;
g:array[0..1000,0..1000] of boolean;
function gcd(x,y:longint):longint;
begin
if y=0 then exit(x)
else gcd:=gcd(y,x mod y);
end;

begin
assign(input,’stele.in’);
reset(input);
assign(output,’stele.out’);
rewrite(output);
fillchar(g,sizeof(g),false);
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
if gcd(a[i],a[i+1])>1 then g[i,i+1]:=true;
readln;
for i:=1 to n do
begin
read(b[i]);
sum[i]:=sum[i-1]+b[i];
end;
for i:=2 to n do
if g[i-1,i] then f[i-1,i]:=b[i-1]+b[i];

for i:=n downto 1 do
for j:=i+1 to n do
for k:=i+1 to j-1 do
if (i<>j) and (k<>i) and (k<>j) then
if ((g[i,k]) and (g[k+1,j])) or ((g[i+1,j-1]) and (gcd(a[i],a[j])>1)) //i到k能消除,k+1到j能消除,则i到j能消除,或者,i+1到j-1能消除,i,j不互质,则i到j能消除
then
begin
g[i,j]:=true;
f[i,j]:=sum[j]-sum[i-1];
end;
for i:=n downto 1 do
for j:=i+1 to n do
for k:=i to j do
if f[i,j]小于f[i,k]+f[k+1,j] then f[i,j]:=f[i,k]+f[k+1,j]; //max函数会超时
writeln(f[1,n]);
close(input);
close(output);
end.

转载于:https://www.cnblogs.com/Gxyhqzt/p/7784281.html

破解石碑(区间动规)相关推荐

  1. 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索

    ->戳我进原题 [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2486 Solved: 1448 Descript ...

  2. 【区间动规】【记忆化搜索】能量项链

    题目:能量项链 rqnoj5 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两 ...

  3. 动规日常训练题解 难度普及+

    9.6 动规训练  题解 ----Frosty_Jackal 定义Dpmax[i][j] 表示l~r之间最大的得分,由题意得拆环为链,将1~n的枚举范围扩大到1~2*n ,外层枚举区间长,内层枚举l, ...

  4. 关于数位动规(入门到进阶,难度中档)

    数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...

  5. CF2B The least round way(贪心+动规)

    题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...

  6. 树形动规_(技能树)

    技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...

  7. 正则表达式匹配(动规)

    文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...

  8. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

  9. leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 class Solution { public:int maxProfit(vector<int>& p ...

最新文章

  1. Python基础教程(第3版)之一些内置的异常类
  2. python3 第三十四章 - 聊聊File对象
  3. Ubuntu16.04LTS下搭建强化学习环境gym、tensorflow
  4. jquery字符串转数组
  5. python panda apply_python – Pandas – 关于apply函数缓慢的解释
  6. 语言中的petchar运用_还在担心你家孩子发音、语言问题?12个表现、3个预防是重点...
  7. [转载]值得推荐的C/C++框架和库
  8. Angular07 利用angular打造管理系统页面
  9. 信息论与编码_4G与5G分别采用什么信道编码技术_卷积码_Turbo码_LDPC码_Polar码
  10. 多元统计分析最短距离法_多元统计分析复习整理
  11. 飞思卡尔16位单片机(四)——GPIO输入功能测试
  12. 国际贸易13种术语你都了解吗?
  13. app 评论功能实现
  14. SpringBoot 电子书
  15. 关于密码学中不可区分性的一些问题
  16. 合理利用计算机虚拟内存,合理设置虚拟内存,目前8G内存足够日常使用
  17. 【PHP版】顺丰下单API 、查询订单API、取消订单API
  18. 电脑出现initialization failure:0x0000000c如何解决
  19. 第1章 沉沦在大学里——《逆袭大学》连载
  20. MMPV-上月账期关闭,当月账期打开

热门文章

  1. 从FCKEDITOR到ckeditor(二) 撰写自定义对话框,增加数学公式(与webEq的结合)
  2. centos6 mysql5.7.16_centos 6.5装mysql5.7
  3. [c++] vector<vector<int>>排序
  4. matlab多维数组、结构体数组
  5. Xilinx Select IO的介绍
  6. 同在服务器无响应,全部服务器无响应!!!
  7. anaconda卸载重装matplotlib
  8. spyder 断点调试python代码
  9. 手机归属地和ip定位
  10. MyBatis—insert语句返回主键和selectKey标签