60 条题解
-
3刷题去 LV 10 @ 2017-06-06 17:33:53
归并排序(注意long long)
#include<cstdio> using namespace std; int data[1000003]; int fu[1000003]; long long res = 0; void qsort(int l, int r) { if(l == r) return; int mid = l + (r - l) / 2; qsort(l, mid); qsort(mid + 1, r); int p1 = l, p2 = mid + 1; int p3 = l; while(p1 <= mid || p2 <= r) { if(p1 <= mid && p2 <= r) { if(data[p1] <= data[p2]) fu[p3++] = data[p1++]; else { res += (mid - p1 + 1); fu[p3++] = data[p2++]; } } else if(p1 <= mid && p2 > r) fu[p3++] = data[p1++]; else fu[p3++] = data[p2++]; } for(int i = l; i <= r; i++) data[i] = fu[i]; } int main() { int n; scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &data[i]); qsort(1, n); printf("%lld", res); return 0; }
-
12018-10-04 08:32:51@
好像多了一个数据。。。不应该是 3 1 4 5 2么。。
-
02017-07-27 10:40:24@
树状数组
(说好的正整数呢,数据里好像有Ai==0的情况)#include<cstdio> #ifdef WIN32 # define outl "%I64d" #else # define outl "%lld" #endif using namespace std; typedef long long LL; const int MAXN = 1000005; int n, a[MAXN], c[MAXN]; LL ans; int low_bit(int x){ return x & -x; } void insert(int x){ while(x < 1000000){ c[x]++; x += low_bit(x); } } LL query(int x){ LL res = 0; while(x){ res += c[x]; x -= low_bit(x); } return res; } int main(){ scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = n; i >= 1; i--){ ans += query(a[i]); insert(a[i]+1); } printf(outl, ans); return 0; }
-
02016-09-05 20:15:34@
树状数组
测试数据 #0: Accepted, time = 875 ms, mem = 20376 KiB, score = 20
测试数据 #1: Accepted, time = 78 ms, mem = 20380 KiB, score = 10
测试数据 #2: Accepted, time = 500 ms, mem = 20380 KiB, score = 10
测试数据 #3: Accepted, time = 125 ms, mem = 20380 KiB, score = 10
测试数据 #4: Accepted, time = 593 ms, mem = 20380 KiB, score = 20
测试数据 #5: Accepted, time = 62 ms, mem = 20376 KiB, score = 10
测试数据 #6: Accepted, time = 359 ms, mem = 20380 KiB, score = 20
Accepted, time = 2592 ms, mem = 20380 KiB, score = 100
代码
var n,i,m,q:longint; ans:Int64;
a:array [1..4,0..1000000] of longint;
p:array [0..1000000] of longint;procedure put(x:longint);
var i:longint;
begin
i:=1;
while a[1,i]<>0 do
if x>=a[1,i] then
begin
if a[3,i]=0 then
begin
a[3,i]:=p[m];
inc(m);
end;
inc(a[4,i]);
i:=a[3,i];
end
else
begin
if a[2,i]=0 then
begin
a[2,i]:=p[m];
inc(m);
end;
ans:=ans+a[4,i]+1;
i:=a[2,i];
end;
a[1,i]:=x;
end;begin
read(n);
read(a[1,1]);
for i:=2 to n do
p[i]:=i;
m:=2;
for i:=2 to n do
begin
read(q);
put(q);
end;
write(ans);
end. -
02016-09-03 22:44:10@
U43题解:
pascal
var
i,n:longint;
ans:qword;
a,b:array[0..1000001]of longint;
procedure msort(l,r:longint);
var
i,j,k,mid:longint;
begin
if l>=r then exit;
mid:=(l+r) div 2;
msort(l,mid);
msort(mid+1,r);
i:=l; j:=mid+1; k:=l;
while (i<=mid)or(j<=r) do begin//数还没有插完
if (i<=mid) and ((j>r)or(a[i]<=a[j])) then begin//插第i个数
b[k]:=a[i];
inc(i);
ans:=ans+j-mid-1;//逆序对个数
end
else begin
b[k]:=a[j];
inc(j);
end;
inc(k);
end;
for i:=l to r do a[i]:=b[i];
end;
begin
read(n);
for i:=1 to n do read(a[i]);
ans:=0;
msort(1,n);
write(ans);
end.
-
02015-01-25 13:13:17@
树状数组的童鞋不要忘了插入0的情况...
-
02014-12-15 14:46:56@
晕死,要用%I64d,树状数组卡时卡得厉害,连memset都要省略掉。注意数据里ai有相同的,没考虑会坑死!
-
02012-11-17 12:16:12@
擦咧,%lld输出long long居然出错?改成cout就AC了……
-
02012-11-08 14:57:21@
只会Mergesort哈哈
-
02012-09-10 09:15:36@
友情提示:用sbt有两个点超时
-
02010-07-06 21:12:50@
编译通过...
├ 测试数据 01:答案正确... 961ms
├ 测试数据 02:答案正确... 25ms
├ 测试数据 03:答案正确... 555ms
├ 测试数据 04:答案正确... 118ms
├ 测试数据 05:答案正确... 649ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 493ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2801ms答案最后是Int64范围内的
数据是否带0有待考证我的时间好慢啊...写次了...
树状数组
-
02009-11-11 17:29:35@
……水题还要交3次……
1st:数组开成了100000的(比题目少个0)
2nd:答案用成了longint(it ought to be int64)
3rd:finall AC…… -
02009-11-09 23:00:55@
树状数组轻松解决…………
太无耻了。题目明明说Ai是正整数啊~数据里偏偏带0
害我白交2次 -
02009-11-04 22:18:52@
编译通过...
├ 测试数据 01:答案正确... 400ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 275ms
├ 测试数据 04:答案正确... 9ms
├ 测试数据 05:答案正确... 275ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 119ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1078ms越来越喜欢用指针了。。。。
因为在自己机器上调试的时候将ans设成longint,忘了改成int64,竟然害我莫名其妙的挂了三次,不仅浪费了时间,还有我宝贵的AC率。。。。!!!!
经典的merge_sort!! -
02009-11-02 09:09:29@
program ll;
type
atype=array[1..1000000] of longint;
var
i,n,k:longint;
a,b:atype;
function sorting(lo,hi:longint):qword;
var
mid,i,j:longint;
c:qword;
begin
c:=0;
if lo -
02009-10-30 22:56:51@
int64啊
-
02009-10-27 16:06:55@
编译通过...
├ 测试数据 01:答案正确... 774ms
├ 测试数据 02:答案正确... 25ms
├ 测试数据 03:答案正确... 399ms
├ 测试数据 04:答案正确... 87ms
├ 测试数据 05:答案正确... 602ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 352ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2239ms
米有秒杀! -
02009-10-27 13:23:56@
sunny 是弱蛋啊弱蛋~~~
-
02009-10-14 22:34:59@
编译通过...
├ 测试数据 01:答案正确... 369ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 150ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 244ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 134ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:897msorz..
我爱 merge sort.. -
02009-10-12 21:48:35@
编译通过...
├ 测试数据 01:答案正确... 338ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 166ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 259ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 119msorz
我爱puppy。。。。。
信息
- ID
- 1535
- 难度
- 7
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2098
- 已通过
- 344
- 通过率
- 16%
- 被复制
- 2
- 上传者