56 条题解
-
0talent123 LV 9 @ 2009-11-14 23:58:21
通过这道题,练习了所有我会的非n^2性的排序:快速排序,二叉树排序,希尔排序,归并排序和桶排序,5种排序,5次提交,5次满分,AC率下降一格...
思路很简单,将两个数组排序,排序后,一个数组从头开始,另一个数组从尾开始,
两两做差,得到cha[]数组,再从cha[]的两头向中间,取较大的值,累加到sum中
在程序中sum我用了double型,因为double的有效精度是最大的。
在我提交的几个程序中,只有桶排是...0m...^_^...AC下面,贴一下我的几个程序(主程序基本一样,只有排序方法不同):
(大家互相学习,但不要抄袭)
我的QQ:865363864
有编程爱好者想共同学习的与我联系快排法:
#include
long a1[100000],a2[100000],cha[100000],number,k;
double sum=0;
long partition(long going[],long from,long to)
{
long i=from,j=to;
long temp=going[i];
while(i -
02009-10-03 02:02:27@
可以证明:
可以将选到的A序列中的数分为两个集合c,d,其中c中的元素=对应的b,且集合内要么是极大的|c|个数,要么是极小的|d|个数。
然后考虑枚举c的大小i,然后用b中极大的i个数和-a众极小的i个数和+a中极大的k-i个数和-b中极小的k-i个数和。这样做有可能会枚举的b中极大的 -
02009-10-02 17:43:05@
怎么这么快!
-
02009-10-02 15:45:53@
占位
顺便orz -
02009-10-02 15:36:26@
家具?
-
02009-10-02 15:11:21@
踩场……
-
-12009-10-03 15:34:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 88ms
├ 测试数据 07:答案正确... 119ms
├ 测试数据 08:答案正确... 103ms
├ 测试数据 09:答案正确... 119ms
├ 测试数据 10:答案正确... 119ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:548ms这是我比赛以来第一次AC的程序
庆祝一下...虽然时间上有点牵强.. -
-12009-10-03 14:01:50@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 9ms
├ 测试数据 08:答案正确... 25ms
├ 测试数据 09:答案正确... 9ms
├ 测试数据 10:答案正确... 9ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:52ms比赛中第一次得满分的程序,值得庆祝;
题目比较水,就看细心了:
快排+几个判断;
两列数,每次挑其中一列中最大的,和另一列中最小的,在处理一下就AC了。 -
-12009-10-03 13:02:26@
怎么比赛时能秒杀,同一个程序,现在变这样了:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 119ms
├ 测试数据 07:答案正确... 103ms
├ 测试数据 08:答案正确... 134ms
├ 测试数据 09:答案正确... 119ms
├ 测试数据 10:答案正确... 119ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:594ms
qsort*2
数组加倍(对应前一半的相反数)
1..k一个循环比较,输出最大
AC^^^^^^! -
-12009-10-03 10:22:47@
刚开始我用C++语言,然后就如下
├ 测试数据 06:答案正确... 962ms
├ 测试数据 07:答案正确... 931ms
├ 测试数据 08:答案正确... 962ms
├ 测试数据 09:答案正确... 962ms
├ 测试数据 10:答案正确... 978ms
很勉强的锅了!
接着我看着这么不争气的程序,心有不甘就换成了C语言的输入输出!于是乎:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 87ms
├ 测试数据 07:答案正确... 103ms
├ 测试数据 08:答案正确... 118ms
├ 测试数据 09:答案正确... 103ms
├ 测试数据 10:答案正确... 103ms
---|---|---|---|---|---|---|---|-
C语言和C++语言差别就那么大么,
到时去考复赛用什么语言好啊!
难道叫我报C++语言,C语言的输入输出,天啊!
我该怎么做啊! -
-12009-10-03 10:20:36@
巨简单
用l和r记录左边右边分别到哪里了。。一个一个取的去就可以了 -
-12009-10-03 09:53:36@
为什么我后面五个都输出0啊
-
-12009-10-03 09:46:40@
= =贪心贪错了,我巨菜
-
-12009-10-03 09:45:34@
估计这道题目的通过率不会低于75%
-
-12009-10-03 09:44:19@
贪就行了!
---|---|---|---|---|---|---|---|---|---|--
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 9ms
├ 测试数据 08:答案正确... 9ms
├ 测试数据 09:答案正确... 9ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:27msvar z1,z2,t,i,n,k,j:longint;a,b:array[0..100001]of longint;
count:int64;
procedure qsort2(l,r:longint);
var i,j,x,t:longint;
begin
i:=l;j:=r;
x:=b[(i+j) shr 1 ];
repeat
while b[i]>x do inc(i);
while b[j] -
-12009-10-03 09:37:26@
水题
贪心我觉得除了【队一的头,队二的尾】,【队二的头,队一的尾】,还需要【队一的头,队二的头】,【队一的尾,队二的尾】比较...