2017年09月23日普级组 树塔狂想曲
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日普级组 树塔狂想曲相关推荐
- 2017年09月23日普级组 数列
Description 小S今天给你出了一道找规律题,题目如下: 有如下的数列1,11,21,1211,111221,312211,-- 小S问你这个数列的第N项是多少,而你一头雾水根本找不出规律. ...
- 2017年09月23日普级组 环
Description 有一个圆,共个数在圆环上顺时针排列着. 现在给你三个数,问的顺序是顺时针还是逆时针. Input 第一行包括四个正整数. Output 一行一个整数,0或1,0表示逆时针,1表 ...
- 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 ...
- 2017年9月9日普级组 买礼物的艰辛
Description 小X同学给小C同学选了N件礼物,决定顺序购买并赠送,但作为一个没有工资没有零花钱的可怜小朋友,有M位好心的同学伸出了援助之手,然而为了减少最高的借款量,小X同学希望OI竞赛的你 ...
- 2017年9月9日普级组 优美三角剖分
Description 小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物. 这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的 ...
- 2017年9月2日普级组T2 跳格子
Description 大家都说要劳逸结合,Ayumi, Mitsuhiko, Genta画完方格就出去运动啦! 他们来到了一片空地,画了N个连续的方格,每个方格上随机填上了一个数字,大家从第一个格子 ...
- 2017年9月2日普级组T1 正方形
Description 又到暑假啦,Conan, Ayumi, Mitsuhiko, Genta一起到Hakase家愉快玩耍(然而你却不行--). Ayumi, Mitsuhiko, Genta依次开 ...
- 2020年10月28日普级组总结
2020 年 10 月 28 日 普 级 组 2020年10月28日普级组 2020年10月28日普级组 今天又是打了场模拟赛,做的不怎么理想. 成绩 : 由于数据水,所以还是乱搞搞了个302分:而陈 ...
- 最新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 ...
最新文章
- 让我撸一次HashMap
- 《大数据分析原理与实践》——导读
- Flexible 弹性盒子模型之CSS align-self 属性
- WPF轮播图实现方式(二)
- 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
- 几种常用的清除浮动方法(一)
- linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...
- C/C++的readdir和readdir_r函数(遍历目录)
- mybatis mysql5.7_【mysql】mysql5.7支持的json字段查询【mybatis】
- 多个物体轮廓c语言提取算法,C++ opencv-3.4.1 提取不规则物体的轮廓
- Activator.CreateInstance 方法 (Type) 的用法
- Oracle归档模式与非归档模式设置
- TensorFlow 强化学习快速入门 -- Kaushik Balakrishnan 读后感
- shell脚本基础和grep使用
- 【信号检测】基于隐马尔可夫模型HMM算法实现睡眠状态检测matlab代码
- no tests ran in 0.03 seconds
- python条件判断《X战警:逆转未来》
- 统计笔记3:statistical inference
- android ios 微信 备份通讯录备份通讯录,苹果手机号码怎么备份 微信导入联系人号码...
- ubuntu下无线网卡解决经历