[bzoj3532][Sdoi2014]Lis

来自FallDeram的博客,未经允许,请勿转载,谢谢。


 

给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。

T<=5 n<=700

 

首先考虑建图之后最小割  每个点拆成两个点中间连费用的边

f[i]表示以i为开头的最长上升子序列长度,对于i<j&&a[i]<a[j]&&f[i]==f[j]+1 从i的出点向j的入点连INF的边

然后随意求一个最小割,按照优先级从小到大考虑每个点。

一条边可以被割,当且仅当这条边连接了两个不同的强联通块。

所以只要一条边能被割,就把它加入答案,然后把u->S,T->v的流量全部退掉即可。

#include<algorithm>
#include<iostream>
#include<cstring> 
#include<cstdio>
#include<vector>
#define S 0
#define T 1401
#define INF 2000000000 
using namespace std;
inline int read()
{int x = 0 , f = 1; char ch = getchar();while(ch < '0' || ch > '9'){ if(ch == '-') f = -1;  ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}struct edge{int to,next,w;}e[T*100];
int head[T+5],c[T+5],q[T+5],d[T+5],n,mx,cnt=1,F,a[T+5],b[T+5],top,rk[T+5],C[T+5],f[T+5];
vector<int> ans;inline void ins(int f,int t,int w)
{e[++cnt]=(edge){t,head[f],w};head[f]=cnt;e[++cnt]=(edge){f,head[t],0};head[t]=cnt;    
}bool bfs(int From,int To)
{memset(d,0,sizeof(d));int i,j;for(d[q[top=i=1]=From]=1;i<=top;++i)for(int j=c[q[i]]=head[q[i]];j;j=e[j].next)if(e[j].w&&!d[e[j].to])d[q[++top]=e[j].to]=d[q[i]]+1;return d[To];    
}int dfs(int x,int To,int f)
{if(x==To) return f;int used=0;for(int&i=c[x];i;i=e[i].next)if(e[i].w&&d[e[i].to]==d[x]+1){int w=dfs(e[i].to,To,min(f-used,e[i].w));used+=w;e[i].w-=w;e[i^1].w+=w;if(used==f) return f;}return d[x]=-1,used;
}
bool cmp(int x,int y){return C[x]<C[y];}
int main()
{for(int cas=read();cas;--cas){n=read();cnt=mx=1;ans.clear();memset(head,0,sizeof(head));for(int i=1;i<=n;++i) a[i]=read(),rk[i]=i;for(int i=1;i<=n;++i) ins(i,i+n,read());for(int i=1;i<=n;++i) C[i]=read();for(int i=n;i;--i){f[i]=1;for(int j=i+1;j<=n;++j) if(a[j]>a[i])f[i]=max(f[i],f[j]+1);mx=max(mx,f[i]);}for(int i=1;i<=n;++i){if(f[i]==mx) ins(S,i,INF);if(f[i]==1)  ins(i+n,T,INF);for(int j=i+1;j<=n;++j)if(a[j]>a[i]&&f[j]==f[i]-1)ins(i+n,j,INF); }F=0;while(bfs(S,T)) F+=dfs(S,T,INF);sort(rk+1,rk+n+1,cmp);for(int i=1;i<=n;++i){int x=rk[i];if(e[x<<1].w||bfs(x,x+n)) continue;            e[x<<1].w=e[x<<1|1].w=0;while(bfs(x,S)) dfs(x,S,INF);while(bfs(T,x+n)) dfs(T,x+n,INF);ans.push_back(x);}    printf("%d %d\n",F,ans.size());sort(ans.begin(),ans.end());for(int i=0;i<ans.size();++i)printf("%d%c",ans[i],(i+1==ans.size())?'\n':' ');}return 0;
}

转载于:https://www.cnblogs.com/FallDream/p/bzoj3532.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java静态导入_Java中越来越多地接受静态导入吗?

java静态导入曾经有一段时间&#xff0c;至少在礼貌的社会中&#xff0c;人们普遍认为使用“ 不是 ”一词是不可接受的。 确实&#xff0c;在那个时候&#xff08;也许直到今天&#xff09;&#xff0c;很多人确实&#xff08;也确实&#xff09;不认为这不是一个真实的词。 尽…

Vue+ECharts的小示例

VueECharts做数据可视化1. Vue Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现…

将MongoDB集成到您的Spring项目

本文展示了如何通过注释配置将MongoDB集成到您的spring项目中。 我们将从Gradle配置开始。 group com.gkatzioura.spring version 1.0-SNAPSHOTbuildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugi…

汇编学习笔记(3)-80x86指令集

前言 &#xff08;1&#xff09;指令的一般格式 [标号:] 助记符 [操作数1 &#xff0c; [操作数2]] [; 注释] 一行一条指令 助记符就是指令的名称&#xff0c;每条指定必定有个助记符。 助记符前面的标号是给汇编编译器看的&#xff0c;由我们自己取名&#xff0c;一般取表示本…

osg 三维gis开发_三维GIS平台的可视化应用 (下)

上一篇主要对三维GIS的基础数据和三维模型进行了一点说明&#xff0c;本篇将接着聊剩下的部分&#xff0c;主要是三维GIS平台能够支持什么样的场景展示&#xff0c;并来对平台的应用进行一些介绍。没看过上篇的朋友可以先了解一下再看本篇&#xff1a;MonoLog&#xff1a;三维G…

Servlet拦截器

Servlet拦截器1.LoginFilter package main.java.filter;import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;public class LoginFi…

前端HTML介绍

一、HTML简介HTML定义&#xff1a;  超级文本标记语言是标准通用标记语言下的一个应用&#xff0c;也是一种规范&#xff0c;一种标准&#xff0c;它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件&#xff0c;通过在文本文件中添加标记符&#xff…

huffman编码的程序流程图_Huffman编码实现压缩解压缩

这是我们的课程中布置的作业。找一些资料将作业完毕&#xff0c;顺便将其写到博客&#xff0c;以后看起来也方便。原理介绍什么是Huffman压缩Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了&#xff0c;它是一种无损压缩方法&#xff0c;在压缩过程中不会丢失信息熵。并且能…

solr创建索引_Solr:创建拼写检查器

solr创建索引在上一篇文章中&#xff0c;我谈到了Solr Spellchecker的工作原理&#xff0c;然后向您展示了其性能的一些测试结果。 现在&#xff0c;我们将看到另一种拼写检查方法。 与其他方法一样&#xff0c;此方法使用两步过程。 相当快速的“候选单词”选择&#xff0c;然…

5000元性价比高的笔记本_2018性价比笔记本电脑品牌推荐 5000左右笔记本性价比推荐...

对于年年都出新款的电子产品&#xff0c;购买者们每年都经历一回挑花眼的时刻&#xff0c;那2018有什么笔记本比较好呢?宏碁暗影骑士3参考价&#xff1a;5099元内存容量&#xff1a;8G  显存容量&#xff1a;2G  硬盘容量&#xff1a;128G1T显卡型号&#xff1a;GTX1050(高…

Hibernate模糊查询

Hibernate模糊查询1.不使用hql DetachedCriteria criteria DetachedCriteria.forClass(User.class);if (StringUtils.isNotEmpty(yh)) {criteria.add(Restrictions.or(Restrictions.eq("yhid", yh),Restrictions.like("yhxm", yh, MatchMode.ANYWHERE)))…

带有Javaslang的Java 8中的功能数据结构

Java 8的lambda&#xff08;λ&#xff09;使我们能够创建出色的API。 它们令人难以置信地提高了语言的表达能力。 Javaslang利用lambda来基于功能模式创建各种新功能。 其中之一是功能性集合库&#xff0c;旨在替代Java的标准集合。 &#xff08;这只是鸟瞰图&#xff0c;您…

丰田pcs可以关闭吗_丰田车必备的配置有哪些是在亚洲龙上体现了?

亚洲龙基于丰田TNGA架构下的GA-K平台打造而来&#xff0c;与雷克萨斯ES一致&#xff0c;先期推出搭载2.5L自然吸气发动机以及2.5L混合系统的车型。作为一汽丰田的全新旗舰轿车&#xff0c;亚洲龙主销车型配备丰田TSS规避碰撞辅助套装&#xff0c;英文全拼为 “Toyota Safety Se…

[NOIP2014]飞扬的小鸟

思路{ 对于每一列&#xff0c;小鸟或下落&#xff0c;或上升。那我们很容易想到对应的背包问题&#xff01; 按照完全背包的思想更新上升部分&#xff0c;01背包的方法更新下降部分。 撞到柱子了(aluba。。。。。。aluba.。。。。。)不慌&#xff0c;只需把它设为不可打即可&am…

2020 dns排名_2020年新版全球/全国各地ISP的DNS服务器地址表

【第一】国内外知名的公共DNS服务器(排列不分先后)&#xff1a;腾讯公共DNS(119.29.29.29、182.254.116.116)阿里公共DNS(223.5.5.5、223.6.6.6)百度公共DNS(180.76.76.76)360安全DNS(123.125.81.6)Google(8.8.8.8、8.8.4.4)114DNS(114.114.114.114、114.114.115.115)OpenDNS(2…

Spring MVC 登录拦截器

Spring MVC 登录拦截器1.编写拦截器 package interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons…

bzoj1556 (DP)

bzoj 1556 点这里打开题目 题目是求 a^2 求和&#xff1b; 原问题可以转化为&#xff1a;两个人在玩这个东西&#xff0c;问这两个人弄出来的序列相同的有多少种情况&#xff0c;操作方式不同即为一种不同的情况。 就这个问题&#xff0c;参考大佬的DP思想。 DP[t][i][j] 分别…

帆软参数设置_数据分析软件之FineReport教程:[5]参数界面JS(全)

在用报表工具设计报表时&#xff0c;使用参数控件时&#xff0c;有时我们希望部分参数控件在没满足条件时不显示&#xff0c;满足条件后再显示&#xff0c;接下来我就来教教大家怎么做&#xff01;表格软件如何根据条件控制参数控件是否显示一&#xff1a;问题描述在使用参数控…

wurfl_比较OpenDDR与WURFL

wurfl量身定制的Web内容通常受益于定制&#xff0c;以考虑多种因素&#xff0c;例如屏幕大小&#xff0c;标记语言支持和图像格式支持。 此类信息存储在“设备描述存储库”&#xff08;DDR&#xff09;中。 WURFL和OpenDDR项目都提供了访问DDR的API&#xff0c;以简化并促进适应…

ssm 静态资源处理器

ssm 静态资源处理器<!-- 静态资源处理--><mvc:default-servlet-handler/>