~~~题面~~~

题解:

  感觉还是比较妙的,复杂度看上去很高(其实也很高),但是因为n只有100,所以还是可以过的。

  考虑一个很暴力的状态f[i][j][x][y]表示考虑取区间i ~ j的方格,左右端点颜色分别是x, y.的最大值。

  那么有如下转移

  1,直接继承子区间的答案

    f[i][j][x][y] = max(f[i][k][x][y], f[k + 1][j][x][y]);//因为子区间就这2种,毕竟子区间一定比当前区间小,因此不靠在端点上的区间一定已经被靠在端点上的区间给取过max了。

  2,由2段子区间拼凑而来,相当于枚举中间断开的地方是选了那个块.//如果中间断开的地方的块没有被选,那么一定可以找到一个被选的块作为断点(如果找不到就说明这整个区间内只取了端点,再转移也没有什么意义。)

    翻转操作是不需要考虑的,因为可以在初始化的地方就处理掉,因此只需要在转移的地方考虑一下乱序继承即可。

    即正常的顺序是[i, l] + [l + 1, j] = [i, j];

    乱序则可以支持[l + 1][j] + [i, l] = [i, j];

    所以对于这2种情况都转移一下,转移的时候必须要求相接的地方颜色相同即可。

  注意因为有子区间相加转移的地方,所以初始化为极小值的时候不要太小了,不然太小了直接一加就爆了。

 #include<bits/stdc++.h>
using namespace std;
#define R register int
#define AC 110
#define ac 6 int n, ans;
int f[AC][AC][ac][ac]; inline int read()
{
int x = ;char c = getchar();
while(c > '' || c < '') c = getchar();
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x;
} void pre()
{
n = read();
memset(f, -, sizeof(f));
int a, b, c;
for(R i = ; i <= n; i ++)
{
a = read(), b = read(), c = read();
f[i][i][a][c] = f[i][i][c][a] = b;
}
} inline void upmax(int &a, int b)
{
if(b > a) a = b;
} void work()
{
for(R i = n; i; i --)
for(R j = i; j <= n; j ++)
for(R x = ; x <= ; x ++)
for(R y = ; y <= ; y ++)
{
for(R l = i; l < j; l ++)
{
upmax(f[i][j][x][y], max(f[i][l][x][y], f[l + ][j][x][y]));
for(R k = ; k <= ; k ++)
{
upmax(f[i][j][x][y], f[i][l][x][k] + f[l + ][j][k][y]);
upmax(f[i][j][x][y], f[i][l][k][y] + f[l + ][j][x][k]);
}
}
upmax(ans, f[i][j][x][y]);
}
printf("%d\n", ans);
} int main()
{
//freopen("in.in", "r", stdin);
pre();
work();
//fclose(stdin);
return ;
}

最新文章

  1. log4j PatternLayout 输出解析
  2. 转:图解Git[强烈推荐]
  3. [MetaHook] Event Hook
  4. myeclipse自动排版
  5. Configuration of OpenCV2.1.0 with VS2010
  6. uva140 - Bandwidth
  7. 10 steps to get Ruby on Rails running on Windows with IIS FastCGI- 摘自网络
  8. 宣布发布全新的 Windows Azure 缓存预览版
  9. ActiveX 暴漏你全部信息的可怕的插件!
  10. Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext
  11. Heartbeat实现热备
  12. python PEP8相关介绍
  13. mac下安装windows系统
  14. 使用item来封装数据:
  15. 利用pyinstaller 打包Python文件
  16. Go并发示例-Pool
  17. jenkins忘记admin密码解决办法
  18. 关于SpringCloud配置网关转发时出现一下啊错误:“com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException”
  19. GridsearchCV调参
  20. Json传递数据两种方式(json大全)

热门文章

  1. CDN 缓存策略(转)
  2. WeTest功能优化第1期:截图960px,云真机映射功能了解
  3. CentOS 7.2安装11g数据库软件
  4. wordlist 4
  5. bug 调试
  6. 最小生成树与Prim算法
  7. Matlab 图象操作函数讲解
  8. 十三:Transparent Encryption in HDFS(转)
  9. [C++] Variables and Basic Types
  10. Python3 数据类型-集合