codeforces 1284B. New Year and Ascent Sequence(二分)
2024-10-08 09:48:41
B. New Year and Ascent Sequence
题意:定义上升序列Ascent,在一组序列A中,存在1<i<j<n,使得Ai<Aj。现在给定n个序列,求n个序列两两组合的n^2个组合序列中,有多少个组合是Ascent序列。。
思路: 用两个MAX,MIN数组分别记录下每个序列的最大值和最小值,然后把最大值进行排序。每次做一遍二分,取每个数组中的最小值到所有数组中的最大值中找有多少个数比它大,这样组合的新序列便是满足Ascent性质。如果本身这个序列就已经满足Ascent的性质,那么直接把最大值设置为9999999,最小值设置为-1存进去。
AC代码:
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
vector<int> MAX;
vector<int> MIN;
int main(){
int t;
cin>>t;
for(int i = ;i<t;i++){
int Length;
cin>>Length;
long long Min = ;
long long Max = -;
int ok = ;
for(int j = ;j<Length;j++){
long long cur;
cin>>cur;
if(cur> Min && ok == ){
ok = ;
}
Min = min(Min,cur);
Max = max(Max,cur);
}
if(ok == ){
MAX.push_back(Max);
MIN.push_back(Min);
}
else{
MAX.push_back();
MIN.push_back(-);
}
}
sort(MAX.begin() ,MAX.end() );
long long ans = ;
for(int i = ;i<t;i++){
ans+=(MAX.end() -upper_bound(MAX.begin() ,MAX.end() ,MIN[i]));
//cout<<ans<<endl;
}
cout<<ans;
return ;
}
最新文章
- MicroERP软件更新记录1.1
- asp.net App_Code文件夹相关操作
- u Calculate e阶乘相加求和问题
- springMVC 缓存(入门 spring+mybaties+redis一)
- 【转】如何安装mysql服务
- 13.首次安装CY7C68013A驱动失败记(结果竟然是这样)
- NOIP2000 进制转换
- 利用over开窗函数取第一条记录
- Oracle删除死锁进程的方法
- C#实现GridView导出Excel
- 【转】linux shell 逻辑运算符、逻辑表达式
- 《css世界》笔记之流、元素与基本尺寸
- leetcode — substring-with-concatenation-of-all-words
- What is event bubbling and capturing?
- mysql 去除字符串中前后空格
- doc.getElementById(id); null
- RHEL7 在不同的环境中使用不同的网络配置文件
- linux常用命令:less 命令
- xml表头内容什么意思
- “Hello World!”团队第六周第七次会议