【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序
【题目】#6395. 「THUPC2018」城市地铁规划 / City
【题意】给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值。\(n \leq 3000,k \leq 10\)。
【算法】背包DP+Prufer序
首先每个点度x的价值g(x)可以暴力预处理。将每个点的度-1后,就不再有树形态这个限制了,只要n个点的度加起来是n-2即可,因为此时只要让所有还原后度不为1的点连通,度为1的叶子节点直接分配。
问题转化为n-2个大小为x价值为g(x+1)的物品,求容量为n-2的完全背包的最大价值,复杂度\(O(n^2)\)。
这里的背包有个问题,就是大小为0的物品也是有价值的(必须n个点都计算),我的方法是所有价值先减g(1),最后再加n*g(1)。
构造方案的时候可以用n^2数组记录,也可以一步一步找最优大小退容量(因为是完全背包),每个点向上一个点连边使度不为1的点构成一条链,再从后往前分配叶子节点。
注意:根节点没有向上的路径,但是为了方便背包DP依然减掉一个度,最后构造方案的时候默认第一个点为根节点不往上连边即可。
还有要特殊处理n=1和n=2的情况,\(0^0=1\)。
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=3010,MOD=59393;
int n,kind,as[20],g[maxn],f[maxn];
int main(){
scanf("%d%d",&n,&kind);
for(int i=0;i<=kind;i++)scanf("%d",&as[i]);
if(n==1){printf("%d %d",n-1,as[0]);return 0;}
for(int i=1;i<n;i++){
int x=1;
for(int j=0;j<=kind;j++){
g[i]=(g[i]+x*as[j])%MOD;
x=x*i%MOD;
}
if(i!=1)g[i]-=g[1];//
}
for(int i=1;i<=n-2;i++){
for(int j=i;j<=n-2;j++){
f[j]=max(f[j],f[j-i]+g[i+1]);
}
}
printf("%d %d\n",n-1,f[n-2]+n*g[1]);//
int x=n-2,id=0,y=n;
while(x){
for(int i=1;i<=x;i++)if(f[x-i]+g[i+1]==f[x]){
x-=i;
if(++id!=1)printf("%d %d\n",id-1,id);else i++;//
for(int j=1;j<i;j++)printf("%d %d\n",id,y--);
break;
}
}
if(n==2)id++;
printf("%d %d\n",id,id+1);//
return 0;
}
有没有发现算法里还有”Prufer序“这一项?很有意思的是,上面推到的结论就是Prufer序的结论。
从Prufer序的角度来考虑,题目和带标号无根树、点度密切相关,可以想到只需要构造一个Prufer序使得各点度+1的价值最大就行了。
问题转化为n-2个大小为x价值为g(x+1)的物品,求容量为n-2的完全背包的最大价值,复杂度\(O(n^2)\)。
【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序的更多相关文章
- 【LibreOJ】#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop 线段树+完全背包
[题目]#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop [题意]给定一个长度为n的物品序列,每个物品有价值.不超过m的重量.要求支持以下三种操作:1.物品价值区间加减,2.物 ...
- 【LibreOJ】#6392. 「THUPC2018」密码学第三次小作业 / Rsa 扩展欧几里得算法
[题目]#6392. 「THUPC2018」密码学第三次小作业 / Rsa [题意]T次询问,给定正整数c1,c2,e1,e2,N,求正整数m满足: \(c_1=m^{e_1} \ \ mod \ \ ...
- 【bzoj4753】[Jsoi2016]最佳团体 分数规划+树形背包dp
题目描述 JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了 ...
- LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配
#2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- LibreOJ #2036. 「SHOI2015」自动刷题机
#2036. 「SHOI2015」自动刷题机 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开 ...
- 「bzoj1003」「ZJOI2006」物流运输 最短路+区间dp
「bzoj1003」「ZJOI2006」物流运输---------------------------------------------------------------------------- ...
- 「bzoj1925」「Sdoi2010」地精部落 (计数型dp)
「bzoj1925」「Sdoi2010」地精部落---------------------------------------------------------------------------- ...
- BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)
题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...
随机推荐
- [SHELL]输入输出重定向与管道
一 . 输出重定向(将命令的输出重定向到文件): ls -al > test 以覆盖的方式写入 ls -al >> test 以追加的方式写入 二 . 输入重定向(将文件的内容重定向 ...
- arduino新入手体验:三个小实验
新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...
- 利用KMP算法解决串的模式匹配问题(c++) -- 数据结构
题目: 7-1 串的模式匹配 (30 分) 给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串 ...
- 互联网寒冬,Python 程序员如何准备面试
虽说年年都在喊互联网寒冬,最难就业季,但是今年确实有点不一样,年前年后一波又一波互联网公司宣布『人员调整,结构优化』, 这是往年没发生过的. 是不是面试机会就少了很多呢?不是的. 搜索招聘网站我们可以 ...
- 【MOOC EXP】Linux内核分析实验五报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...
- 《Linux内核分析与设计》读书笔记二
第五章 5.1 与内核通信57 系统调用在用户空间进程和硬件设备之间添加了一个中间层,该层主要作用有三个: 首先它为用户空间提供了一种硬件的抽象接口,举例来说当需要读写文件的时候,应用程序就可以不去管 ...
- 每日scrum(2)
今天是冲刺的第二天,小组主要做了界面的美化,加入了软件的开始动画,以及学校景点的美图介绍: 主要的问题在于除了开始界面,进入软件之后还是有待改进,功能的呈现有待加强. 任务看板: 燃尽图: 会议照片:
- ios UnitTest 学习笔记
一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...
- 如何花样展示自己的摄影作品?强大的WebGL能力展示
注意:Windows平台推荐使用Edge.Chrome.FireFox,部分浏览器打不开 P.S.慢慢用鼠标在图片上拖拽会感觉更神奇
- Java的4种保留4位小数的方法(转)
上网查到的4种方法 其实刚学java……谁知道java里面的这么多方法啊……java里面重要的包本来就不少啊 ……跟我学粤语的小徒弟问我的东东…… 写两种方式……直接在main函数里面写的.还有就是利 ...