Greetings

Problem - 1915F - Codeforces

题意

给一些(l,r)找到所有能够包含(l,r)的数目

引入

也就是找逆序对个数

要用到归并排序中的思想:

//https://www.luogu.com.cn/problem/P1216
#include<iostream>
#include<cstdio>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define  long long
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int INF = 1e18 + 10;
const int N = 2e5 + 10;
const int M = 1e7 + 10;
const int mod = 1e9 + 7;
int n, m, k, ans;
int qcal(int a, int b) { int res = 1; while (b) { if (b & 1) res = res * a % mod; b >>= 1; a = a * a % mod; } return res; }
int a[N];
bool is_prime(int n) { if (n < 2) return false; for (int i = 2; i <= n / i; i++) { if (n % i == 0) { return false; } }return true; }
int b[N];
void merge(int l,int r)
{// 拆分if(l == r) return;int mid = l + r >> 1;merge(l,mid);merge(mid+1,r);// 合并int i = l,j = mid + 1,k = l;while(i <= mid && j <= r){if(a[i] <= a[j]) b[k ++] = a[i ++];else b[k ++] = a[j ++];}while(i <= mid) b[k ++] = a[i ++];while(j <= r) b[k ++] = a[j ++];for(i = l;i <= r;i ++) a[i] = b[i];
}void gzy()
{cin >> n;for(int i = 1;i <= n;i ++) cin >> a[i];merge(1,n);for(int i = 1;i <= n;i ++) cout << a[i] << ' ';puts("");
}
signed main()
{IOS;int _ = 1; while (_--) gzy();return 0;
}

思路

只需要加一个 sum += mid - i + 1;

code

#include<iostream>
#include<cstdio>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define  long long
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int INF = 1e18 + 10;
const int N = 5e5 + 10;
const int M = 1e7 + 10;
const int mod = 1e9 + 7;
int n, m, k, ans;
int qcal(int a, int b) { int res = 1; while (b) { if (b & 1) res = res * a % mod; b >>= 1; a = a * a % mod; } return res; }
int a[N];
bool is_prime(int n) { if (n < 2) return false; for (int i = 2; i <= n / i; i++) { if (n % i == 0) { return false; } }return true; }
int b[N];
int sum = 0;
void merge(int l,int r)
{// 拆分if(l == r) return;int mid = l + r >> 1;merge(l,mid);merge(mid+1,r);// 合并int i = l,j = mid + 1,k = l;while(i <= mid && j <= r){if(a[i] <= a[j]){b[k ++] = a[i ++];}else {sum += mid - i + 1;b[k ++] = a[j ++];}}while(i <= mid) b[k ++] = a[i ++];while(j <= r) b[k ++] = a[j ++];for(i = l;i <= r;i ++) a[i] = b[i];
}void gzy()
{cin >> n;for(int i = 1;i <= n;i ++) cin >> a[i];merge(1,n);// for(int i = 1;i <= n;i ++) cout << a[i] << ' ';// puts("");cout << sum << endl;
}
signed main()
{IOS;int _ = 1; while (_--) gzy();return 0;
}

思路

就是对first排序之后 找到second中的逆序对个数

code

