题目大意:给你两个序列,可以序列进行若干次旋转操作(两个都可以转),对两个序列相同权值的地方连边,求最少的交点数

记录某个值在第一个序列的位置,再记录第二个序列中某个值 在第一个序列出现的位置 ,求逆序对数量即可

本以为是一道逆序对水题,结果被卡了20分。看了题解才恍然大悟,实际上,序列可以旋转 ≠ 序列成环,由于逆序对的特殊性(并不适用于环),故不能把一个序列单独旋转看成它们的相对移动,正着旋转一个序列≠反着旋转另一个序列(更详细证明可以看洛谷)

所以我们要对两个序列再反着进行一次同样的操作

#include <bits/stdc++.h>
#define N 200100
#define ll long long
using namespace std; ll ans,ret1,ret2,s[N];
int n,a[N],b[N],hx[N],c[N];
void update(int x,ll w) {for(int i=x;i<=n;i+=(i&(-i))) {s[i]+=w;}}
ll query(int x) {ll ans=; for(int i=x;i>;i-=(i&(-i))) {ans+=s[i];} return ans;} int main()
{
//freopen("testdata.in","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++) {scanf("%d",&a[i]);}
for(int i=;i<=n;i++) {scanf("%d",&b[i]);}
for(int i=;i<=n;i++) {hx[a[i]]=i;}
for(int i=;i<=n;i++) {c[i]=hx[b[i]];}
for(int i=;i<=n;i++) {ans+=query(n)-query(c[i]);update(c[i],(ll));}ret1=ans;
for(int i=;i<=n;i++) {ans+=query(n)-query(c[i])-query(c[i]-);ret1=min(ret1,ans);}
memset(hx,,sizeof(hx));memset(c,,sizeof(c));memset(s,,sizeof(s));ans=;
for(int i=;i<=n;i++) {hx[b[i]]=i;}
for(int i=;i<=n;i++) {c[i]=hx[a[i]];}
for(int i=;i<=n;i++) {ans+=query(n)-query(c[i]);update(c[i],(ll));}ret2=ans;
for(int i=;i<=n;i++) {ans+=query(n)-query(c[i])-query(c[i]-);ret2=min(ret2,ans);}
printf("%lld",min(ret1,ret2));
return ;
}

[USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)的更多相关文章

  1. BZOJ 4990 [USACO17FEB] Why Did the Cow Cross the Road II P (树状数组优化DP)

    题目大意:给你两个序列,你可以两个序列的点之间连边 要求:1.只能在点权差值不大于4的点之间连边 2.边和边不能相交 3.每个点只能连一次 设表示第一个序列进行到 i,第二个序列进行到 j,最多连的边 ...

  2. [USACO17FEB]Why Did the Cow Cross the Road III G (树状数组,排序)

    题目链接 Solution 二维偏序问题. 现将所有点按照左端点排序,如此以来从左至右便满足了 \(a_i<a_j\) . 接下来对于任意一个点 \(j\) ,其之前的所有节点都满足 \(a_i ...

  3. Why Did the Cow Cross the Road III(树状数组)

    Why Did the Cow Cross the Road III 时间限制: 1 Sec  内存限制: 128 MB提交: 65  解决: 28[提交][状态][讨论版] 题目描述 The lay ...

  4. BZOJ4990 [Usaco2017 Feb]Why Did the Cow Cross the Road II 动态规划 树状数组

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4990 题意概括 有上下两行长度为 n 的数字序列 A 和序列 B,都是 1 到 n 的排列,若 a ...

  5. BZOJ4993 [Usaco2017 Feb]Why Did the Cow Cross the Road II 动态规划 树状数组

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4993 题意概括 有上下两行长度为 n 的数字序列 A 和序列 B,都是 1 到 n 的排列,若 a ...

  6. [BZOJ4994] [Usaco2017 Feb]Why Did the Cow Cross the Road III(树状数组)

    传送门 1.每个数的左右位置预处理出来,按照左端点排序,因为左端点是从小到大的,我们只需要知道每条线段包含了多少个前面线段的右端点即可,可以用树状数组 2.如果 ai < bj < bi, ...

  7. hdu2838 cow sorting用树状数组求逆序对

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2838/ 题目解法:题目给出一个1-n的排列,操作只有一种:交换相邻的元素,代价是两个元素之和,问将该序列变成升序 ...

  8. [BZOJ4989][Usaco2017 Feb]Why Did the Cow Cross the Road 树状数组维护逆序对

    4989: [Usaco2017 Feb]Why Did the Cow Cross the Road Time Limit: 10 Sec  Memory Limit: 256 MBSubmit:  ...

  9. 洛谷 P3662 [USACO17FEB]Why Did the Cow Cross the Road II S

    P3662 [USACO17FEB]Why Did the Cow Cross the Road II S 题目描述 The long road through Farmer John's farm ...

随机推荐

  1. js中数组常用方法

    1.Array.push() 此方法是在数组的后面添加新加元素,此方法改变了数组的长度: var aa=[1,2,3]; var bb=aa.push(4,5); console.log(bb)    ...

  2. 22 链表中倒数第k个节点(第3章 高质量的代码-代码的鲁棒性)

    题目描述: 输入一个链表,输出该链表中倒数第k个结点. 尾节点是倒数第一个节点 测试用例:   功能测试(第k个节点在中间.是头节点.是尾节点) 特殊输入测试(链表头节点是nullptr指针.链表的头 ...

  3. nmcli 静态方式添加IP地址

    [root@ansible02:/root] > ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state U ...

  4. Python GitHub上星星数量最多的项目

    GitHub上星星数量最多的项目 """ most_popular.py 查看GitHub上获得星星最多的项目都是用什么语言写的 """ i ...

  5. ArcGIS中标格乱码??

    安装好ArcGIS之后导入地图层之后,显示 label 时中文乱码,但是导出数据显示正常 这是 ArcGIS 安装环境编码的问题,只需要修改一下配置文件即可 打开 cmd 命令窗口 reg add H ...

  6. 参数化取值策略Unique

    Unique:主要是强调取值的唯一性,如果到最后没有该值了,LR提供了其他解决方案,如图所示: 此处的下拉列表中提供了三种方式,具体如下: About Vuser,当取值次数超过参数的行数时,忽略脚本 ...

  7. lvs 负载均衡环境搭建

    记录一下搭建lvs环境的步骤 当中master 10.0.0.11,backup 10.0.0.15.realserver1 10.0.0.119.realserver210.0.0.11 1.mkd ...

  8. 用jquery ajax做的select菜单,选中的效果

    //用server端语言赋值给js变量     var departmentId = '<%=提交的值 %>', deviceId='<%=提交的值 %>'     $(fun ...

  9. UVA 10127- Ones 数学

    Given any integer 0 ≤ n ≤ 10000 not divisibleby 2 or 5, some multiple of n is a number whichin decim ...

  10. Oracle 位图索引

    内容简介: 1.位图索引 1.1位图索引使用注意事项; 1.2 使用位图索引; 1.3 位图索引对DML操作的影响; 2.位图连接索引 2.1 明确需求后使用位图索引; 2.1创建位图连接索引的注意事 ...