当前位置:网站首页>【集训DAY18】有趣的交换【模拟】【数学】
【集训DAY18】有趣的交换【模拟】【数学】
2022-07-29 23:52:00 【VL——MOESR】
思路:
我们发现只有当n和n+1进行翻转时,我们才不知道怎么做。
那么我们考虑,如果前半段转了一个1过去,后半段转了一个0过去,那么逆序对的数量是可以计算出来的。
那么我们就直接枚举前半段转了几个1过去,然后一次次计算答案即可。
c o d e code code
#include<iostream>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
const ll MAXN = 1e5 + 10;
ll n, x1[MAXN], y_1[MAXN], x0[MAXN], y_0[MAXN];
ll l1, l0, r1, r0, ans;
int main() {
freopen("balance.in", "r", stdin);
freopen("balance.out", "w", stdout);
scanf("%lld", &n);
for(ll i = 1; i <= n; i ++) {
ll x;
scanf("%lld", &x);
if(x == 1) x1[++ l1] = i;
else x0[++ l0] = i;
}
for(ll i = 1; i <= n; i ++) {
ll x;
scanf("%lld", &x);
if(x == 1) y_1[++ r1] = i;
else y_0[++ r0] = i;
}
ll suml = (n - l1) * l1 + (l1 + 1) * l1 / 2, sumr = (n - r1) * r1 + (r1 + 1) * r1 / 2;
for(ll i = 1; i <= l1; i ++) suml -= x1[i];
for(ll i = 1; i <= r1; i ++) sumr -= y_1[i];
if(suml == sumr) {
printf("0");
return 0;
}
ans = abs(suml - sumr);
ll sl = suml, sr = sumr;
ll tmp = 0;
for(ll i = l1, j = 1; i >= 1 && j <= r0; i --, j ++) {
sl += x1[i] - n + i - 1;
sr += r0 - j - y_0[j] + 1;
tmp += n - x1[i] + y_0[j];
if(tmp >= ans) break;
ans = min(ans, tmp + (sl - sr < 0 ? sr - sl : sl - sr));
}
sl = suml, sr = sumr;
tmp = 0;
for(ll i = l0, j = 1; i >= 1 && j <= r1; i --, j ++) {
sr += y_1[j] - n + r1 - j;
sl += i - x0[i];
tmp += n - x0[i] + y_1[j];
if(tmp >= ans) break;
ans = min(ans, tmp + (sl - sr < 0 ? sr - sl : sl - sr));
}
printf("%lld", ans);
return 0;
}
边栏推荐
- 关于 byte 的范围
- Windows 安装 MySQL 5.7详细步骤
- C陷阱与缺陷 第4章 链接 4.2 声明与定义
- 多商户商城系统功能拆解18讲-平台端商家售后
- 437. The total path III low low
- 【云原生Kubernetes】二进制搭建Kubernetes集群(中)——部署node节点
- YOLO数据格式说明与转换
- Go language serialization and deserialization and how to change the uppercase of the json key value to lowercase if the json after serialization is empty
- 容器化数据库必经之道
- Override and customize dependent native Bean methods
猜你喜欢
MySQL函数(经典收藏)
Redis系列:高可用之Sentinel(哨兵模式)
MySQL事务(transaction) (有这篇就足够了..)
NumPy(一)
Why does LabVIEW freeze when saving a VI
CesiumJS ^ source read [0] 2022 - article directory and source engineering structure
管理区解耦架构见过吗?能帮客户解决大难题的
【openlayers】Map【1】
High Numbers|Calculation of Triple Integral 3|Uncle High Numbers|Handwritten Notes
The go language (functions, closures, defer, panic/recover, recursion, structure, json serialization and deserialization)
随机推荐
Brute force recursion to dynamic programming 04 (digital string conversion)
Expansion of Parallel I/O Port in Single Chip Microcomputer Development
经典论文-SqueezeNet论文及实践
y81. Chapter 4 Prometheus Factory Monitoring System and Actual Combat -- Monitoring Extension (12)
PyTorch笔记 - Attention Is All You Need (1)
call、apply 以及 bind 的区别和用法
idea设置自动去除未引用(不再引用)的引用
绘制几何图形
接口性能测试方案设计方法有哪些?要怎么去写?
jenkins搭建部署详细步骤
EA&UML日拱一卒-多任务编程超入门-(9)线程同步
MySQL函数(经典收藏)
Genesis与Axis Ventures互动密切
Docker install MySQL8.0
全网最强 JVM 来袭!(至尊典藏版)
esp12f + tft display picture problem
关于 byte 的范围
外包干了五年,废了...
彻底搞懂kubernetes调度框架与插件
WIN2008的IIS上下载文件大小限制之修改