Description

相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。

1
3 8
2 5 0
1 4 3 8
1 4 2 5 0

路径最大和是1+8+5+4+4 = 22,1+8+5+3+5 = 22或者1+8+0+8+5 = 22。

小S觉得这个问题so easy。于是他提高了点难度,他每次ban掉一个点(即规定哪个点不能经过),然后询问你不走该点的最大路径和。
当然他上一个询问被ban掉的点过一个询问会恢复(即每次他在原图的基础上ban掉一个点,而不是永久化的修改)。

Input

第一行包括两个正整数,N,M,分别表示数塔的高和询问次数。
以下N行,第i行包括用空格隔开的i - 1个数,描述一个高为N的数塔。
而后M行,每行包括两个数X,Y,表示第X行第Y列的数塔上的点被小S ban掉,无法通行。
(由于读入数据较大,c或c++请使用较为快速的读入方式)

Output

M行每行包括一个非负整数,表示在原图的基础上ban掉一个点后的最大路径和,如果被ban掉后不存在任意一条路径,则输出-1。

Sample Input

5 3
1
3 8
2 5 0
1 4 3 8
1 4 2 5 0
2 2
5 4
1 1

Sample Output

17
22
-1

Hint

【样例解释】

第一次是
1
3 X
2 5 0
1 4 3 8
1 4 2 5 0
1+3+5+4+4 = 17 或者 1+3+5+3+5=17
第二次:
1
3 8
2 5 0
1 4 3 8
1 4 2 X 0
1+8+5+4+4 = 22
第三次:你们都懂的!无法通行,-1!

【数据规模】

所有测试数据范围和特点如下:
对于所有数据,数塔中的数X的大小满足

分析
对于每一个I 行j 列 I 和j不等于1 我们设f[i,j]为顶端往下走到I j这个位置的最大值,g[i,j]为从最下面一层走到位置(i,j)可以获得的最大值,那么经过位置(i,j)可以获得的分数就是f[i,j]+g[i,j]-a[i,j]。同时对于每一行我们找到一个最大值和一个次大值,并记录下它们的位置。对于输入的下,x,y (x,y为ban掉的数) 我们判断是不是经过这一行的最大值的位置,若不是则输出次大值。(注意判断x=1)and (y=1)的情况。

程序:

uses math;
var
n,m,i,j,x,y:longint;
a,f,g:array[0..1001,0..1001]of longint;
b:array[0..1001,1..3]of longint;beginreadln(n,m);for i:=1 to n dobeginfor j:=1 to i doread(a[i,j]);readln;end;for i:=1 to n dofor j:=1 to i dof[i,j]:=max(f[i-1,j],f[i-1,j-1])+a[i,j];for i:=n downto 1 dofor j:=1 to i dog[i,j]:=max(g[i+1,j],g[i+1,j+1])+a[i,j];for i:=1 to n dobeginb[i,1]:=-1;b[i,2]:=-1;for j:=1 to i doif f[i,j]+g[i,j]-a[i,j]>b[i,1] thenbeginb[i,2]:=b[i,1];b[i,1]:=f[i,j]+g[i,j]-a[i,j];b[i,3]:=j;end elseif f[i,j]+g[i,j]-a[i,j]>b[i,2] then b[i,2]:=f[i,j]+g[i,j]-a[i,j];end;for i:=1 to m dobeginreadln(x,y);if b[x,3]<>y then writeln(b[x,1]) else writeln(b[x,2]);end;
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500044.html