//https://www.luogu.com.cn/problem/P1216
#include<iostream>
#include<cstdio>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<map>
#include<set>  
#include<vector>
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define  long long
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int INF = 1e18 + 10;
const int N = 5e5 + 10;
const int M = 1e7 + 10;
const int mod = 1e9 + 7;
int n, m, k, ans;
int qcal(int a, int b) { int res = 1; while (b) { if (b & 1) res = res * a % mod; b >>= 1; a = a * a % mod; } return res; }
PII d[N];
bool is_prime(int n) { if (n < 2) return false; for (int i = 2; i <= n / i; i++) { if (n % i == 0) { return false; } }return true; }
int a[N],b[N];
int sum = 0;
void merge(int l,int r)
{// 拆分if(l == r) return;int mid = l + r >> 1;merge(l,mid);merge(mid+1,r);// 合并int i = l,j = mid + 1,k = l;while(i <= mid && j <= r){if(a[i] <= a[j]){b[k ++] = a[i ++];   }else {sum += mid - i + 1;b[k ++] = a[j ++];}}while(i <= mid) b[k ++] = a[i ++];while(j <= r) b[k ++] = a[j ++];for(i = l;i <= r;i ++) a[i] = b[i];
}void gzy()
{sum = 0;cin >> n;for(int i = 1;i <= n;i ++) cin >> d[i].first >> d[i].second;sort(d+1,d+1+n);for(int i = 1;i <= n;i ++) a[i] = d[i].second;merge(1,n);cout << sum << endl;
}
signed main()
{IOS;int _ = 1; cin >> _;while (_--) gzy();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python面向对像之第二次笔记

python面向对像 一、面向对象的三大特性面向对象包含3大主要特性&#xff1a;封装私有成员继承复写 pass关键字多态 总结 一、面向对象的三大特性 面向对象包含3大主要特性&#xff1a; 封装 封装是面向对象编程中的一个重要概念&#xff0c;它指的是将数据&#xff08;属性&a…

STM32信息安全 1.2 课程架构介绍:芯片生命周期管理与安全调试

STM32信息安全 1.2 课程架构介绍&#xff1a;STM32H5 芯片生命周期管理与安全调试 下面开始学习课程的第二节&#xff0c;简单介绍下STM32H5芯片的生命周期和安全调试&#xff0c;具体课程大家可以观看STM32官方录制的课程&#xff0c;链接&#xff1a;1.2. 课程架构介绍&…

记一些有关Element Plus的样式修改

先记一个放着&#xff0c;后续慢慢补充。。。 一个 Vue 3 UI 框架 | Element Plus Radio 单选框 1、去除radio的圆圈 .box-radio {/deep/ .el-radio__input {display: none;} }

【QT入门】VS2019和QT Creator如何添加第三方模块

声明&#xff1a;该专栏为本人学习Qt知识点时候的笔记汇总&#xff0c;希望能给初学的朋友们一点帮助(加油&#xff01;) 往期回顾&#xff1a; 【QT入门】什么是qt&#xff0c;发展历史&#xff0c;特征&#xff0c;应用&#xff0c;QtCreator-CSDN博客 【QT入门】Windows平台…

模方信创版正式上线!支持水面一键修复、道路置平、纹理编辑...

现在国家大力推进信创国产化软硬件替代的政策背景下&#xff0c;大势智慧重磅发布模方信创版&#xff0c;以满足用户对在信创环境下进行实景三维模型修饰与编辑的需求。 模方信创版与重建大师信创版、DasViewer信创版一道&#xff0c;构筑起三维重建信创生态的“铁三角”&…

Unity PS5开发 天坑篇 之 DEVKit环境部署与系统升级02

上一篇各位大神们已经收到了SONY官方免费寄送的PS5开发机与测试机&#xff0c;恭喜大家成为SONY的开发者, 本篇继续PS5开发机的部署与开发套件使用。 一, PC安装PS5 SDK与系统升级 1. PC/PS5 SDK Manager下载安装包 登录开发者账号后&#xff0c;Development->Resources&a…

挑战杯 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域&#xff0c;在无人驾驶领域中机器学习的各种算法随处可见&#xff0c;今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂&#xff0c;看上去无从下手。那么面对这样极其…

Linux系统——测试磁盘IOPS性能

目录 引言 一、IOPS指标受到的影响因素 二、提高IOPS性能的措施 三、测试IOPS性能命令 1.fio工具 2.ioping工具 引言 磁盘IOPS是指磁盘每秒钟可以完成的输入/输出操作数。它是衡量磁盘性能的一个重要指标&#xff0c;尤其对于需要处理大量随机读写操作的应用程序&…

B010-springcloud alibaba 分布式事务 Seata

目录 分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务解决方案全局事务/两阶段提交可靠消息服务最大努力通知TCC事务 Seata介绍Seata实现分布式事务控制案例基本代码修改order微服务OrderSeataControllerOrderServiceImpl5注释容错相关代码ProductClient 修改…

C#语法基础

1. C#语言及其特点 C#是微软公司发布的一种面向对象、运行于.NET Framework和.NET Core&#xff08;完全开源&#xff0c;跨平台&#xff09;之上的最高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的&#xff0c;由C和C衍生出来的面向对象的程序语言。它在继承C和C…

IPSEC VPN-详解原理

目录 IPSEC提供的安全服务 IPSEC协议簇 ​编辑 安全协议 1.传输模式 2. 隧道模式 AH ---鉴别头协议 AH提供的安全服务&#xff1a; AH头部 AH的保护范围 1.传输模式 2.隧道模式 ​编辑 ESP ---封装安全载荷协议 ESP提供的安全服务&#xff1a; ESP的头部 ESP的保护范围 1.传输…

数据库国产化探究及升级改造过程指导

一、背景 在信创“自主可控”的浪潮下&#xff0c;政企行业首当其冲&#xff0c;基于国产化信创的要求&#xff0c;本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制&#xff1b;能用国产化替代的评估后尽可替代割接&#xff0c;本期针对传统数据库…

22、设计模式之状态模式(State)

一、什么是状态模式 状态模式是一种行为型设计模式。它允许对象在内部状态发生改变时改变它的行为&#xff0c;简单地讲就是&#xff0c;一个拥有状态的context对象&#xff0c;在不同状态下&#xff0c;其行为会发生改变。 二、角色组成 上下文&#xff08;Context&#xff0…

【Leetcode-54.螺旋矩阵】

题目&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1…

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历&#xff0c;总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案&#xff0c;形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等&#xff0c;虽然文中使用的编程语言…

外包干了3个月,技术明显进步。。。。。

在湖南的一个安静角落&#xff0c;我&#xff0c;一个普通的大专生&#xff0c;开始了我的软件测试之旅。四年的外包生涯&#xff0c;让我在舒适区里逐渐失去了锐气&#xff0c;技术停滞不前&#xff0c;仿佛被时间遗忘。然而&#xff0c;生活的转机总是在不经意间降临。 与女…

VMware安装Centos 7系统+设置共享文件夹+VMware Tools安装

文章目录 镜像下载地址下载页自己选择直接点击下边url下载 VMware环境1.新建虚拟机2.选择“自定义(高级)”&#xff0c;并点击【下一步】3.选择虚拟机硬件兼容性&#xff0c;并点击【下一步】4.选择“稍后安装操作系统”&#xff0c;并点击【下一步】5.选择操作系统版本&#x…

阿里云服务器地域怎么选?地域选择经验分享

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

如何将大华dav视频转mp4?一键无损清晰转换~

Digital Audio Video&#xff08;DAV&#xff09;文件格式源于数字监控领域&#xff0c;旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展&#xff0c;DAV格式逐渐成为监控设备记录视频的标准格式&#xff0c;广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…

掌握微服务性能监控:走向高效稳定的系统之路

掌握微服务性能监控&#xff1a;走向高效稳定的系统之路 一、微服务性能监控的挑战二、性能监控的目标与指标三、性能监控工具概览四、实践案例分析五、结语 大家好&#xff0c;这里是程序猿代码之路&#xff0c;在当今快速迭代和发布的软件开发周期中&#xff0c;微服务架构以…