hdu2838 Cow Sorting 树状数组
来源:互联网 发布:my sql条件触发器 编辑:程序博客网 时间:2024/06/06 01:57
Cow Sorting
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3322 Accepted Submission(s): 1118
Problem Description
Sherlock's N (1 ≤ N ≤ 100,000) cows are lined up to be milked in the evening. Each cow has a unique "grumpiness" level in the range 1...100,000. Since grumpy cows are more likely to damage Sherlock's milking equipment, Sherlock would like to reorder the cows in line so they are lined up in increasing order of grumpiness. During this process, the places of any two cows (necessarily adjacent) can be interchanged. Since grumpy cows are harder to move, it takes Sherlock a total of X + Y units of time to exchange two cows whose grumpiness levels are X and Y.
Please help Sherlock calculate the minimal time required to reorder the cows.
Please help Sherlock calculate the minimal time required to reorder the cows.
Input
Line 1: A single integer: N
Lines 2..N + 1: Each line contains a single integer: line i + 1 describes the grumpiness of cow i.
Lines 2..N + 1: Each line contains a single integer: line i + 1 describes the grumpiness of cow i.
Output
Line 1: A single line with the minimal time required to reorder the cows in increasing order of grumpiness.
Sample Input
3231
Sample Output
7HintInput DetailsThree cows are standing in line with respective grumpiness levels 2, 3, and 1.Output Details2 3 1 : Initial order.2 1 3 : After interchanging cows with grumpiness 3 and 1 (time=1+3=4).1 2 3 : After interchanging cows with grumpiness 1 and 2 (time=2+1=3).
Source
2009 Multi-University Training Contest 3 - Host by WHU
get到新技巧就是树状数组不仅可以用来统计前面有多少个玩意儿比自己小等于,那几个玩意儿的值也是可以记录的,想象成大数组打标记一样。。。几天没敲电脑现在啥话也憋不出来。。。
/* ━━━━━┒ ┓┏┓┏┓┃μ'sic foever!! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┃┃┃┃┃┃ ┻┻┻┻┻┻ */#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <stack>#include <vector>using namespace std;const int maxn=1e5+10;long long save[maxn];struct unit{ int pos; long long val;}c[maxn];int n;int lowbit(int x){ return x&(-x);}void update(int x,int num,long long val){ while(x<=maxn){ c[x].pos += num; c[x].val += val; x += lowbit(x); }}long long getsum(long long x){ long long sum=0; while(x){ sum += c[x].pos; x -=lowbit(x); } return sum;}long long getVal(int x){ long long sum = 0; while(x){ sum += c[x].val; x -= lowbit(x); } return sum;}int main(){ int i,j; long long ans; while(~scanf("%d",&n)){ ans = 0; for(i=1;i<=n;i++){ scanf("%lld",&save[i]); } for(i=n;i>=1;i--){ //cout<<getsum(save[i])<<" "<<getVal(save[i])<<endl; ans += getsum(save[i])*save[i] + getVal(save[i]); update(save[i], 1, save[i]); } printf("%lld\n",ans); } return 0;}
0 0
- 树状数组 hdu2838 Cow Sorting
- HDU2838 Cow Sorting 树状数组
- hdu2838 Cow Sorting(树状数组)
- hdu2838 Cow Sorting 树状数组
- HDU2838 Cow Sorting (树状数组)
- HDU2838 Cow Sorting【树状数组】【逆序数】
- HDU2838 Cow Sorting 树状数组 区间求和加逆序数的应用
- hdu2838 Cow Sorting
- hdu2838 cow sorting
- Cow Sorting (树状数组)
- hdu2838——Cow Sorting
- hdu2838之树状数组
- HDU2838-简单树状数组
- HDU2838 Cow Sorting (逆序数+求和)
- HDU 2838 cow sorting 树状数组
- hdu 2838 Cow Sorting(树状数组)
- hdu 2838 Cow Sorting(树状数组)
- hdu 2838 Cow Sorting (树状数组)
- MFC关于消息的经典问题
- ajax入门
- Chmod命令
- Activity取消注册InputChannel(十二)
- 对话框中的LISTCTRL不能显示CHECKBOX
- hdu2838 Cow Sorting 树状数组
- win10 wifi 时断时续 无internet 安全 解决办法
- PHP 易错知识点整理
- BZOJ1004: [HNOI2008]Cards
- JS中的双向数据绑定及Object.defineProperty方法
- Java基础语法--对变量&运算符的理解
- 解读SAP HANA轻量级应用服务器——XS引擎
- sndPlaySound函数播放声音求指点
- Unity A*算法实现