当前位置: 首页 > news >正文

解题报告-P11670 [USACO25JAN] Cow Checkups S

P11670 [USACO25JAN] Cow Checkups S

题目描述

Farmer John 的 \(N\)\(1 \leq N \leq 5 \cdot 10^5\))头奶牛站成一行,奶牛 \(1\) 在队伍的最前面,奶牛 \(N\) 在队伍的最后面。FJ 的奶牛也有许多不同的品种。他用从 \(1\)\(N\) 的整数来表示每一品种。队伍从前到后第 \(i\) 头奶牛的品种是 \(a_i\)\(1 \leq a_i \leq N\))。

FJ 正在带他的奶牛们去当地的奶牛医院进行体检。然而,奶牛兽医非常挑剔,仅愿意当队伍中第 \(i\) 头奶牛为品种 \(b_i\)\(1 \leq b_i \leq N\))时对其进行体检。

FJ 很懒惰,不想完全重新排列他的奶牛。他将执行以下操作恰好一次。

  • 选择两个整数 \(l\)\(r\),使得 \(1 \leq l \le r \leq N\)。反转队伍中第 \(l\) 头奶牛到第 \(r\) 头奶牛之间的奶牛的顺序。

FJ 想要衡量这种方法有多少效果。求出对于所有 \(N(N+1)/2\) 种可能的操作被兽医检查的奶牛数量之和。

输入格式

输入的第一行包含 \(N\)

第二行包含 \(a_1, a_2, \ldots, a_N\)

第三行包含 \(b_1, b_2, \ldots, b_N\)

输出格式

输出一行,包含对于所有可能的操作被兽医检查的奶牛数量之和。

输入输出样例 #1

输入 #1

3
1 3 2
3 2 1

输出 #1

3

输入输出样例 #2

输入 #2

3
1 2 3
1 2 3

输出 #2

12

输入输出样例 #3

输入 #3

7
1 3 2 2 1 3 2
3 2 2 1 2 3 1

输出 #3

60

说明/提示

样例解释

样例 #1

如果 FJ 选择 \((l=1,r=1)\)\((l=2,r=2)\)\((l=3,r=3)\),则没有奶牛将会被检查。注意这些操作并没有改变奶牛的位置。

以下操作会导致一头奶牛被检查。

  • \((l=1,r=2)\):FJ 反转第一头和第二头奶牛的顺序,因此新队伍中每头奶牛的品种将为 \([3,1,2]\)。第一头奶牛将会被检查。
  • \((l=2,r=3)\):FJ 反转第二头和第三头奶牛的顺序,因此新队伍中每头奶牛的品种将为 \([1,2,3]\)。第二头奶牛将会被检查。
  • \((l=1,r=3)\):FJ 反转第一头,第二头和第三头奶牛的顺序,因此新队伍中每头奶牛的品种将为 \([2,3,1]\)。第三头奶牛将会被检查。

所有六种操作中被检查的奶牛数量之和为 \(0+0+0+1+1+1=3\)

样例 #2

有三种导致 \(3\) 头奶牛被检查的可能操作:\((l=1,r=1)\)\((l=2,r=2)\)\((l=3,r=3)\)。其余每种操作均导致 \(1\) 头奶牛被检查。所有六种操作中被检查的奶牛数量之和为 \(3+3+3+1+1+1=12\)

子任务

  • 测试点 4:\(N\le 100\)
  • 测试点 5:\(N\le 5000\)
  • 测试点 6-9:\(a_i\)\(b_i\) 均在范围 \([1,N]\) 内均匀随机生成。
  • 测试点 10-15:\(a_i\)\(b_i\) 均在范围 \([1,2]\) 内均匀随机生成。
  • 测试点 16-23:没有额外限制。

解题报告

我去,洛谷上的题解都是什么大智慧!!!我就是个屑逼!!!

参考题解:题解Cow Checkups S - 洛谷专栏

先把可以产生的情况分成两类,需要翻转才能产生价值的和不需要翻转就可以产生价值的。

先处理不需要翻转的情况,显然,对于位置 \(i\),只有 \(a_i==b_i\) 是才不用翻转就有价值。

这部分又分成两部分:

  1. 以位置 \(i\) 为中心的区间翻转:计算最多有所少个这样的区间,结果为 \(\min(i,n-i+1)\)
  2. 未涉及位置 \(i\) 的翻转:就是那些右端点小于 \(i\) 的区间和左端点大于 \(i\) 的区间,显然区间 \([1,i-1]\) 的所有子区间和区间 \([i+1,n]\) 的所有子区间都可以,结果为 \(\dfrac {i(i+1)}{2}+\dfrac {(n-i)(n-i+1)}{2}\)

