IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> CF790 H2. Maximum Crossings (Hard Version) -> 正文阅读

[数据结构与算法]CF790 H2. Maximum Crossings (Hard Version)

CF出div 4了,初学者也可以打比赛,AK不是梦~~

原题链接

Problem - H2 - Codeforces

题目大意:要求在上下两个区间连线,上面按次序1....n,下面连线位置从输入得到。例如样例中

7 
4 1 4 6 7 7 5

那么连线方式就是上面1和下面4,上面2和下面1,即线段[1,4],[2,1],[3,4],[4,6],[5,7],[6,7][7,5]

要求最多能得到多少个线之间交叉点。通过分析可以看出,两个线段[a,b]和[c,d],其中a和c一定不相同,假设a<c,那么只有当b>=d时两线才有交点。

解题思路:只要按次序读入数据,检查第i个数据a[i]之前有多少个数字不小于a[i]。由于a[i]不会超过n,因此这是一个树状数组的模板题。

用树状数组记录每个数字出现的次数,通过树状数组查询功能,能快速得到小于a[i]的个数,做个减法就得到不小于a[i]的个数,那么a[i]和这些数字一定能构成交点。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int t,n;
int update(int a[],int x)/**< 树状数组模板 */
{
    for(;x<=n;x+=x&-x)
        a[x]++;
}
int getSum(int a[],int x)
{
    int sum=0;
    for(;x>0;x-=x&-x)
        sum+=a[x];
    return sum;
}
int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int i,j,x;
    cin>>t;
    while(t--)
    {
        cin>>n;
        ll ans=0;/**< 可能会超过int范围 */
        int s[n+5]={0};
        for(i=1;i<=n;i++)
        {
            cin>>x;
            ans+=i-1-getSum(s,x-1);/**< i左边有i-1个数字,getSum(s,x-1)找到比x小的数字个数 */
            update(s,x);
        }
        cout<<ans<<endl;
    }
    return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:54:55  更:2022-05-13 11:56:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:24:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码