2017年09月23日普级组 树塔狂想曲相关推荐

  1. 2017年09月23日普级组 数列

    Description 小S今天给你出了一道找规律题,题目如下: 有如下的数列1,11,21,1211,111221,312211,-- 小S问你这个数列的第N项是多少,而你一头雾水根本找不出规律. ...

  2. 2017年09月23日普级组 环

    Description 有一个圆,共个数在圆环上顺时针排列着. 现在给你三个数,问的顺序是顺时针还是逆时针. Input 第一行包括四个正整数. Output 一行一个整数,0或1,0表示逆时针,1表 ...

  3. 2017年9月16日普级组 在食人百货绽放的蓝蔷薇

    分析 直接枚举,得出x,y,z. 结果满足1 const maxn=250000; var a:array[0..maxn]of longint; n,m,i,j,l,r:longint; begin ...

  4. 2017年9月9日普级组 买礼物的艰辛

    Description 小X同学给小C同学选了N件礼物,决定顺序购买并赠送,但作为一个没有工资没有零花钱的可怜小朋友,有M位好心的同学伸出了援助之手,然而为了减少最高的借款量,小X同学希望OI竞赛的你 ...

  5. 2017年9月9日普级组 优美三角剖分

    Description 小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物. 这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的 ...

  6. 2017年9月2日普级组T2 跳格子

    Description 大家都说要劳逸结合,Ayumi, Mitsuhiko, Genta画完方格就出去运动啦! 他们来到了一片空地,画了N个连续的方格,每个方格上随机填上了一个数字,大家从第一个格子 ...

  7. 2017年9月2日普级组T1 正方形

    Description 又到暑假啦,Conan, Ayumi, Mitsuhiko, Genta一起到Hakase家愉快玩耍(然而你却不行--). Ayumi, Mitsuhiko, Genta依次开 ...

  8. 2020年10月28日普级组总结

    2020 年 10 月 28 日 普 级 组 2020年10月28日普级组 2020年10月28日普级组 今天又是打了场模拟赛,做的不怎么理想. 成绩 : 由于数据水,所以还是乱搞搞了个302分:而陈 ...

  9. 最新Win7 +Python3.6.0(Anaconda3-4.3.21)+Tensorflow的安装与配置(不用切换python3.5) 原创 2017年09月23日 15:14:58 标签:pyt

    最新Win7 +Python3.6.0(Anaconda3-4.3.21)+Tensorflow的安装与配置(不用切换python3.5) 一.首先进入Anaconda官网下载  https://ww ...

最新文章

  1. 让我撸一次HashMap
  2. 《大数据分析原理与实践》——导读
  3. Flexible 弹性盒子模型之CSS align-self 属性
  4. WPF轮播图实现方式(二)
  5. 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
  6. 几种常用的清除浮动方法(一)
  7. linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...
  8. C/C++的readdir和readdir_r函数(遍历目录)
  9. mybatis mysql5.7_【mysql】mysql5.7支持的json字段查询【mybatis】
  10. 多个物体轮廓c语言提取算法,C++ opencv-3.4.1 提取不规则物体的轮廓
  11. Activator.CreateInstance 方法 (Type) 的用法
  12. Oracle归档模式与非归档模式设置
  13. TensorFlow 强化学习快速入门 -- Kaushik Balakrishnan 读后感
  14. shell脚本基础和grep使用
  15. 【信号检测】基于隐马尔可夫模型HMM算法实现睡眠状态检测matlab代码
  16. no tests ran in 0.03 seconds
  17. python条件判断《X战警:逆转未来》
  18. 统计笔记3:statistical inference
  19. android ios 微信 备份通讯录备份通讯录,苹果手机号码怎么备份 微信导入联系人号码...
  20. ubuntu下无线网卡解决经历

热门文章

  1. 三分钟带你对 Softmax 划重点
  2. java 协议栈_深入浅出讲解低功耗蓝牙(BLE)协议栈
  3. Delphi中点击网页弹出的Alert对话框的确定按钮
  4. Vulnhub靶机渗透之 AI: Web: 1
  5. 操作符offset 和 jmp指令
  6. Java链表—— LinkedList
  7. 操作系统对比和未来展望
  8. RIP学习---网络工程
  9. C语言再学习--关键字
  10. java axisclient超时_调用webservice接口超时