现在开始处理翻转产生的价值。

设存在 \(a_i==b_j\),规定 \(i<j\),我们想求出这一对匹配可以提供多少价值。显然只有形为 \([x-t,y+t](t \in \N)\) 的区间才可以让这对匹配产生价值,同时我们关注区间的合法性,应有关于边界的条件:\(x-t \geq 1\)\(y+t \leq n\),化为 \(t \leq \min(x-1,n-y)\),那么 \(t\) 只有 \(\min(x,n-y+1)\) 种情况。

一个我无比惊叹的想法:拆掉 \(\min\),分别统计 \(x\)\(n-y-1\) 作为最小值的贡献

\(x\) 作为最小值为例,这相当于说 \(x\) 和最左端的距离比 \(y\) 和最右段的距离更小,也相当与:\(x\) 距离区间 \([1,n]\) 的中心的距离比\(y\) 更远

那么就很简单了,我们从区间中心 \(mid\) 开始扩展到区间 \([l,r]\),对于每一个 \(a_l\),我们统计 \(pos \in [l+1,r]\) 中满足 \(b_{pos}==a_l\)\(pos\) 的个数 \(cnt\),因为有 \(r-mid==mid-l\),那么肯定有 \(|pos-mid| \leq |l-mid|\),那么位置 \(l\) 将产生总共 \(cnt \times l\) 的价值。位置 \(r\) 同理。

至于 \(cnt\) 怎么计算,直接用桶数组维护就好了。

复杂度 \(O(n)\),代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int INF=0x3f3f3f3f;
const int N=501100;#define ckmax(x,y) ( x=max(x,y) )
#define ckmin(x,y) ( x=min(x,y) )inline int read()
{int f=1,x=0; char ch=getchar();while(!isdigit(ch)) { if(ch=='-') f=-1; ch=getchar(); }while(isdigit(ch))  { x=x*10+ch-'0';    ch=getchar(); }return f*x;
}vector<int> pos[N];
int n;
int a[N],cnta[N];
int b[N],cntb[N];
int ans;signed main()
{n=read();for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<=n;i++) b[i]=read();for(int i=1;i<=n;i++){if(a[i]!=b[i]) continue;ans+=min(i,n-i+1);ans+=i*(i-1)/2+(n-i)*(n-i+1)/2;}int l=n/2+1,r=n/2;for(int i=1;i<=(n+1)/2;i++){if(++r>n) break;ans+=(cnta[b[r]]+cntb[a[r]])*(n-r+1);cnta[a[r]]++,cntb[b[r]]++;if(--l<1) break;ans+=(cnta[b[l]]+cntb[a[l]])*l;cnta[a[l]]++,cntb[b[l]]++;}printf("%lld",ans);return 0;
}
http://www.wxhsa.cn/company.asp?id=6939

相关文章:

  • word vba 对 带编号格式的PO单 段落下添加对应的图片
  • 解题报告-P11671 [USACO25JAN] Farmer Johns Favorite Operation S
  • 解码C语言运算符
  • 多进程
  • 93. 递归实现组合型枚举
  • Sort方法学习(伪代码记录)
  • 深入解析:【每日一问】运算放大器与比较器有什么区别?
  • 9.17支配对问题专题总结
  • 记录知识
  • AT_agc058_b [AGC058B] Adjacent Chmax
  • Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析
  • NOIP 集训日记(学术)
  • linux中mysql如何远程连接
  • 详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测
  • 深入解析:PYcharm——pyqt音乐播放器
  • Day02
  • 专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据
  • 威联通NAS如何导入本地docker镜像
  • 【学习笔记】拉格朗日插值
  • 一种将离散化状态方程映射为并行多处理器计算机的方法
  • 基本数据类型题目
  • 一种基于动作指令交互的动态活体检测技术,提升人脸识别安全性
  • [系统] Windows 已有office版本和visio不兼容的解决方案
  • CF 2127F Hamed and AghaBalaSar
  • AT_agc055_b [AGC055B] ABC Supremacy
  • “Sequential Thinking MCP Server 和codex等AI工具本身任务拆解功能对比
  • 基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025
  • 网易伏羲:当算法遇见社交,解码游戏世界的连接密码
  • 在 CentOS 7 上安装Nginx和配置http代理
  • 题解:P2624 [HNOI2008] 明明的烦恼