因为每次只ban一个点 而且不是永久性的

预处理出每个点从上往下和从下往上的最大值

每次询问直接暴力 被ban掉点那行去掉那点的最大值

也可以直接预处理出每行的最大值和次大值

还有种做法貌似可以过

预处理出被ban的点是否在链上

是直接输出原本的最大的值 O(1)回答

不是暴力更新被ban的点会影响的到的那个菱形的区域   数组记录答案避免重复询问

最多这样更新n次 平均一次 n*n/4 总复杂度(n^3)/4

只要常数小+数据水就可以过了

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define C getchar()-48
inline ll read()
{
ll s=,r=;
char c=C;
for(;c<||c>;c=C) if(c==-) r=-;
for(;c>=&&c<=;c=C) s=(s<<)+(s<<)+c;
return s*r;
}
#define R register
const int N=;
int n,m,ans;
int a[N][N],vis[N][N],mx[N][N],b[N][N],k[N][N];
inline void work1()
{
for(R int i=n-;i>=;i--)
for(R int j=;j<=i;j++)
{
if(a[i+][j]>=a[i+][j+]) mx[i][j]=,a[i][j]+=a[i+][j];
else mx[i][j]=,a[i][j]+=a[i+][j+];
}
for(R int i=,j=;i<=n;i++){vis[i][j]=;j+=mx[i][j];}
}
inline void work2()
{
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
b[i][j]+=max(b[i-][j-],b[i-][j]);
}
inline int work3(int x,int y)
{
int ans=;
for(int i=;i<=x;i++)
{
if(i==y) continue;
ans=max(ans,b[x][i]+a[x][i]-k[x][i]);
}
return ans;
}
int main()
{
freopen("tower.in","r",stdin);
freopen("tower.out","w",stdout);
n=read(),m=read();
for(R int i=;i<=n;i++)
for(R int j=;j<=i;j++)
k[i][j]=a[i][j]=b[i][j]=read();
work1();work2();
for(R int i=;i<=m;i++)
{
int x=read(),y=read();
if(x==&&y==){printf("-1\n");continue;}
if(!vis[x][y]){printf("%d\n",a[][]);continue;}
printf("%d\n",work3(x,y));
}
return ;
}

【简】题解 AWSL090429 【数塔问题】的更多相关文章

  1. Hdoj 2084.数塔 题解

    Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...

  2. 题解报告:hdu 2084 数塔(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  3. 数塔(杭电oj2084)

    Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...

  4. 数塔问题(DP算法)自底向上计算最大值

    Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数 ...

  5. dp入门--poj 1163数塔

                                                                                                        ...

  6. ACM 杭电HDU 2084 数塔 [解题报告]

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  7. [ACM_动态规划] 数字三角形(数塔)

    递归方法解决数塔问题 状态转移方程:d[i][j]=a[i][j]+max{d[i+1][j],d[i+1][j+1]} 注意:1\d[i][j]表示从i,j出发的最大总和;2\变界值设为0;3\递归 ...

  8. HDU-2084 数塔 经典dp,水

    1.HDU-2084   数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为  dp[i][j] ...

  9. HDU2084基础DP数塔

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  10. hdu----(2084)数塔(dp)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

随机推荐

  1. oracle非正常退出后重启实例

    sqlplus /nolog 回车 conn / as sysdba 回车 startup 回车(如果被告知已启动,应先执行 shutdown immediate 回车)

  2. 中介者模式 调停者 Mediator 行为型 设计模式(二十一)

      中介者模式(Mediator)   调度.调停   意图 用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散 而且可以独立地改变它们之间的交互. ...

  3. 将传统 WPF 程序迁移到 DotNetCore 3.0

    介绍 由于历史原因,基于 Windows 平台存在着大量的基于 .NetFramework 开发的 WPF 和 WinForm 相关程序,如果将这些程序全部基于 DotNetCore 3.0 重写一遍 ...

  4. July 11th, 2018. Wednesday, Week 28th.

    It is during our darkest moments that we must focus to see the light. 越是在艰难的时候就越要着眼于光明. From Aristol ...

  5. SpringBoot中使用JNnit4(一)之Mockito的使用

    经过入门篇,可以编写出一个简单的测试用例. 这篇讲的是BDDMockito的使用. BDDMockito用于测试时进行打桩处理:通过它可以指定某个类的某个方法在什么情况下返回什么样的值. 在单元测试时 ...

  6. python day08

    ascii码转换成字符:ord(str) 字符串转换成ascii:chr(int) 三种字符串 1.普通字符串 --以字符作为输出单位 print(u'abc') 显示给用户看的字符串 2.二进制字符 ...

  7. Core官方DI解析(5)-ServiceProviderEngine

    最后来看看前面一直说的Engine(工作引擎),工作引擎接口是IServiceProviderEngine在ServiceProvider的构造函数中看到了根据指定的Mode创建了不同的实现类,下面先 ...

  8. Scala--控制结构和函数

    一.条件表达式 val s = if(x > 1) 1 else -1 s 可以是 val var s = 0 if(x > 1) s = 1 else s = -1 s 必须是 var ...

  9. 消息队列比较-rabbitmq/kafka/rocketmq/ONS

    主要是比较这几种队列中间件: rabbitmq kafka rocketmq ONS 分以下几个维度来比较 高并发 毫无疑问KAFKA发消息的速度是最快的 ROCKETMQ/ONS次之 rabbitm ...

  10. opendir函数和readdir函数内涵及用法

    工作中遇到奇怪的事,加载增量的时候加载不上.于是开始分析原因,log里边没有任何错误信息,只有加载完成的标志.增量的数据在目录里边是存在的,但是显示的目录大小却不是4096,而是17,不知道为什么.后 ...