记$p_{i}$表示该位置是否有硬币

称使得$p_{i,i+1,i+2}$都变为1的操为对$i$的添加操作,使得$p_{i,i+1,i+2}$都变为0的操作为对$i$的删除操作

考虑一个简单的操作:若$p_{i}=1$,且$p_{i+1}=p_{i+2}=p_{i+3}=0$,可以通过执行对$i+1$的添加操作、对$i$的删除操作,使得$p_{i}$"移动"到$p_{i+3}$,我们将这个称之为对$i$的移动操作

接下来,我们证明一个$p_{i}$能通过添加和删除操作得到,当且仅当其能通过添加和移动操作得到:

由于移动操作是由添加和删除操作组合得到的,因此充分性满足

称$p_{i}=1$的来源为最后一次影响到$i$(由于最终$p_{i}=1$,必然是使其变为1)的操作位置,注意到对于来源相同的两个$p_{i}=p_{j}=1$,对其操作的时间也必然相同

考虑当执行对$i$删除操作时,对$p_{i},p_{i+1},p_{i+2}$的1的来源分类讨论,分为三种情况:

1.通过对$i$的添加操作得到,不妨将对$i$的删除操作提前到该次操作,显然无意义;

2.通过对$i-2$和$i+1$的添加操作,这也就是对$i$的移动操作;

3.通过对$i-1$和$i+2$的添加操作,这也就是对$i$和$i+1$的移动操作,等价于先对$i+1$、再对$i$的移动操作

由此,即证明删除操作都可以用添加和移动操作代替

接下来,考虑移动操作不会经过别的1,因此不会改变1的相对顺序,由此可以发现合法当且仅当:

选择第一次操作的3个1(模3不同余),将序列分为4部分(通过移动位置会发生改变),由于其他的1不会移动经过这3个1,要求每一个内部都是合法的

用$f_{i,j}$表示仅考虑区间$[i,j]$的最大值,若$i$或$j$中有一个未被选择,则$f_{i,j}=\max(f_{i+1,j},f_{i,j-1})$,否则分为两种情况:

1.左右端点是同一个,那么枚举中间的点转移即可(嵌套关系)

2.左右端点不是同一个,那么枚举两个的划分即可(并列关系)

时间复杂度为$o(n^{3})$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 505
4 int n,a[N],f[N][N];
5 int main(){
6 scanf("%d",&n);
7 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
8 for(int i=n;i;i--)
9 for(int j=i+1;j<=n;j++){
10 f[i][j]=max(f[i+1][j],f[i][j-1]);
11 for(int k=i;k<j;k++)f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]);
12 for(int k=i+1;k<j;k+=3)
13 if ((j-k)%3==1)f[i][j]=max(f[i][j],f[i+1][k-1]+f[k+1][j-1]+a[i]+a[j]+a[k]);
14 }
15 printf("%d",f[1][n]);
16 }

[atAGC050B]Three Coins的更多相关文章

  1. [LeetCode] Arranging Coins 排列硬币

    You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...

  2. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  3. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)

    传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...

  4. csuoj 1119: Collecting Coins

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1119 1119: Collecting Coins Time Limit: 3 Sec  Memo ...

  5. Coins

    Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hi ...

  6. hdu 1398 Square Coins (母函数)

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  7. (混合背包 多重背包+完全背包)The Fewest Coins (poj 3260)

    http://poj.org/problem?id=3260   Description Farmer John has gone to town to buy some farm supplies. ...

  8. POJ3260The Fewest Coins[背包]

    The Fewest Coins Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6299   Accepted: 1922 ...

  9. POJ1742 Coins[多重背包可行性]

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 34814   Accepted: 11828 Descripti ...

随机推荐

  1. javascriptRemke之原型的重要性

    前言:JavaScript的原型对象一直是新人学习js的一大重大阻碍,但是原型的知识往往又是面试中常常会被深挖的一个点,为什么会这样呢?本文带你揭秘JavaScript原型的重要性,了解重要性之后再进 ...

  2. Vue3学习(五)之集成HTTP库axios

    一.安装axios npm install axios@0.21.0 --save 二.axios的使用 1.在主页中引用axios 在Vue3新增了setup初始化方法,所以我们在这里开始使用并测试 ...

  3. 【Java技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

    序列化和反序列化 序列化就是指把对象转换为字节码: 对象传递和保存时,保证对象的完整性和可传递性.把对象转换为有字节码,以便在网络上传输或保存在本地文件中: 反序列化就是指把字节码恢复为对象: 根据字 ...

  4. csh

    在*unix系统中,常用的shell有sh,bash,csh/tcsh, ksh.  sh来自于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使用sh. ba ...

  5. from athletelist import AthleteList出现红色下滑波浪线警告

    问题:from athletelist import AthleteList出现红色下滑波浪线警告 经过个人网上搜索了解,这个问题是因为python找不到相关的.py文件,无法导入athletelis ...

  6. 使用docker部署nginx并配置https

    我只有一台服务器,但我想在这台服务器上运行多个项目,怎么办? 总不能靠加端口区分吧? 百度和Google是个好东西,于是我找到了答案,使用nginx. 通过nginx,我可以给我的一台服务器配置两个域 ...

  7. [软工顶级理解组] Beta阶段测试报告

    在测试过程中发现了多少Bug? 测试阶段发现并已修复的bug: 尚且存在,但是难以解决或者不影响使用的bug: 计算重修课程的时候,如果重修课程的课程号和原课程号不同,则GPA计算会出现误差.但我们无 ...

  8. UltraSoft - Beta - Scrum Meeting 5

    Date: May 21st, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 修复了课程通知链接的bug Liuzh 前端 暂无 Kkkk 前端 增加消息中心板 ...

  9. rabbitmq死信队列和延时队列的使用

    死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...

  10. 树莓派-openeuler安装

    一.安装准备 1.硬件安装 2.下载openeuler镜像 3.sd卡格式化 sd格式化工具 4.镜像校验 二.镜像烧写 选择树莓派官方烧写工具,耐心等待... 三.网络配置 1.寻找树莓派的ip地址 ...