NOIP 2000 提高组第四题

题目描述

设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放
人数字0。如下图所示(见样例):
A
0  0  0  0  0  0  0  0
0  0 13  0  0  6  0  0
0  0  0  0  7  0  0  0
0  0  0 14  0  0  0  0
0 21  0  0  0  4  0  0
0  0 15  0  0  0  0  0
0 14  0  0  0  0  0  0
0  0  0  0  0  0  0  0
                           B
    某人从图的左上角的A点出发,可以向下行走,也可以向右走,直到到达右下角的B 
点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。
    此人从A点到B点共走两次,试找出2条这样的路径,使得取得的数之和为最大。

输入输出格式

输入格式:

输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个
表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。

输出格式:

只需输出一个整数,表示2条路径上取得的最大的和。

输入输出样例

输入样例#1:

8
2 3 13
2 6  6
3 5  7
4 4 14
5 2 21
5 6  4
6 3 15
7 2 14
0 0  0

输出样例#1:

67

思路

  双线程动归

  设f[i][j][k][l]为从 (0, 0) 位置由两条不交叉的线路走到 (i, j),(k, l) 位置时的最大好感度和,则它的上一步可能有四种情况:

  1. 第一个点由上走来,第二个点也由上走来,此时的好感度和为f[i - 1][j][k - 1][l]
  2. 第一个点由上走来,第二个点则由左走来,此时的好感度和为f[i - 1][j][k][l - 1]
  3. 第一个点由左走来,第二个点则由上走来,此时的好感度和为f[i][j - 1][k - 1][l]
  4. 第一个点由左走来,第二个点也由左走来,此时的好感度和为f[i][j - 1][k][l - 1]

  取四种情况中的最大者加上两个点的权值即可。

  特判:一直到终点之前,为了防止路径重叠,不能让两个点相同,所以最后如果两个点相同的话,减去一个点的权值即可。

PS:这可是第一个一气敲完静态编译没报错并且全部AC的NOIP题目,撒花!!!

var a:array[0..10,0..10] of longint;f:array[0..10,0..10,0..10,0..10] of longint;n,i,j,k,l,x,y,z,sum:longint;function max(q,w,e,r:longint):longint;
beginmax:=q;if w>max then max:=w;if e>max then max:=e;if r>max then max:=r;exit(max);
end;beginfillchar(f,sizeof(f),0);fillchar(a,sizeof(a),0);readln(n);while 0=0 do beginreadln(x,y,z);if (x=0)and(y=0)and(z=0) then break;a[x,y]:=z;end;for i:=1 to n dofor j:=1 to n do for k:=1 to n do for l:=1 to n dobeginsum:=max(f[i,j-1,k,l-1],f[i-1,j,k-1,l],f[i-1,j,k,l-1],f[i,j-1,k-1,l]);if (k<>i)or(l<>j) then f[i,j,k,l]:=sum+a[i,j]+a[k,l]else f[i,j,k,l]:=sum+a[i,j];end;writeln(f[n,n,n,n])
end.

View Code

转载于:https://www.cnblogs.com/yangqingli/p/4749492.html

[NOIP2000]方格取数相关推荐

  1. AcWing1027. 方格取数

    AcWing1027. 方格取数 设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0.如下图所示: 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到 ...

  2. 最小割 ---- 二分图最大独立集(集合冲突模型) ---- 骑士共存 方格取数(网络流24题)

    二分图独立集 定理: 二分图最大独立集=n - 二分图最大匹配 其实二分图独立集是特殊的一种最大权闭合子图.我们根据上文"收益"的思想,把选某个点的收益看为1,左部节点为正权点,右 ...

  3. 【网络流24题】I、 方格取数问题(二分图的最大独立集/最小割)

    I. 方格取数问题(二分图的最大独立集/最小割) [问题分析] 二分图点权最大独立集,转化为最小割模型,从而用最大流解决. [建模方法] 首先把棋盘黑白染色,使相邻格子颜色不同,所有黑色格子看做二分图 ...

  4. P2774 方格取数问题 网络最大流 割

    P2774 方格取数问题:https://www.luogu.org/problemnew/show/P2774 题意: 给定一个矩阵,取出不相邻的数字,使得数字的和最大. 思路: 可以把方格分成两个 ...

  5. hdu2167 方格取数 状态压缩dp

    题意:      方格取数,八个方向的限制. 思路:      八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...

  6. hdu 1565 方格取数(1)(状态压缩dp)

    方格取数(1)                                                                 Time Limit: 10000/5000 MS (J ...

  7. [codevs 1907] 方格取数3

    [codevs 1907] 方格取数3 题解: 二分图染色.最大点权独立集. 因为要用到最大独立集的一些思路,故先写了一篇最大独立集的题解:http://blog.csdn.net/qq_211102 ...

  8. [codevs 1227] 方格取数2

    [codevs 1227] 方格取数 2 题解: 注:这是CODEVS的方格取数2,走k次的版本. 因为每个格子可以走无数次,但走过一次之后数字就变成了0,也就是只有一次可以加上格子里的数字.所以要拆 ...

  9. HDU-1569 方格取数(2) 最小割最大流

    题义很简单,还记得方格取数(1)的时候,使用状态压缩写的,这里由于行列数太大,因此无法进行压缩.所以要运用的最小割最大流的思想来解这道题. 大概是这样分析的,题义是要我们求在一个方格内取出N个点,使得 ...

  10. Luogu_2774 方格取数问题

    Luogu_2774 方格取数问题 二分图最小割 第一次做这种题,对于某些强烈暗示性的条件并没有理解到. 也就是每一立刻理解到是这个图是二分图. 为什么? 横纵坐标为奇数的只会和横纵坐标为偶数的相连. ...

最新文章

  1. this. $ refs: undefined 的解决办法
  2. 前谷歌董事长施密特:美国AI领导地位岌岌可危,科研预算投入得翻倍
  3. zabbix监控超详细搭建过程
  4. Java高并发编程:性能与线程竞争
  5. 专门针对科学家工程师的僵尸网络
  6. 隐马尔可夫模型:HMM
  7. python高斯滤波和降噪_python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子...
  8. 看完就能知道渗透测试的技术结构
  9. [转载] python迭代器
  10. 美团NLP实习生招聘
  11. 机器学习入门——分类算法的评价
  12. Libmodbus 移植
  13. 华大MCU(四):HC32F460串口IAP升级app部分
  14. 浩辰3D软件入门教程:如何创建零件?
  15. Oracle 技能强化 Part 9 范围查询
  16. 基于单片机的modbus从机程序
  17. Scala中的集合排序总结
  18. 重心在哪里(简单数学题)
  19. android cs,CS 1.6移植安卓手机:附安装教程
  20. day08 C语言初阶——例题:计算n的阶乘,计算1!+2!+3!+...+10!

热门文章

  1. C语言 AI智能,五子棋 人机对战,人人对战
  2. 关于win10家庭版不能开启虚拟机的问题
  3. [USACO18DEC]Cowpatibility(容斥 or bitset优化暴力)
  4. SQL SERVER数据库优化相关资料
  5. linux系统快捷键使用
  6. BZOJ 2821: 作诗(Poetize) [分块]
  7. CentOS 关闭防火墙和selinux
  8. Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
  9. 南阳acm-206-矩形的个数(水题)
  10. 使用http连接到Analysis services