多线程 DP。

真心觉得这个方程不好想!

设f[k,i,j,l], 表示走第k步,第一个人,第二个人和第二个人各走到第I行,第j行和第L行所能得到的最优解(我们规定前一个人比后一个人先走!)。

状态转移:

规定 t[1]:=0; t[2]:=-1;

for w:=1 to 2 do

  for q:=1 to 2 do

    for p:=1 to 2 do

  f[k,i,j,l]:=max(f[k,i,j,l],f[k-1,i+t[w],i+t[q],l+t[p]])

共有八种状态转移的方式!

接下来:由于更新了 i,j,l 并规定了前一个人比后一个人先走所以:

有 f[k,i,j,l]:=f[k,i,j,l]+s[i,k-i+1].

接下来,如果有i<>j说明 第二个人当前的状态还没有人走过,所以我们可以

f[k,i,j,l]:=f[k,i,j,l]+s[j,k-j+1].

同理 如果有 l<>j 且 l<>i 我们有:

f[k,i,j,l]:=f[k,i,j,l]+s[j,k-l+1].

我们共要走 2*n-1步。

所以 ans:=f[2*n-1,n,n,n].

 1 rogram p1143; uses math;2 const3         t:array[1..2]of longint=(0,-1);4 var5         i,j,k,l,m,n,w,p,q:longint;6         f:array[0..41,-20..20,-20..20,-20..20]of longint;7         s:array[0..20,0..20]of longint;8 begin9         read(n);
10         for i:=1 to n do
11                 for j:=1 to n do
12                         read(s[i,j]);
13         for k:=1 to 2*n-1 do
14                 for i:=1 to k do
15                         for j:=1 to k do
16                                 for l:=1 to k do
17                                         begin
18                                         begin
19                                         for w:=1 to 2 do
20                                                 for p:=1 to 2 do
21                                                         for q:=1 to 2 do
22                                         f[k,i,j,l]:=max(f[k,i,j,l],f[k-1,i+t[w],j+t[p],l+t[q]]);
23                                         end;
24                                         f[k,i,j,l]:=f[k,i,j,l]+s[i,k-i+1];
25                                         if(i<>j)then f[k,i,j,l]:=f[k,i,j,l]+s[j,k-j+1];
26                                         if(i<>l)and(j<>l)then f[k,i,j,l]:=f[k,i,j,l]+s[l,k-l+1];
27                                         end;
28         write(f[2*n-1,n,n,n]);
29 end.                

这种类型的题目还要多加练习....

转载于:https://www.cnblogs.com/zyxx233/archive/2012/12/08/2809217.html

vijos p1143(三取方格数)(100)相关推荐

  1. [Vijos 1143]三取方格数

    Description 设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0. 某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角. 在走过的路上,他取走了方格中的数 ...

  2. Vijos-p1143三取方格数(动态规划 多进程dp)

    背景 JerryZhou同学经常改编习题给自己做. 这天,他又改编了一题..... 描述 设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0. 某人从图得左上角出发,可以向下走 ...

  3. 【网络流】解题报告: luogu P2045 方格取数加强版(k取方格数)(最大费用最大流)

    点边转化:把每个格子 (i,j) 拆成一个入点一个出点. 详解链接:[图论技巧]点边转化(拆点和拆边) 从每个入点向对应的出点连两条有向边:一条容量为 1 ,费用为格子 (i,j) 中的数: 另一条容 ...

  4. 一文细数100+个数据分析指标

    一文细数100+个数据分析指标 一.用户数据指标 IP(Internet Protocol) UV(Unique Visitor) PV(Page View) VV(Visit View) DAU(D ...

  5. 51单片机实现三位十进制数加减乘除运算

    51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能. 1.显示采用动态分时8位共阳数码管输出. 2.采用4*4矩阵键 ...

  6. 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?

    百钱买百鸡问题.母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只? 1 #include<stdio.h>2 int main()3 {4 int ...

  7. 一个hin秀的小学三年级奥数题 [hin秀]

    ~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题    [hin秀] 题目: 给出一个无限大的棋盘  n×n  (n>0 , 是 ...

  8. 【面试题】从123456中取出三个数,取出三个不同数的概率是多少?

    面试题目: 从123456中取出三个数,取出三个不同数的概率是多少? 答案: 随便取数个数: 6 * 6 * 6 = 216: 取出不同数的个数是:6 * 5 * 4 = 120 概率 = 120 / ...

  9. 简述计算机联锁设备三取二制式的工作原理,车站信号

    <车站信号(中专)>系统地介绍了车站信号设备的工作原理.主要内容包括:继电集中联锁和计算机联锁.继电集中联锁介绍双线双向四显示自动闭塞提速区段车站6502电气集中的设备组成.电路原理和故障 ...

最新文章

  1. Socket通信之操作系统的字节序和位数
  2. 微信支付invalid total_fee 的报错
  3. Nature: 拟南芥微生物组功能研究1培养组学—高通量细菌分离培养鉴定
  4. 时代天使点燃口腔赛道,瑞尔集团离下一只“牙茅”还有多远?
  5. 图文说明如何使用T4在VS2008里生成代码
  6. 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储
  7. 【thymeleaf 】在 thymeleaf 中使用 shiro 标签
  8. 利用ES6的Generator语法实现自定义iterator
  9. mysql创建function 报错误1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in
  10. iOS开发ARC内存管理
  11. 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
  12. 18650锂电池保护板接线图_锂电池保护板的原理介绍保护板的构成和主要作用
  13. android手机常用浏览器,Android平台三款手机浏览器对比评测
  14. 星际开图挂_《星际争霸2》牛x强力高端职业玩家手把手教你识别开图挂
  15. 计算机主机配置一般有机箱主板cpu,电脑配置参数详解教程
  16. 备受知名投资人青睐的Pocket Network,潜力几何?
  17. 关于locale的设定
  18. 大数据BI可视化应用介绍
  19. Private,Public,Protected
  20. 区块链学习笔记23——ETH反思

热门文章

  1. c语言flash里能存文件吗,STM32内部FLASH打包读写
  2. 深度学习笔记4:Self-Taught Learning and Unsupervised Feature Learning
  3. Setting up Jupyter with Python 3 on Ubuntu
  4. (转载)微信公众平台开发入门教程
  5. vc遍历网页表单并自动填写提交
  6. Involution代码
  7. 使用帆软finereport实现跳转的一点心得
  8. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和不能接收数据问题讨论
  9. ISATAP隧道技术及实践
  10. 【康拓展开逆康托展开】