题目描述:

在初试即将开始的最后一段日子里,laxtc重点练习了英语阅读的第二部分,他发现了一个有意思的情况。
这部分的试题最终的答案总是如下形式的:
1.A;2.C;3.D;4.E;5.F。即共有六个空格,每个空格填入一个相应的字母代表这个空格他所选择的答案,且空格中的字母不存在重复。若每个空格选择的答案都是严格递增的,则laxtc认为这个答案是和谐的,如1.A;2.C;3.D;4.E;5.F;反之,若答案中存在不递增的情况,则他认为这组答案是不和谐的,如1.A;2.C;3.B;4.E;5.F;laxtc总是希望他所选择的答案是和谐的。由于laxtc的英语并不怎么好,所以他也经常会空着一些空格,如1.A2.;3.B;4.E;5.F;此时,只要排除掉空格后的剩余部分依然是递增的,那么laxtc也认为它是和谐的。
已知共有n个空格,laxtc已经为每一个空格选择好了Ci个候选对象。laxtc想知道他最多能填写几个空格,同时保持最终答案是和谐的。

输入:

输入包含多组测试数据。每组测试数据由一个整数n(1 <= n <= 100000)开头,表示共有n个位置。
接下来共有n行数字,第i行表示laxtc为第i个空格选择的候选答案(可能会有重复的答案)。由两部分组成。第一部分为一个整数t(1 <= t <= 5),表示该空格共有t个候选答案。第二部分为t个整数,代表laxtc为该空格选择的候选答案序号(由于题数过多,这里用数字代替字母,数字在int范围内)。

输出:

输出为一个整数,代表laxtc得到的最大和谐答案组的长度,长度即填写的空格数。

样例输入:
5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5
4 1 2 3 4
4 2 3 4 5
2 2 3
2 4 5
1 1
样例输出:
5
4

思路

1. 做了20分钟 把o(n*n)的DP优化到 o(n*logn) 才发现这不就是道 LIS 变形题么, 不过仍然是 WA 到死

代码 未通过九度测试, WA 到没脾气

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std; int matrix[][];
int candi[]; int dp[]; int binary_search(int len, int x) {
int low = , high = len-; while(low <= high) {
int mid = (low+high)>>;
if(dp[mid] == x) {
return mid;
}else if(dp[mid] > x) {
high = mid - ;
}else{
low = mid + ;
}
}
return low;
}
int main() {
freopen("testcase.txt", "r", stdin);
int n;
while(scanf("%d", &n) != EOF) {
for(int i = ; i < n; i ++) {
scanf("%d", candi+i);
for(int j = ; j < candi[i]; j ++) {
scanf("%d", &matrix[i][j]);
}
} // init dp[] = matrix[][];
for(int i = ; i < candi[]; i ++) {
dp[] = min(dp[], matrix[][i]);
} int len = ; for(int i = ; i < n; i ++) {
bool added = false;
int lastNum = dp[len-];
for(int j = ; j < candi[i]; j ++) { if(!added) { // not added yet
if(matrix[i][j] > lastNum) {
dp[len++] = matrix[i][j];
lastNum = matrix[i][j];
added = ;
}else{
int pos = binary_search(len, matrix[i][j]);
dp[pos] = matrix[i][j];
}
}else {
if(matrix[i][j] >= lastNum) {
// do nothing
}else{
int pos = binary_search(len, matrix[i][j]);
dp[pos] = matrix[i][j];
}
}
}
}
printf("%d\n", len);
}
return ;
}

九度 1557:和谐答案 (LIS 变形)的更多相关文章

  1. 九度 1500:出操队形(LIS变形)

    题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较高的就要排在队尾.突然,有一天出操负责人想了一个 ...

  2. 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ

    题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&quo ...

  3. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  4. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  5. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  6. 九度 1537:买卖股票(区间DP)

    总结 1. 更新动规矩阵时, 不要 push 更新, 要用 pull更新. push 更新容易让逻辑出问题, 自己卡了很久, 改用 pull 就变得很顺利了 2. acm 题, 空间至多是百万, 再网 ...

  7. 剑指Offer - 九度1360 - 乐透之猜数游戏

    剑指Offer - 九度1360 - 乐透之猜数游戏2014-02-05 19:54 题目描述: 六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工.为了增添一点趣味性,他还准备 ...

  8. 剑指Offer - 九度1514 - 数值的整数次方

    剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...

  9. 剑指Offer - 九度1505 - 两个链表的第一个公共结点

    剑指Offer - 九度1505 - 两个链表的第一个公共结点2013-11-24 20:09 题目描述: 输入两个链表,找出它们的第一个公共结点. 输入: 输入可能包含多个测试样例.对于每个测试案例 ...

随机推荐

  1. gitlab 地址https://www.gitlab.com.cn/installation/#centos-7

    https://www.gitlab.com.cn/installation/#centos-7 1.安装并配置必要的依赖关系 在CentOS 7(和RedHat / Oracle / Scienti ...

  2. SpringBoot2 全局异常处理

    参考这篇文章里面的几种异常形式: 全局异常处理是个比较重要的功能,一般在项目里都会用到. 大概把一次请求分成三个阶段,来分别进行全局的异常处理. 一:在进入Controller之前,譬如请求一个不存在 ...

  3. 微信小程序——加入购物车弹层

    对于网上商城,加入购物车是一个必备功能了.俺今天就来说下在微信小程序里如何造一个购物车弹层. 先上图: 主要用到的微信API:wx.createAnimation(OBJECT) 说下思路: 1.wx ...

  4. Java设计模式(19)状态模式(State模式)

    State的定义:不同的状态,不同的行为:或者说,每个状态有着相应的行为. 何时使用状态模式 State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If else ...

  5. "iostat" On Linux

    CPU是一台电脑的大脑.所有的处理命令都运行在上面.I/O(输入/输出)同样扮演了一个重要角色.硬盘用于提供数据给处理器并保存CPU处理过的数据.一种衡量处理器和I/O利用率的方法是使用iostat命 ...

  6. SSH-CLIENT : gSTM

    Linux环境下可以使用终端命令行直接登录SSH帐号.但是对Linux新手,可能不太习惯用命令行,于是我就琢磨找一款Linux环境下可以图形化管理ssh帐号的客户端软件,还真让我找着了. gSTM,是 ...

  7. linux下查看目录下某种文件类型累计的代码行数

    find 路径 -name '*.py' | xargs wc -l

  8. SAP MM01 创建物料主数据 [关注公众号后回复MM01获取更多资料]

    操作内容 物料主数据,适用于所有有物料编码物料相关信息的系统维护 业务流程 新项目设计冻结后—M公司 PD用-物料编码申请表D-BOM Material Number  Application部门内部 ...

  9. TCP/IP,http,socket,长连接,短连接——小结(转)

    概要: 之前对这几个概念有点糊涂,查阅了些资料,稍微概括下他们的区别吧.如有错误,请拍~~~ 先看图: TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.    在 ...

  10. 性能优化系列三:JVM优化

    一.几个基本概念 GCRoots对象都有哪些 所有正在运行的线程的栈上的引用变量.所有的全局变量.所有ClassLoader... 1.System Class.2.JNI Local3.JNI Gl ...