逆向思维——cf1241D
/*
给定一个序列a,每次可以把值为x的所有元素放到a的首部或尾部,问将a变为lis的最少操作步数
对原序列离散化后重新打标记,
可以反着来考虑这个问题:即固定连续的元素值为[l,r]的点不动,那么剩下的所有元素值至多多进行一次操作,就可以让这个序列变成lis
所以求出这个最长合法的连续元素值段落即可
*/
#include<bits/stdc++.h>
using namespace std;
#define N 300005
int n,a[N],b[N],L[N],R[N]; int main(){
int t;cin>>t;
while(t--){
cin>>n;
for(int i=;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i]; sort(b+,b++n);
int tot=unique(b+,b++n)-b-; for(int i=;i<=tot;i++)
L[i]=0x3f3f3f3f,R[i]=; for(int i=;i<=n;i++){
a[i]=lower_bound(b+,b++tot,a[i])-b;
L[a[i]]=min(L[a[i]],i);
R[a[i]]=max(R[a[i]],i);
} int ans=,last=,len=;
for(int i=;i<=tot;i++){
if(L[i]>last){
last=R[i];
len++;
ans=max(ans,len);
}
else {
last=R[i];
len=;
ans=max(ans,len);
}
}
cout<<tot-ans<<'\n';
}
}
逆向思维——cf1241D的更多相关文章
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- HDU1857题解(逆向思维trie)
题目link:http://acm.hdu.edu.cn/showproblem.php?pid=1857 先简述一下题目: 有一个RXC的字母矩形,R,C在500内,要匹配m个单词,m在100000 ...
- bug:逆向思维的延伸
哈哈,我又来了. 前段时间自己出了一个bug,说起来也属于比较常见的类型 A业务需要做一个活动,需要B业务判断,如果是通过A业务跳转至B业务的用户,则在B页面给这类用户展示一个对应的弹窗.(A是新增业 ...
- bzoj 1015: [JSOI2008]星球大战starwar (逆向思维+并查集)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1015 思路: 题目是要我们对当前图拆掉k个点,问,每拆一个点后图中有多少个联通块,我们可以逆 ...
- xdoj 1237 (贪心+逆向思维)
提示: 当有的元素分裂的同时,其他元素也可以+1 分析: 逆向思维,把当前数列变成一个0: 相应得操作相反: 每个元素减1 相同得两个元素可以合并 设数列中最大的数是max,则一共需要减max次才可 ...
- 优先队列 逆向思维 Gym 101128C
题目链接:http://codeforces.com/gym/101128/my 具体题目大意可以看这个人的:http://blog.csdn.net/v5zsq/article/details/61 ...
- HDU 4496 并查集 逆向思维
给你n个点m条边,保证已经是个连通图,问每次按顺序去掉给定的一条边,当前的连通块数量. 与其正过来思考当前这边会不会是桥,不如倒过来在n个点即n个连通块下建图,检查其连通性,就能知道个数了 /** @ ...
- 刷题向》一道逆向思维题(BZOJ1046)(NORMAL)
这道题对于一类题都有一个通用思路:反向递减序列即为正向字典序. 对于逆向思维的题还要多做才能培养这种对于逆向思维的感觉. 想到这种方法之后,就很简单了. 因为n×m不会炸,所以反向LIS叠一个贪心就能 ...
- UVA - 10934 Dropping water balloons (dp,逆向思维)
题目链接 题目大意:给你n个规格一样的气球和一栋大楼的高度,求最少试验几次能测出气球最高在哪一层掉下来不破. 如果这道题想用(dp[i][j]=用i个气球测出j高度的楼需要几次)来作为状态的话,那你就 ...
随机推荐
- 【leetcode】452. Minimum Number of Arrows to Burst Balloons
题目如下: 解题思路:本题可以采用贪心算法.首先把balloons数组按end从小到大排序,然后让第一个arrow的值等于第一个元素的end,依次遍历数组,如果arrow不在当前元素的start到en ...
- STM32的结构和启动模式
一.STM32F10x功能模块 32位的Cortex-M3微处理器: 可嵌套的向量中断控制器(NVIC)和60个可屏蔽中断且有16个可编程优先级: 内嵌内存: FLASH:最大512K字节 STAM: ...
- Fidder的使用
默认的header是类似这样的 User-Agent: Fiddler Host: localhost Content-Length: 34 只需要改成这样的 User-Agent: Fiddler ...
- 膜神犇 DPH
神犇 DPH 让我写博客.但是,似乎我已经开始写了?!! I am young and naïve!!! Let us orz DPH! 上节课讲DFS,这个是我最擅长的.“暴力出奇迹”!
- Webx.0-Web4.0:Web4.0
ylbtech-Webx.0-Web4.0:Web4.0 Web系统是人类迄今最伟大的发明之一,也是计算机影响人类最深远的表现. 1.返回顶部 1. Web系统是人类迄今最伟大的发明之一,也是计算机影 ...
- (61)C# 可枚举类型和迭代器
一.可枚举类型 枚举器-Enumerator 是一个只读且只能在值序列向前移动的游标 枚举器需要实现下列接口之一 System.Collections.IEnumerator System.Coll ...
- Java面试题一览
Java面试题一览
- Java中vector用法整理
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector的创 ...
- Python常用模块系列
1.时间模块 import time,datetime # print(time.time()) #时间戳 # print(time.strftime("%Y-%m-%d %X") ...
- Linux NIO 系列(04-1) select
目录 一.select 机制的优势 二.select API 介绍与使用 2.1 select 2.2 fd_set 集合操作 2.3 select 使用范例 三.深入理解 select 模型: 四. ...