Running Routes Kattis - runningroutes(区间dp)
Running Routes
\]
题意
给出一个正 \(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] = 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)的更多相关文章
- [USACO2005 nov] Grazing on the Run【区间Dp】
Online Judge:bzoj1742,bzoj1694 Label:区间Dp 题目描述 John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我 ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- 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 ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
随机推荐
- Java一个简单的重试工具包
在接口调用中由于各种原因,可能会重置失败的任务,使用Guava-Retrying可以方便的实现重试功能. 首先,需要引用Guava-Retrying的包 <dependency> < ...
- Linux 启动数据库报错:could not open parameter file init**.ora
sqlplus /nolog.conn /as sysdba.startup命令后显示 SQL> startupORA-01078: failure in processing system p ...
- 为某金融企业开发团队分享DevOps Server流水线使用经验
http://www.cnblogs.com/danzhang/ DevOps MVP 张洪君
- 在Windows操作系统的文件管理器中集成Azure DevOps Server (TFS)工具菜单
故事场景 使用过SVN的用户,都知道在Windows的文件夹上点击鼠标右键,就会弹出Tortoise SVN的操作菜单(俗称小乌龟).通过这个功能,用户不需要打开SVN工具,可以直接在Windows的 ...
- LeetCode 118:杨辉三角 II Pascal's Triangle II
公众号:爱写bug(ID:icodebugs) 作者:爱写bug 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. Given a non-negative index k whe ...
- 移动端布局方案—vw+rem
前言 首先你要知道 vw 和 rem 是什么?怎么使用? ①:简单来说 vw 是视口单位,相当于把视口等分成了100,1vw = 1; ②:rem是相对单位,设置根元素 html 的 font-siz ...
- 使用AtomicInteger写一个显示锁
利用了AtomicInteger的compareAndSet方法 public class CASLock { private AtomicInteger value = new AtomicInte ...
- IntelliJ idea 撤回(已经commit未push的)操作
VSC => Git => reset head => 退回到上次commit => 退回到第2次提交之前 => 退回到指定commit版本
- 深入V8引擎-初始化之InitPlatform
上一篇其实想讲初始化的第二步,但是内容比较无聊,所以换了一个话题,谈了谈v8的命名空间和宏,稍微轻松一下. 在这里还是接着说说初始化过程,毕竟写博客的初衷是对自己努力的记录,不是为了吸粉,这篇没图,对 ...
- Sql 分页语句
select * from (select *,ROW_NUMBER()over(order by [ID]) as rowindex from product ) tb where rowinde ...