t
a
g
:
tag :
tag: LIS
思维
贪心
排序
传送门 :
题意 : 给定一个数组 a [ ] a[] a[],对于该数组的价值是 m i n ( L I S ( a ) , L I S ( a ′ ) ) min(LIS(a),LIS(a')) min(LIS(a),LIS(a′)), a ′ a' a′是 a a a的翻转数组
现在你可以任意排列 a a a,询问最大的价值是多少
思路 : 显然因为取 m i n min min的关系, L I S ( a ) LIS(a) LIS(a)与 L I S ( a ′ ) LIS(a') LIS(a′)相互约束,因此只有他们一半一半的时候才是最大的
因此我们只需要统计出数组中只出现一次的数的个数,那么我们就知道 m i n ( L I S ( a ) , L I S ( a ′ ) ) = ( c n t + 1 ) / 2 min(LIS(a),LIS(a'))=(cnt+1)/2 min(LIS(a),LIS(a′))=(cnt+1)/2,因为他们可以共用一个端点,所以我们上取整
最后在加上出现次数为 > = 2 >=2 >=2的,这样子每边都可以放一个,即得答案
code :
void solve(){
cin>>n;
mp.clear();
for(int i = 1;i>a[i],mp[a[i]]++;
int res = 0 ;
int rm = 0 ;
for(auto it : mp){
if(it.y >= 2)rm ++ ;
else if(it.y == 1) res++;
}
res = (res+1)/2;
res += rm;
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?