题解

115 条题解

  • 0
    @ 2009-11-07 17:00:50

    3888个提交的。。。RP要增加啦 哈哈!!!

  • 0
    @ 2009-10-25 13:33:05

    交了6次,5次10分...

    10分的注意了!八成没判断n=2的情况

    还有这题的hint是很重要的!!!

    PS:底下的有程序的题解基本都是错的!!!

  • 0
    @ 2009-10-25 08:39:35

    感谢lgxcgd的题解

  • 0
    @ 2009-10-20 09:23:59

    很让人无语的题目。。

    如Devil【Law】所说:“难度不高但是很烦很烦的题 ”

    感谢notblack的题解。

    感谢victorygod的BT数据。

    感谢huangyuan的提醒。

    鄙人整理众人之言的题解:http://254117343.blog.163.com/

  • 0
    @ 2009-10-15 18:25:07

    提示是错误的:197和201是反例.1出现了2次

  • 0
    @ 2009-09-20 12:50:18

    事实证明。。[red]所谓的AC程序[/red]是错的。。

    比如这个数据

    7

    9 0 0 0 0 0 0

    显然正确答案为900000

    而[red]所谓的AC程序[/red]得的解却是-900

    无语了

    • @ 2013-09-22 21:34:17

      可题目里不是写了 每个数字只出现一次

  • 0
    @ 2009-09-19 19:47:22

    楼下有好多AC程序是错的!!

  • 0
    @ 2009-09-18 16:41:16

    见notblack题解 写的比我想的还详细 n=1我都没判.......

    另:数组一定要大点开......我交了2遍.......

  • 0
    @ 2009-09-17 22:58:57

    n为1时直接打印

    n为2并且有0时:1个0就输出另外的数,2个0输出0

    奇数:不能mod 2,直接做

    偶数:非0要mod 2,如果是0,看其它数有没有重复的,没有就不能mod,有就要mod

    然后就是小的从大到小,大的从小到大

    很多次10分后一下子AC...

  • 0
    @ 2009-09-17 21:39:36

    贪心算法其实是错误的,但能AC此题,故此题数据极弱

  • 0
    @ 2009-09-08 19:04:02

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    好题,好题!

    考验编程能力的,编死我了,1小时交3次AC!

    记得要在 两两差最小 且有相同情况可以取最小的时候,要枚举每组情况,

    否则光靠贪心是AC不掉的。

  • 0
    @ 2009-08-31 13:17:35

    时隔半年,终于下决心A掉它了。

    开一个0..9的布尔数组,读入一个数就f[t]:=not f[t];

    这样偶数次的就相当于没有出现。

    N=2的时候,显然。。。

    N>2时;

    (1) 奇数,选一个非0最小数放首位

    剩余的从小到大排序(如果是像上面说的开布尔数组就直接从左往右扫描)

    (前面一半)-(后面一半的逆序)

    例 1 0 2 5 4 3 6 ->> 0123456 ->> 1xxx-xxx

    ->> (023456) ->> (023)【(456)逆序】 ->> (023)(654) ->> 1023-654

    (2) 偶数,还是先处理首位,但是偶数要枚举所有情况。

    剩余的同奇数一样,排序然后(前面一半)-(后面一半的逆序)。

    取所有情况最小的。

    例 0 2 3 4 ->>

    3x - 2x ->> 30 - 24 -->min

    4x - 2x ->> 40 - 23

    4x - 3x ->> 40 - 32

    两种情况构造剩余数字中最小差的函数可以通用。

    function getmin:longint;

    var i,t1,t2:longint; s1,s2:string;

    begin

    s1:=''; s2:='';

    for i:=0 to 9 do

    if f[i] then

    begin

    s1:=s1+chr(ord('0')+i); s2:=chr(ord('0')+i)+s2;

    end;

    val(copy(s1,1,length(s1) div 2),t1);

    val(copy(s2,1,length(s2) div 2),t2);

    exit(t1-t2);

    end;

    PS:没有N=1...

  • 0
    @ 2009-08-21 23:31:51

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案错误...程序输出比正确答案长

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案错误...程序输出比正确答案长

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:80 有效耗时:0ms

    为什么???

    难道如楼下所说要判断n=1????

    牛们,能告诉我n=1时该输出什么吗?

  • 0
    @ 2009-08-21 21:28:37

    分4类

    N=1

    N=2

    (N>2) AND (N MOD 2=0)

    (N>2) AND (N MOD 2=1)

    95行

  • 0
    @ 2009-08-21 19:17:54

    有相同数字吗?貌似没有啊。

  • 0
    @ 2009-08-21 18:06:35

    80分.....

  • 0
    @ 2009-08-19 18:45:22

    郁闷,这题到底有没有问题,又说测试数据错了,又说有相同的数,晕,怎么又遇到这题了?

  • 0
    @ 2009-08-18 13:10:42

    两句话打反 调了一早上

    注意:

    1.考虑0不能在首位,但不要考虑多个零的情况

    2.数字会有相同的

    如果 n 为偶数 那么 相同的可以消掉

    如果 n 为奇数 那么 相同的不能消掉

    3.注意细节

    4.本题除了数会有重复外,测试数据没有问题

    看看下面的数据能不能过

    5

    1 2 2 2 7 答案是 50

    10

    0 1 2 3 4 5 6 7 8 9 答案是 247

    明明AC了 怎么状态里是编译不成功 -_-

    Flag   Accepted

    题号   P1039

    记录编号 Flag 得分 记录信息 环境 评测机 程序提交时间

    R1445405 No Compiled 0 From 陈亮宇-

     P1039 FPC Vivid Puppy 2009-8-18 13:05:14

  • 0
    @ 2009-08-14 21:24:26

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    分奇偶的确有点烦 写了120+ 由于马虎害的我浪费了1个小时

  • 0
    @ 2009-08-12 11:02:34

    正如本题的友情提示:输入的数目如果是偶数个可以抵消,奇数个只算一个!

    先用这步进行优化,然后排序(其实不算排序了,直接利用上一步优化后的0..9该读的读入好了,读入的个数总数即为t),再拿出t=0,1,2进行特殊处理,最后分两种情况分析:

    1)奇数个:取前面的t div 2+1个数,正序做为被减数;取后面的t div 2个数,逆序作为减数

    2)偶数个:先一遍比较过去,记录下a-a[i]的最小值;再一遍比较过去,如果a-a[i]=最小值进行特殊处理:

    取出这两个数,将剩下的数重新组成一个数组,取前(t-2) div 2个数作为a的后面部分(正序),此数为被减数;取后(t-2) div 2作为a[i]的后面部分(逆序),此数为减数

    最后,我们就得到了ans(可以在上面过程中直接算出来输出)

    刚好100行.....

    好长啊,郁闷.....

信息

ID
1039
难度
7
分类
贪心 点击显示
标签
(无)
递交数
3685
已通过
825
通过率
22%
被复制
11
上传者