2.树塔

(tower)

【问题描述】

相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(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掉一个点,而不是永久化的修改)。

【输入】

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

【输出】

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

【输入输出样例】

tower.in

tower.out

5 3

1

3 8

2 5 0

1 4 3 8

1 4 2 5 0

2 2

5 4

1 1

17

22

-1

【样例解释】

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

【数据规模和约定】

所有测试数据范围和特点如下:

对于所有数据,数塔中的数X的大小满足0≤X≤106

 

测试点编号

N

M

特殊约定

1

≤ 5

≤ 3

2

3

≤ 105

4

5

≤ 50

≤ 103

满足点(i,j)上的数=i*j

6

7

8

9

≤ 300

≤ 104

数塔中所有数相等

10

11

12

13

≤ 1000

≤ 3*105

满足点(i,j)上的数=i-j

14

满足点(i,j)上的数=i*j

15

数塔中所有数相等

16

17

18

5*105

满足点(i,j)上的数=i-j

19

20

 

这题我SB了,本应想到前后缀DP是可行的,但是我一直卡在去掉数字的影响导致65pt

考虑求出每一个位置从上到下的最大值和从小到大的最大值,枚举去掉的那一行的前后缀和的最大值就可以了

暴力其实可以拿80但是我分段分的不好

code:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 long long a[1005][1005],suf[1005][1005],pre[1005][1005];
 5 long long read(){
 6     long long x=0,f=1;char c=getchar();
 7     while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
 8     while(isdigit(c)){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
 9     return x*f;
10 }
11 int main() {
12     long long n,m;
13     n=read(),m=read();
14     for(long long i=1; i<=n; i++)
15         for(long long j=1; j<=i; j++)
16             a[i][j]=read(),suf[i][j]=max(suf[i-1][j],suf[i-1][j-1])+a[i][j];
17     for(long long i=n; i>=1; i--)
18         for(long long j=1; j<=i; j++)
19             pre[i][j]=max(pre[i+1][j],pre[i+1][j+1])+a[i][j];
20     for(long long i=1; i<=m; i++) {
21         long long x=read(),y=read(),max0=0;
22         if(x==1&&y==1) {cout<<-1<<'\n';continue;}
23         for(long long j=1; j<=x; j++) {
24             if(j==y)continue;
25             max0=max(max0,pre[x][j]+suf[x][j]-a[x][j]);
26         }
27         cout<<max0<<'\n';
28     }
29     return 0;
30 }

over

转载于:https://www.cnblogs.com/saionjisekai/p/9860926.html

10.27T2 线性DP+拆分相关推荐

  1. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  2. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

  3. 【动态规划】线性dp P1043 数字游戏

    思路: 这题和 [动态规划]P1018 线性dp:乘积最大_m0_52043808的博客-CSDN博客 十分类似,都是把一组数分成固定的部分,然后对分好的数进行特定的操作,求操作后所得的最值 所以,两 ...

  4. P3842 [TJOI2007]线段(线性dp,分类讨论)

    P3842 [TJOI2007]线段 题意 [TJOI2007]线段 题目描述 在一个 n×nn \times nn×n 的平面上,在每一行中有一条线段,第 iii 行的线段的左端点是(i,Li)(i ...

  5. [nk] 糟糕的打谱员 线性DP

    前言 线性DP是世界上最难的算法!!(我在口胡) 前言 : https://ac.nowcoder.com/acm/contest/11215/C 思路 看完该题之后 (问的什么鬼 贪心?排序之后交替 ...

  6. P1772 [ZJOI2006]物流运输(线性dp+最短路径)

    P1772 [ZJOI2006]物流运输 题意 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头 A 运到码头 B.由于货物量比较大,需要 nnn 天才能运完.货物运输过程中一般要转 ...

  7. 算法模板:动态规划之线性DP【沈七】

    算法模板:动态规划之线性DP 前言 线性DP 数字三角形模型 摘花生 最小路径和 不同路径模型 不同路径(有障碍) 过河卒 (综合应用) 最长上升子序列模型 木棍加工 导弹拦截 完结散花 参考文献 前 ...

  8. 2020.8.3【算协集训】线性dp

    线性dp A - 超级楼梯 (HDU-2041) 分析 代码 B - 一只小蜜蜂... (HDU-2044) 分析 代码 C - 母牛的故事 (HDU-2018) 分析 代码 D - Common S ...

  9. A. Boredom(线性dp基础题)

    题目的大意是:给定你一个数组,每次可以删掉一个大小为a的数,获得a的分数,同时删除数列中所有大小为a+1和a-1的数.问删除所有数组中的数后,能够获得的最大分数值. 思路:本题可以用线性dp来解决.d ...

最新文章

  1. swift_014(Swift 的控制流)
  2. Golang新开发者要注意的陷阱和常见错误
  3. 部分手机配置信息及价格
  4. 你以为ACI=SDN?大错特错!
  5. python字符串(连载二)|字符串内置函数原来还可以这么玩!
  6. 【车联网】一文了解5G在车联网中的应用
  7. ubuntu16.04 kinetic 版本ROS安装PR2
  8. 基于麻雀搜索算法优化概率神经网络PNN的分类预测-附代码
  9. 降龙十八掌之SpringBoot 使用Swagger2打造在线接口文档
  10. 计算机并口回路测试工具,COM口和LPT口回路环的制作与CheckIT3.0测试方法
  11. 信息学竞赛 c语言 pascal,pascal信息学竞赛教程
  12. 2023年全国最新机动车签字授权人精选真题及答案10
  13. 2021.11.16【读书笔记】丨宏基因组分析流程
  14. java FFMPEG调取usb摄像头,截取视频,添加文字和时间水印
  15. LCD1602的使用详解
  16. 3GPP TS 23501-g51 中英文对照 | 5.2.3 Identification and authentication
  17. ThinkPad开机停留在boot menu界面、进不了系统的解决方法
  18. 2021-09-15单片机方案——LED补光灯方案
  19. 峨眉派的创始人真的是郭襄吗?
  20. Blob开头视频链接如何下载

热门文章

  1. golang实现生产者和消费者
  2. Linux日志系统-04:logrotate命令格式
  3. IDEA+DevTools实现热部署功能
  4. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记三
  5. 汇编: and,or逻辑运算指令
  6. 在linux系统下把多个终端合并在一个窗口
  7. Source Insight 4.0常用设置
  8. 激光投影市场将保持产品多元化发展趋势
  9. PostgreSQL的 array_to_string 功能
  10. C语言 字符串的读取