某看起来不会做题1
P2448 无尽的生命
题目描述
逝者如斯夫,不舍昼夜!
叶良辰认为,他的寿命是无限长的,而且每天都会进步。
叶良辰的生命的第一天,他有1点能力值。第二天,有2点。第n天,就有n点。也就是
但是调皮的小A使用时光机,告诉他第x天和第y天,就可以任意交换某两天的能力值。即
小A玩啊玩,终于玩腻了。
叶良辰:小A你给我等着,我有100种办法让你生不如死。除非能在1秒钟之内告知有多少对“异常对”。也就是说,最后的能力值序列,有多少对的两天x,y,其中x<y,但是能力值S[x]>S[y]?
小A:我好怕怕啊。
于是找到了你。
输入输出格式
输入格式:
第一行一个整数k,表示小A玩了多少次时光机
接下来k行,,表示将与进行交换
输出格式:
有多少“异常对”
输入输出样例
输入样例#1:
2
4 2
1 4
输出样例#1: 复制
4
样例说明
最开始是
然后是
然后是
符合的对是
数据说明
对于30%的数据,
对于70%的数据,
对于100%的数据,
看来是随机出一道好题
肯定不能用逆序对直接搞
那样做只能得70分?
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define lowbit((a)) (a)&(-(a))
using namespace std;
typedef long long ll;
int hash[N],b[N],a[N];
ll ans,tree[N];
int n,m,cnt;
struct node{
int x,y;
}q[N];
inline int read(){
int a=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
for(a=0;isdigit(c);a=a*10+c-'0',c=getchar());
return a*f;
}
inline int find(int x) {
int l=1,r=m;
while(l<=r) {
int mid=(l+r)>>1;
if(hash[mid]==x) return mid;
else if(hash[mid]<x) l=mid+1;
else r=mid-1;
}
return r;
}
struct BIT{
int n;
int tre[N];
init(int n){
this-n=n;
memset(tre,false,sizeof(tre));
}
inline int lowbit(int x) {
return x&(-x);
}
inline void add(int x,ll val) {
for (int i=x;i<=m;i+=lowbit(i)) tree[i]+=val;
}
inline ll query(int x) {
ll sum=0;
for (int i=x;i;i-=lowbit(i)) sum+=tree[i];
return sum;
}
int main() {
n=read();
for (int i=1;i<=n;i++) a[++cnt]=q[i].x=read(),a[++cnt]=q[i].y=read();
sort(a+1,a+cnt+1);
for (int i=1;i<=cnt;i++)
if (a[i]!=a[i-1]) hash[++m]=a[i];
for (int i=1;i<=m;i++) b[i]=i;
for (int i=1;i<=n;i++) {
int x=find(q[i].x),y=find(q[i].y);
swap(b[x],b[y]);
}
add(b[m],1);
for (int i=m-1;i;i--) {
ll x=(ll)(hash[i+1]-hash[i]-1),p=query(i);
ans=ans+(x*p);
add(i,x);
ans=ans+query(b[i]-1);
add(b[i],1);
}
printf("%lld",ans);
return 0;
}
为什么要过别人为我安排的生活.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)