题意是给一个数列,可以对三个数操作:把最后一个数放到第一个,前两个数后移一位。问最后能否到达相应的目标序列。

比如 1 2 3 会转换为3 1 2,多了两个逆序对。

给出两列数a和b,问a是否能变成b,则求a对于b的逆序对,若为偶数,则可以变成b,若为奇数,则不能。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ll long long
#define lowbit(x) (x&(-x))
#define MOD 99999997
using namespace std;
const int N = 100010;
int a[N], n, c[N], b[N], tree[N];
ll ans;
int sum(int x) {int ret = 0;while(x > 0) {ret += tree[x];x -= lowbit(x);}return ret;
}
void add(int x, int d) {while(x <= n) {tree[x] += d;x += lowbit(x);}
}
int main() {cin >> n;for(int i = 1; i <= n; i++)cin >> c[i];for(int i = 1; i <= n; i++)cin >> a[i];for(int i = 1; i <= n; i++)b[a[i]] = i;for(int i = 1; i <= n; i++)c[i] = b[c[i]];for(int i = n; i > 0; i--)add(c[i], 1), ans += sum(c[i] - 1);ans % 2 ? cout << "Impossible" : cout << "Possible";return 0;
}

NCPC 2012 Problem B Bread Sorting相关推荐

  1. Sicily 14514. Bread Sorting

    题目 思路 题意是说将一组数排列成另外一组数,排序的方式是每次取出3个连续的的数字,然后abc可以cab,也就整体右移,超出位置的到最左边. 问能否排列成目标数组. 额,实在是不会做.在网上找到了好几 ...

  2. TJU Problem 2857 Digit Sorting

    原题: 2857.   Digit Sorting Time Limit: 1.0 Seconds   Memory Limit: 65536K Total Runs: 3234   Accepted ...

  3. BNUOJ-26474 Bread Sorting 逆序对

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26474 题意:给一个数列,可以对三个数操作:把最后一个数放到第一个,前两个数后移一位.问最 ...

  4. Central Europe Regional Contest 2012 Problem c: Chemist’s vows

    字符串处理的题目: 学习了一下string类的一些用法: 这个代码花的时间很长,其实可以更加优化: 代码: 1 #include<iostream> 2 #include<strin ...

  5. BNUOJ 26474 Bread Sorting

    1 /*给出n个原始顺序的数,再给出要排成目标状态顺序,每次从第一个数列中选择三个,把这三个数中最右边的数放在最左边,然后其他两个数右 2 移一个单位,为你从原始状态能不能排序成目标状态. 3 本人Y ...

  6. NEERC 2012

    NEERC 2012 Problem:http://neerc.ifmo.ru/information/problems.pdf Solve:http://neerc.ifmo.ru/informat ...

  7. matlab 日期排序_在Matlab中对数据进行排序(Sorting Data in Matlab)

    在Matlab中对数据进行排序(Sorting Data in Matlab) 我试图在Matlab中对以下数据进行排序,但没有得到我需要的预期输出. 这是数据: '1B-3A-5A' '1A-3A- ...

  8. 《算法导论》第二章 入门

    2.1 Insertion sort Pseudocode is used to specify a given algorithm in English. Issues of data abstra ...

  9. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

最新文章

  1. 给recycleview添加尾部
  2. web前端项目--用hbuilder调试app项目
  3. JavaFX UI控件教程(十六)之Separator
  4. js深度复制一个对象使用JSON.stringify是最好的办法吗
  5. MapReduce:通过数据密集型文本处理
  6. UWP 使用OneDrive云存储2.x api(一)【全网首发】
  7. python 京东_Python数据分析-京东订单数据分析实战
  8. python-opencv学习第二章
  9. kabina 使用说明_Kibana安装及使用说明
  10. B django模型系统(后续1)
  11. 线上售楼处,卖房神器还是营销噱头?
  12. rand()与srand()的简单应用(随机数)
  13. 在Win10中通过Google Chrome运行安卓应用
  14. 半导体、芯片、集成电路、无尘车间具体释义及区别
  15. 软测工具Testbed的使用以及动态测试实例
  16. Google原生输入法LatinIME词库构建流程分析(一)
  17. 红警2补丁和联机网络配置
  18. 利用图形制作个人简历,图形与形状
  19. 最好听的男孩、女孩名字
  20. 在Ubuntu上安装使用 iCloud

热门文章

  1. 最新Chromedriver与Chrome版本对应参照表【附下载链接】
  2. python(x,y)安装和使用
  3. SpringBoot+阿里云短信服务实现发送短信验证码功能
  4. Keep能一直“keep”吗?
  5. 卡迈克尔(Carmichael)函数
  6. gitlab推送企业微信机器人项目代码
  7. TRIZ系列-创新原理-16-部分或超额行动原理
  8. Elasticsearch使用说明(搬砖高人)
  9. css属性之padding和margin
  10. OC中的常用数据类型