博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SDOI2014]LIS
阅读量:6658 次
发布时间:2019-06-25

本文共 1266 字,大约阅读时间需要 4 分钟。

 

题目描述

 

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

 

输入输出格式

输入格式:

 

 

输入包含多组数据。 输入的第一行包含整数T,表示数据组数。接下来4*T行描述每组数据。 每组数据的第一行包含一个整数N,表示A的项数,接下来三行,每行N个整数A1..An,B1.,Bn,C1..Cn,满足1 < =Ai,Bi,Ci < =10^9,且Ci两两不同。

 

 

输出格式:

 

 

对每组数据,输出两行。第一行包含两个整数S,M,依次表示删去项的代价和与数量;接下来一行M个整数,表示删去项在4中的的位置,按升序输出。

 

 

 

输入输出样例

 

输入样例#1:
163 4 4 2 2 32 1 1 1 1 26 5 4 3 2 1
输出样例#1:
4 3    2 3 6解释:删去(A2,43,A6),(A1,A6),(A2,43,44,A5)等都是合法的方案,但{A2,43,A6)对应的C值的字典序最小。

 

说明

 

1 < =N < =700 T < =5

 

题意:

给定一个序列,删去若干项,使得序列的 LIS 长度减少,且代价和最小
输出字典序最小的方案

分析:

 

 

 

#include
#include
#include
#include
using namespace std;#define FRE(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);const int N=10005;const int inf=0x3f3f3f3f;struct edge{
int v,next,cap;}e[N*100];int tot=1,head[N];struct node{
int c,id;}c[N];int dis[N],q[N*10];int n,cas,maxflow,maxn,a[N],b[N],f[N],ans[N*10];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;}inline bool cmp(const node &x,const node &y){ return x.c

 

转载于:https://www.cnblogs.com/shenben/p/6411668.html

你可能感兴趣的文章
常见标签的默认属性值及相互作用——关于CSS reset的思考
查看>>
jQuety遍历数组
查看>>
jvm的内存模型
查看>>
启动后再显示状态栏Status Bar
查看>>
如何向函数传递一个数组?
查看>>
jQuery中插件的应用(注册的验证)
查看>>
MySQL ubuntu启动
查看>>
玩转X-CTR100 l STM32F4 l DHT11温湿度传感器
查看>>
对软件工程的理解
查看>>
(39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】
查看>>
Automator 简单使用流程
查看>>
前端性能监控平台showslow+Yslow搭建
查看>>
Automated Whitebox Fuzz Testing
查看>>
何为JQuery对象?
查看>>
fastdfs安装详细
查看>>
cocos2d-x中CCLabelAtlas的小图片拼接
查看>>
编译安装httpd
查看>>
按日期、时间批量删除文件
查看>>
Tomcat使用IDEA远程Debug调试
查看>>
tmpFile.renameTo(classFile) failed解决
查看>>