题意:

给出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相关推荐

  1. bzoj 1133: [POI2009]Kon(DP)

    1133: [POI2009]Kon Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 457  Solved: 166 [Submit][Status ...

  2. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  3. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  4. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

  5. BZOJ 2957楼房重建

    传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...

  6. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

  7. 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整除,输 ...

  8. bzoj 4871: [Shoi2017]摧毁“树状图”

    4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec  Memory Limit: 512 MB Submit: 53  Solved: 9 [Su ...

  9. BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...

  10. BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...

最新文章

  1. 从零开始学ios开发(十一):Tab Bars和Pickers
  2. 【转】Office 2003 EXCEL多窗口打开
  3. CentOS查看CPU信息、位数、多核信息
  4. 并行编程中的“锁”难题
  5. arcgis java api_Arcgis API For Javascript下载与安装
  6. 计算机二级vf笔试,计算机二级(VF)笔试120.doc
  7. castle activerecord mysql_Castle ActiveRecord配置中需要注意的地方
  8. PEACHPIE 0.9.11 版本发布,可以上生产了
  9. mysql死锁分析_MySQL死锁分析
  10. 刚毕业的他仅用1年就拿下了年薪30W的阿里数据分析岗
  11. python3-datetime 时间处理
  12. 垃圾回收算法与实现系列-String在虚拟机中的实现
  13. ajax获取301,PHP获取301重定向页面跳转后真实URL地址
  14. win10添加网络打印机_Mac可以访问Windows共享文件,添加网络打印机
  15. DSP的CMD文件 RUN_START
  16. C# 切割超级大图(.bmp)[1G以上超大图片分块加载代码]
  17. vivo市场API事件上报对接
  18. 简单并不粗暴:自学产品的8个方法
  19. CentOS7 通过 cups 与 Windows 共享 HP 1020 打印机
  20. git ssh配置文件 服务器_Linux 环境 搭建Git 服务器,并且修改SSH端口使用

热门文章

  1. 【超级笑话】我国智能手机操作系统发布:打败安卓/iOS
  2. 智能判定魔兽是否在聊天状态
  3. 快速解决无法登录网页版微信的问题,亲测有效
  4. openwrt php wifi 钓鱼,提高路由器wifi无线速率(OpenWrt固件)
  5. 【C语言】n的阶乘相加
  6. 《Inside UE4》读书总结一
  7. last command
  8. Android9.0新特性曝光,你准备好了吗
  9. linux系统怎么进root用户,linux系统如何切换到root用户
  10. 2023年深信服、奇安信、360等大厂网络安全校招面试真题合集(附答案)