这道题看了半天没看出什么规律, 然后看到别人的博客, 结论是当n为奇数且逆序数为奇数的时候
无解, 否则有解。但是没有给出证明, 在网上也找到详细的证明……我也不知道是为什么……

求逆序对有两种方法, 树状数组和归并排序, 当然这道题数据很小可以直接暴力, 我三种都写了。

暴力

#include<cstdio>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 512;
int a[MAXN]; int main()
{
int T, n;
scanf("%d", &T); while(T--)
{
int cnt = 0;
scanf("%d", &n);
REP(i, 0, n)
{
scanf("%d", &a[i]);
REP(j, 0, i)
if(a[j] > a[i])
cnt++;
} printf("%s\n", (n & 1 && cnt & 1) ? "impossible" : "possible");
} return 0;
}

归并排序

#include<cstdio>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 512;
int a[MAXN], t[MAXN], cnt; void merge_sort(int l, int r)
{
if(l + 1 >= r) return;
int m = (l + r) >> 1;
merge_sort(l, m); merge_sort(m, r); int p = l, q = m, i = l;
while(p < m || q < r)
{
if(q >= r || p < m && a[p] < a[q]) t[i++] = a[p++];
else t[i++] = a[q++], cnt += m - p;
}
REP(i, l, r) a[i] = t[i];
} int main()
{
int T, n;
scanf("%d", &T); while(T--)
{
cnt = 0;
scanf("%d", &n);
REP(i, 0, n) scanf("%d", &a[i]);
merge_sort(0, n);
printf("%s\n", (n & 1 && cnt & 1) ? "impossible" : "possible");
} return 0;
}
树状数组

#include<cstdio>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 512;
int a[MAXN], f[MAXN], n; int lowbit(int x)
{
return x & (-x);
} void add(int x)
{
while(x <= n)
{
f[x]++;
x += lowbit(x);
}
} int sum(int x)
{
int ret = 0;
while(x)
{
ret += f[x];
x -= lowbit(x);
}
return ret;
} int main()
{
int T;
scanf("%d", &T); while(T--)
{
int cnt = 0;
memset(f, 0, sizeof(f));
scanf("%d", &n);
REP(i, 0, n)
{
scanf("%d", &a[i]);
cnt += sum(n) - sum(a[i]-1);
add(a[i]);
}
printf("%s\n", (n & 1 && cnt & 1) ? "impossible" : "possible");
} return 0;
}

紫书 习题 8-20 UVa 1620 (找规律+求逆序对)的更多相关文章

  1. 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)

    题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...

  2. hdu 2865 Polya计数+(矩阵 or 找规律 求C)

    Birthday Toy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  3. 紫书 习题8-12 UVa 1153(贪心)

    本来以为这道题是考不相交区间, 结果还专门复习了一遍前面写的, 然后发现这道题的区间是不是 固定的, 是在一个范围内"滑动的", 只要右端点不超过截止时间就ok. 然后我就先考虑有 ...

  4. 紫书 习题 11-9 UVa 12549 (二分图最小点覆盖)

    用到了二分图的一些性质, 最大匹配数=最小点覆盖 貌似在白书上有讲 还不是很懂, 自己看着别人的博客用网络流写了一遍 反正以后学白书应该会系统学二分图的,紫书上没讲深. 目前就这样吧. #includ ...

  5. 紫书 习题 11-8 UVa 1663 (最大流求二分图最大基数匹配)

    很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配 紫书上压根没讲这个算法, 而是用最大流求的. 难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗? 很有可能-- 回归正题. 题目中 ...

  6. 紫书 习题8-7 UVa 11925(构造法, 不需逆向)

    这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...

  7. 紫书 习题 8-2 UVa 1610 (暴力出奇迹)

    这道题我真的想的非常的复杂, 拿草稿纸一直在找规律,推公式, 然后总有一些特殊的情况. 然后就WA了N次.无奈之下看了别人的博客, 然后就惊了.直接暴力枚举两个相邻字符串 里面的所有可能就可以了--真 ...

  8. 紫书 习题 10-11 UVa 1646(斐波那契+高精度)

    自己用手算一下可以发现是斐波那契数列,然后因为数字很大,用高精度 以后做题的时候记得算几个数据找规律 #include<cstdio> #include<cmath> #inc ...

  9. GCD XOR UVA 12716 找规律 给定一个n,找多少对(a,b)满足1<=b<=a<=n,gcd(a,b)=a^b;

    /** 题目:GCD XOR UVA 12716 链接:https://vjudge.net/problem/UVA-12716 题意:给定一个n,找多少对(a,b)满足1<=b<=a&l ...

随机推荐

  1. vue自定义select组件

    1.目的 看了很多element-ui的源码,决定自己实现一个简单的select组件,遇到的几个难点,便记录下来. 2.难点一 element-ui中的select组件通过v-model可以绑定数据, ...

  2. [USACO18JAN] MooTube (离线并查集)

    题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量 带权并查集维护集合内元素总数 路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的 ...

  3. [luogu2579 ZJOI2005] 沼泽鳄鱼(矩阵快速幂)

    传送门 题目描述 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客. 为了让游玩更有情趣,人们在池塘的中央建设了几座石 ...

  4. nginx 过滤zip 类型的文件

    http://www.cnblogs.com/bass6/p/5500660.html

  5. 解决tpcc_load 报错 error while loading shared libraries: libmysqlclient.so.20

    在刚开始导入tpcc数据仓库时,可能会遇到 error while loading shared libraries: libmysqlclient.so.20这个错误,找不到库文件. 但是,通过fi ...

  6. JavaScript 常见创建对象的方式

    JavaScript 有哪几种创建对象的方式? javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. (1)对象字面量的方式 ...

  7. 讲一讲java异常及自定义异常

    1.异常,说白了.两种,一种就是就是不能让代码通过编译的异常.另一种就是程序运行期间出现的异常.异常就是错误,只要出现异常,程序就不会向下运行了.就不会执行后面的代码了.这时候就可以通过显示statc ...

  8. Android 中模仿 Twitter 实现 Toolbar Indicator

    项目地址:https://github.com/nekocode/ToolbarIndicator

  9. iOS7实现带文本输入框的UIAlertView及获取TextField文本内容

    if (customAlertView==nil) { customAlertView = [[UIAlertView alloc] initWithTitle:@"自定义服务器地址&quo ...

  10. 性能监控之监控SQL语句

    分析表 analyze table tablename compute statistics for all indexes; analyze table tablename compute stat ...