Running Routes

\[Time Limit: 12000 ms\quad Memory Limit: 1048576 kB
\]

题意

给出一个正 \(n\) 边形,标号顺时针从 \(0\) 到 \(n-1\),现在给出 \(n \times n\) 的矩阵,表示从点 \(i\) 到点 \(j\) 有一条边,现在想要让你从中选出最多的边,满足选出的边严格不相交。

思路

令 \(dp[i][j]\) 表示顺时针从节点 \(i\) 到节点 \(j\) 内,最多可以选出多少边。注意 \(i\) 可以大于 \(j\),表示 \(i\) 到 \(n-1\) 到 \(0\) 再到 \(j\) 的过程。

那么这段就可以利用区间 \(dp\) 的思想来计算

\[ dp[i][j] = dp[i+1][j-1] + a[i][j]\\
dp[i][j] = max(dp[i][k]+dp[k+1][j])
\]

最后所有的 \(dp[i][i-1]\) 的最大值就是答案。

/***************************************************************
> File Name : H.cpp
> Author : Jiaaaaaaaqi
> Created Time : Thu 14 Nov 2019 05:23:41 PM CST
***************************************************************/ #include <map>
#include <set>
#include <list>
#include <ctime>
#include <cmath>
#include <stack>
#include <queue>
#include <cfloat>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#define lowbit(x) x & (-x)
#define mes(a, b) memset(a, b, sizeof a)
#define fi first
#define se second
#define pb push_back
#define pii pair<int, int> typedef unsigned long long int ull;
typedef long long int ll;
const int maxn = 5e2 + 10;
const int maxm = 1e5 + 10;
const ll mod = 1e9 + 7;
const ll INF = 1e18 + 100;
const int inf = 0x3f3f3f3f;
const double pi = acos(-1.0);
const double eps = 1e-8;
using namespace std; int n, m;
int cas, tol, T; int a[maxn][maxn];
int dp[maxn][maxn]; int get(int x) {
if(x<1) x+=n;
if(x>n) x-=n;
return x;
} int main() {
// freopen("in", "r", stdin);
scanf("%d", &n);
for(int i=1; i<=n; i++) for(int j=1, x; j<=n; j++) {
scanf("%d", &a[i][j]);
dp[i][j] = 0;
}
for(int i=1; i<=n; i++) dp[i][get(i+1)] = a[i][get(i+1)];
for(int d=3; d<=n; d++) {
for(int i=1, j=get(i+d-1); i<=n; i++, j=get(j+1)) {
dp[i][j] = dp[get(i+1)][get(j-1)]+a[i][j];
for(int x=i; x!=j; x=get(x+1)) {
dp[i][j] = max(dp[i][j], dp[i][x]+dp[get(x+1)][j]);
}
}
}
int ans = 0;
for(int i=1; i<=n; i++)
ans = max(ans, dp[i][get(i-1)]);
printf("%d\n", ans);
return 0;
}

Running Routes Kattis - runningroutes(区间dp)的更多相关文章

  1. [USACO2005 nov] Grazing on the Run【区间Dp】

    Online Judge:bzoj1742,bzoj1694 Label:区间Dp 题目描述 John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我 ...

  2. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  3. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  4. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  5. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Statu ...

  6. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

  7. HDU5900 QSC and Master(区间DP + 最小费用最大流)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...

  8. BZOJ 1260&UVa 4394 区间DP

    题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...

  9. 区间dp总结篇

    前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...

随机推荐

  1. Scala 准引用 - Quasiquote介绍

    Quasiquotes are a neat notation that lets you manipulate Scala syntax trees with ease: scala> val ...

  2. ffmpeg Operation not permitted 报错的解决过程记录

    问题重现 由于视频的录制过程出现了一些小问题,需要重新将视频文件切割和合并,找了几个视频编辑软件来做这个事情,最终的结果都不是特别满意,当时已经挺晚的了,本来打算上床睡觉第二天再去想辙,从椅子上起身的 ...

  3. iOS依赖库管理工具之CocoaPods

    CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.利用 CocoaPods,可以定义自己的依赖关系库 (称作 pods),并且随着时间的变化,在整个开发环境中对第 ...

  4. .net core —— 控制台如何获取配置文件的内容?

    本文链接:https://blog.csdn.net/yenange/article/details/82457761参考: https://github.com/liuzhenyulive/Json ...

  5. 使用numpy处理数组

    def fun_ndarray(): a = [[1,2,7], [-6,-2,-3], [-4,-8,-55] ] b = np.array(a) b = np.abs(b)#取数组的绝对值 pri ...

  6. springmvc项目转为springboot

    说明 如果你的项目连maven项目都不是,请自行转为maven项目,在按照本教程进行. 本教程适用于spring+springmvc+mybatis+shiro的maven项目. 1.修改pom文件依 ...

  7. Sitecore性化 - 您需要了解的4件事

    Sitecore非常强大,是一个数字体验平台.它可以帮助您取悦并留住客户.它可以帮助您衡量和评估广告系列.它使你成为一个更好的营销人员.它可以帮助您获得结果! 它结合了易于使用的网站内容管理系统和数字 ...

  8. python实现AES加密

    pip install pycryptodomex 需要安装pycryptodomex模块 aes加密 from Cryptodome.Cipher import AES from binascii ...

  9. Sqlserver MERGE 的基础用法

    版权声明:本文为CSDN博主「暮雪寒寒」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/qq_2762801 ...

  10. .net core 读取appsettings.json乱码

    .net core 读取配置文件乱码:vs2019读取appsettings.json乱码问题; .net core 读取appsettings.json乱码问题;用notepad++或者其他编辑器打 ...