POI2009 KON-Ticket Inspector
Description
一辆火车依次经过 \(n\) 个车站,顺序是 \(1, 2, 3, ..., n - 1, n\)。给定 \(A_{i, j}\) 表示从 \(i\) 站上车,\(j\) 站下车的个数。
有 \(K\) 次在每站操作后的检票机会,问最多能检票的多少不同的人。
Solution
这相当于给你 \(\dfrac{n^2}{2}\) 条线段(对于 \(A_{i, j}\) 而言对应的线段是 \([i, j - 1]\),因为选的点是在那站后,下车的就没了),每个线段有个权值,让你选择 \(K\) 个点,使得 \(K\) 个点所涉及的线段(重复的算一次)的权值和最大。
考虑 DP,用代表元计数法,考虑把每个线段的贡献记录在他那条线段上有的第一个点上。
状态设计
设 \(f_{i, j}\) 为前 \(i\) 个车站,已经检票了 \(j\) 次,并且在第 \(i\) 个车站后检票的最多人数
初始状态
\(f_{0, 0} = 0\),其余为负无穷(其实这里赋值与否没啥关系)。
状态转移
\(f_{i, j} = \max\{f_{k, j - 1} + val(k + 1, i)\}\)
其中 \(val(l, r)\) 表示在线段左端点在 \([l, r]\) 且右端点 $ \ge r$ 的线段个数,这个东西可以 \(O(N^3)\) 暴力预处理。
答案
\(ans = \max\{f[i][K]\}\)
时间复杂度
\(O(N^2K)\)
Tips
- 大坑,可能造成贡献的点 $ < K$,这时候你就需要从剩下的站点中,选择一些字典序较小的来输出。
Code
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 605, S = 55;
int n, tot, K, a[N][N], pre[N][S], val[N][N], cnt[N], f[N][S];
bool vis[N];
void print(int i, int j) {
if (j == 0 || i == 0) return ;
print(pre[i][j], j - 1);
vis[i] = true;
++tot;
}
int main() {
scanf("%d%d", &n, &K);
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) scanf("%d", &a[i][j]);
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) cnt[j] = 0;
for (int j = i; j <= n; j++) {
for (int k = j + 1; k <= n; k++) cnt[k - 1] += a[j][k];
for (int k = n; k >= j; k--) val[i][j] += cnt[k];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= K; j++) {
for (int k = 0; k < i; k++) {
if (f[k][j - 1] + val[k + 1][i] > f[i][j]) {
f[i][j] = f[k][j - 1] + val[k + 1][i];
pre[i][j] = k;
}
}
}
}
int ans = 0, p;
for (int i = 1; i <= n; i++) if (f[i][K] > ans) ans = f[i][K], p = i;
print(p, K);
for (int i = 1; i <= n; i++) {
if (vis[i]) printf("%d ", i);
else if (tot < K) tot++, printf("%d ", i);
}
return 0;
}
POI2009 KON-Ticket Inspector的更多相关文章
- bzoj 1133: [POI2009]Kon dp
1133: [POI2009]Kon Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 242 Solved: 81[Submit][Status][D ...
- bzoj1133: [POI2009]Kon
bzoj1133: [POI2009]Kon 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1133 思路 f[i][k]表示前i个,选了k个 ...
- 解题:POI 2009 Ticket Inspector
题面 看起来很水,然而不会DP的蒟蒻并不会做,PoPoqqq orz 设$f[i][j]$表示当前在第$i$个点和第$i+1$个点之间查票,已经查了$j$次的最大收益.然后就是那种很常见的枚举前一个结 ...
- [POI2009]Kon
Description 火车沿途有N个车站,告诉你从每一站到每一站的人数,现在查票员只能查K次票,每次查票可以控制目前在车上的所有乘客的车票.求一个查票方案,使得控制的不同的乘客尽量多. (显然对同一 ...
- 洛谷 P3486 [POI2009]KON-Ticket Inspector
P3486 [POI2009]KON-Ticket Inspector 题目描述 Byteasar works as a ticket inspector in a Byteotian Nationa ...
- [洛谷P3486]POI2009 KON-Ticket Inspector
问题描述 Byteasar works as a ticket inspector in a Byteotian National Railways (BNR) express train that ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- P3486 [POI2009]KON-Ticket Inspector
啊!这题做的真是爽!除了DP这个方法是有提示的之外,这题居然没有题解,哈哈哈嘿嘿嘿.很自豪的说:全是我自己独立解出来的一道题,包括设计状态,推倒(☺)转移方程,最后记录路径. 好了,首先,我们发现这题 ...
- [POI2009]KON-Ticket Inspector(二维前缀和+DP)
题意 有n个车站,现在有一辆火车从1到n驶过,给出aij代表从i站上车j站下车的人的个数.列车行驶过程中你有K次检票机会,所有当前在车上的人会被检票,问最多能检多少个不同的人的票 (n<=600 ...
随机推荐
- linux 网络编程 基础
网络编程基础 套接字编程需要指定套接字地址作为参数,不同的协议族有不同的地址结构,比如以太网其结构为sockaddr_in. 通用套接字: struct sockaddr { sa_family_t ...
- 机器学习3《数据集与k-近邻算法》
机器学习数据类型: ●离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所 有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度. ●连续型数据:交量可以在某个范围内取任 ...
- Git-stash(暂存)
修改某文件后,不想commit,使用stash保存在本地的某分支内 # 暂存 git stash ## 可暂存新增文件 git stash -u ## 为此次暂存添加标识 git stash save ...
- Python _PyQt5 【总】
http://www.cnblogs.com/archisama/p/5442071.html QtCore QtGui QtWidgets QtMultimedia QtBluetooth QtNe ...
- [原题复现]2019上海大学生WEB-Decade(无参数RCE、Fuzz)
简介 原题复现: 考察知识点:无参数命令执行.Fuzz 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 环境复现 ...
- wireshark分析nmap和metasploit内置的syn扫描
syn扫描 syn扫描,根据三次握手,向端口发送syn包,如果对方回应SYN/ACK,则证明端口开放 首先是nmap 速度很快,0.67秒完成,看下wireshark的抓取 一次发送了大量的syn包 ...
- 建议收藏!超详细的JVM反射原理技术点总结
反射定义 1,JAVA反射机制是在运行状态中 对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称 ...
- 使用Camtasia给视频课件添加自动聚焦的效果
随着现在抖音与微课市场的大火,原来可能只是因为兴趣爱好而剪辑制作了一些视频为爱发电,现在却完全可以当作一个事业来做了. 但是课件录制的时候,大部分的录制屏幕软件都是全屏或者固定屏幕大小录制的,有些小细 ...
- yii2.0 设置默认路由
在config/web.php 添加 $config = [ 'defaultRoute' => 'login/login', ];
- http host头攻击漏洞
原文地址: https://www.zhuyilong.fun/tech/handel_httphost_attack.html 漏洞描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host ...