bzoj-1133 Kon
题意:
给出n个数轴上的点,每两个点有一条带权的边;
现可以选择在n-1个区间中切k次,使切断的边权最大;
注意同一条边被切断多次只计算一次;
n<=600,k<=50,总权值<=2*10^9;
题解:
Poi~
我的思路就是做相反的问题,之后用总和去减就好了;
f[i][j]最后一次在i点切,切j次没被切到的最小边权;
这个状态显然就每条边只能计算一次了;
转移f[i][j]=min(f[k][j-1]+calc(k,i)) (1<=k<i);
calc(k,i)计算它们之间的总边权,用个前缀和数组就可以做到O(1)了;
状态n*k,转移n,总复杂度O(k*n^2);
其实这个做完了正着搞也就会了。。只是这样比较好想而已;
值得一提这题没SPJ。。但是最优方案似乎只有一组;
因为我们都不是按字典序输出的= =;
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 650
using namespace std;
int to[N][N],sum[N][N];
int f[N][55],pre[N][55];
void add(int n)
{for(int x=1;x<=n;x++)for(int y=1;y<=n;y++)sum[x][y]=sum[x][y-1]-sum[x-1][y-1]+sum[x-1][y]+to[x][y];
}
int calc(int l,int r)
{return sum[r][r]-sum[l][r]-sum[r][l]+sum[l][l];
}
void out(int x,int k,bool flag)
{if(!k) return ;out(pre[x][k],k-1,0);printf("%d%c",x,flag?'\n':' ');
}
int main()
{int n,m,i,j,k,sum,temp,ans,p;scanf("%d%d",&n,&m);for(i=1,sum=0;i<n;i++){for(j=i+1;j<=n;j++){scanf("%d",&to[i][j]);sum+=to[i][j];}}add(n);for(i=1,ans=0,p=0;i<=n;i++){f[i][0]=0x7f7f7f7f;f[i][1]=calc(0,i);for(j=2;j<=m;j++){f[i][j]=0x7f7f7f7f;for(k=1;k<i;k++){if(f[k][j-1]!=0x7f7f7f7f&&f[i][j]>(temp=f[k][j-1]+calc(k,i))){f[i][j]=temp;pre[i][j]=k;}}}if(sum-f[i][min(m,i)]-calc(n,i)>ans){ans=sum-f[i][m]-calc(n,i);p=i;}}out(p,m,1);return 0;
}
bzoj-1133 Kon相关推荐
- bzoj 1133: [POI2009]Kon(DP)
1133: [POI2009]Kon Time Limit: 10 Sec Memory Limit: 162 MB Submit: 457 Solved: 166 [Submit][Status ...
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...
- S-T平面图中利用最短路求最小割(BZOJ 1001)
BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...
- BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)
题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...
- BZOJ 2957楼房重建
传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...
- BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)
BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...
- PAT (Advanced Level) 1132~1135:1132 模拟 1133模拟(易超时!) 1134图 1135红黑树
1132 Cut Integer(20 分) 题意:将一个含K(K为偶数)个数字的整数Z割分为A和B两部分,若Z能被A*B整除,则输出Yes,否则输出No. 分析:当A*B为0的时候,不能被Z整除,输 ...
- bzoj 4871: [Shoi2017]摧毁“树状图”
4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec Memory Limit: 512 MB Submit: 53 Solved: 9 [Su ...
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...
- BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...
最新文章
- 从零开始学ios开发(十一):Tab Bars和Pickers
- 【转】Office 2003 EXCEL多窗口打开
- CentOS查看CPU信息、位数、多核信息
- 并行编程中的“锁”难题
- arcgis java api_Arcgis API For Javascript下载与安装
- 计算机二级vf笔试,计算机二级(VF)笔试120.doc
- castle activerecord mysql_Castle ActiveRecord配置中需要注意的地方
- PEACHPIE 0.9.11 版本发布,可以上生产了
- mysql死锁分析_MySQL死锁分析
- 刚毕业的他仅用1年就拿下了年薪30W的阿里数据分析岗
- python3-datetime 时间处理
- 垃圾回收算法与实现系列-String在虚拟机中的实现
- ajax获取301,PHP获取301重定向页面跳转后真实URL地址
- win10添加网络打印机_Mac可以访问Windows共享文件,添加网络打印机
- DSP的CMD文件 RUN_START
- C# 切割超级大图(.bmp)[1G以上超大图片分块加载代码]
- vivo市场API事件上报对接
- 简单并不粗暴:自学产品的8个方法
- CentOS7 通过 cups 与 Windows 共享 HP 1020 打印机
- git ssh配置文件 服务器_Linux 环境 搭建Git 服务器,并且修改SSH端口使用