URAL
来源:互联网 发布:淘宝买东西货到付款 编辑:程序博客网 时间:2024/06/07 01:16
题意:
有 k 行士兵,每行 n 个人,求得每一行逆序对数,输出最大的那一行的行标,逆序对数相同输出标号最小的
这里用 树状数组求逆序对数(对于每个数,他前面出现的比他大的个数)
归并排序也可以求逆序对,可以自行补充
有 k 行士兵,每行 n 个人,求得每一行逆序对数,输出最大的那一行的行标,逆序对数相同输出标号最小的
这里用 树状数组求逆序对数(对于每个数,他前面出现的比他大的个数)
归并排序也可以求逆序对,可以自行补充
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<set>#include<queue>#include<stack>#include<map>#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", stdout)using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxn = 1e4 + 7, maxd = 20 + 7, mod = 1e9 + 7;const int INF = 0x7f7f7f7f;int n, k, a[maxd][maxn], bit[maxn];int lowbit(int x) { return x & -x;}void add(int x, int t) { for(int i = x; i <= n; i += lowbit(i)) { bit[i] += t; }}int sum(int x) { int res = 0; for(int i = x; i > 0; i -= lowbit(i)) { res += bit[i]; } return res;}int main() { scanf("%d %d", &n, &k); int max_ = 0, ans = 1; for(int i = 0; i < k; ++i) { memset(bit, 0, sizeof bit); int cnt = 0; for(int j = 0; j < n; ++j) { scanf("%d", &a[i][j]); cnt += (j - sum(a[i][j])); add(a[i][j], 1); } if(cnt > max_) { max_ = cnt; ans = i+1; } } cout << ans << endl; return 0;}
阅读全文
1 0
- URAL
- 【ural】
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- java的简单爬虫
- lua基础之数组
- 我的学习记录27
- Dynamic CRM 365 程序设计器介绍
- 读书笔记:MySQL InnoDB存储引擎关键特性
- URAL
- Chrome开发者工具使用小技巧
- debian apt-get 更新源文件格式说明
- 【XML】4种解析器总结(DOM/SAX/JDDOM/DOM4J)
- ccf-2017094-通信网络
- Redis之 散列(hashes)
- 解决jsp用get方式通过a标签传值时的乱码问题
- 717. 1-bit and 2-bit Characters(第九周)
- 《Deep Learning》学习笔记一: BN的理解。