题解

32 条题解

  • 3
    @ 2014-02-06 19:34:18

    发题解喽!这次总算打败了HHD大神(之前输了N次),心情很好。
    一道水题,注意细节。因为刚转C++,各种都不太会,连快排的Cmp都不会写(只好一个选排充数),而且刚才double的读入也是他教我的。。
    说一下思路。
    读取后对a,b排序,然后我是对m个a,b的限制进行循环的,每次发现当前time距离a[k]大于等于1时停止并传CS。
    每次传是min(k,ans) //只有k条数据线,也只有ans个电脑已经复制成功。(ans来保存成功复制的电脑数)

    BY JSB 绍兴一中万岁!
    #include<stdio.h>
    using namespace std;
    double a[1001],b[1001],time,last;
    long n,p,m,k,i,ans,t;
    bool go;
    void paixu()
    {
    long i,j;
    double t;
    for (i=1;i<m;i++)
    for (j=i+1;j<=m;j++)
    if ((a[i]>a[j])||(a[i]==a[j])&&(b[i]>b[j]))
    {
    t=a[i];a[i]=a[j];a[j]=t;
    t=b[i];b[i]=b[j];b[j]=t;
    }
    }
    long min(long x,long y)
    {
    if (x<y) return x;
    return y;
    }
    int main()
    {
    scanf("%ld %ld %ld",&n,&p,&m);
    for (i=1;i<=m;i++)
    {
    scanf("%lf%lf",&a[i],&b[i]);
    b[i]+=a[i];
    }
    paixu();
    ans=1;time=0;k=1;go=false;
    while (ans<n)
    {
    while ((a[k]-time<1)&&(k<=m))
    {
    if (b[k]>time) time=b[k];
    k++;
    }
    if (k>m)
    {
    go=true;
    break;
    }
    t=long(a[k]-time);
    while (t>0)
    {
    time=time+1;
    ans+=min(p,ans);
    t--;
    if (ans>n) break;
    }
    if (ans>n) break;
    }
    if (go)
    {
    while (ans<n)
    {
    time=time+1;
    ans+=min(p,ans);
    }
    }
    printf("%.2f",time);
    return 0;
    }
    蒋仕彪友情提供

  • 1
    @ 2014-02-06 20:11:26

    一共交了11次,其中9次WA,1次忘了去掉最后的for(;;);TLE,最后A了。我是通过判断该时间可以连多少机子,再与N比较的。但是后来时间大了LONG LONG就爆了,后来就改成N-NOW要多少时间了。顺便瞻仰下JSB大神!

  • 1
    @ 2014-02-06 19:55:58

    WA了7次,放弃治疗了,顺便前排跪JSB大牛

  • 1
    @ 2013-12-23 21:26:58

    var
    t,c:real;
    n,k,m,l,d:qword;
    i,j:longint;
    a,b:array[0..100000] of double;
    begin
    readln(n,k,m);
    for i:=1 to m do
    read(a[i],b[i]);
    for i:=1 to m-1 do
    for j:=m downto i+1 do
    if a[j-1]>a[j]
    then begin
    a[0]:=a[j-1];b[0]:=b[j-1];
    a[j-1]:=a[j];b[j-1]:=b[j];
    a[j]:=a[0];b[j]:=b[0];
    end;
    t:=0;i:=1;d:=0;l:=1;a[0]:=0;b[0]:=0;
    a[m+1]:=maxlongint*maxlongint;
    repeat
    while a[i]+b[i]<=t do inc(i);
    if a[i]>=t+1
    then begin
    if l<k then l:=l+l else l:=l+k;
    t:=t+1;
    end
    else begin
    t:=a[i]+b[i];
    inc(i);
    end;
    until l>=n;
    writeln(t:0:2);
    end.
    第50道AC庆祝一下(¯﹃¯)
    代码送上 double轻轻虐过 水题无误

  • 0
    @ 2016-12-28 22:11:21

    #include<cstdio>
    #include <algorithm>
    using namespace std;
    struct node
    {
    double x,y;
    }a[10050];
    int cmp(node a,node b)
    {
    return a.x<b.x;
    }
    int main()
    {
    int n,k,m,h,t=1,i,j;
    double now=0;
    scanf("%d%d%d",&n,&k,&m);
    for(i=1;i<=m;i++)
    scanf("%lf%lf",&a[i].x,&a[i].y);
    sort(a+1,a+m+1,cmp);
    for(i=1;i<=m;i++)
    {if(now>a[i].x+a[i].y) continue;
    h=(int)(a[i].x-now);
    for(j=1;j<=h;j++)
    {if(t>=n)
    {printf("%.2lf",now);
    return 0;
    }
    if(t<=k) t=t*2;
    else t=t+k;
    now++;
    }
    if(t<n)now=(a[i].x+a[i].y);
    }
    while(1)
    { if(t>=n)
    {printf("%.2lf",now);
    return 0;
    }
    if(t<=k) t=t*2;
    else t=t+k;
    now++;
    }
    return 0;
    }

    为什么最后一个点过不了??

  • 0
    @ 2009-11-07 16:15:48

    排序,判断重复,很简单

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-10-15 16:36:50

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    Puppy大神給我9ms...

  • 0
    @ 2009-08-29 18:07:51

    3次WA后...终于AC..

  • 0
    @ 2009-08-20 19:25:57

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    注意细节。

    我是这样处理重叠的:

    y[1,1]:=a[1,1];y[1,2]:=a[1,2];

    u:=1;

    for i:=2 to m do

    if a

  • 0
    @ 2009-06-01 14:38:27

    尽管验证码是AC3Q (ac thank you)结果还是不妙啊……

  • 0
    @ 2009-05-23 12:00:42

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    快排+去重,先算出总时间再去搜索。

  • 0
    @ 2009-01-13 19:32:04

    关键有2点

    1时间的排序

    2对重叠时间段的处理

  • 0
    @ 2008-12-14 10:50:54

    .....

  • 0
    @ 2008-10-07 22:22:30

    编译通过...

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

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

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

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

    ├ 测试数据 5:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 6:答案错误... ├ 标准行输出

     ├ 错误行输出

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

    ├ 测试数据 8:答案错误... ├ 标准行输出

     ├ 错误行输出

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

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

    Unaccepted 有效得分:6 有效耗时:ms

    靠,,怎么WA了四个...

    我排了序,考虑了重叠,还开了extended...

  • 0
    @ 2008-10-07 18:10:20

    编译通过...

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

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

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

    ├ 测试数据 04:运行时错误...| 错误号: 207 | 无效浮点运算

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

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

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

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

    ├ 测试数据 09:运行时错误...| 错误号: 207 | 无效浮点运算

    ├ 测试数据 10:运行时错误...| 错误号: 207 | 无效浮点运算

    哪位大牛教教我怎么回事?

  • 0
    @ 2008-09-27 13:08:15

    哪位大牛能将你们过了的程序发给我一下???

    398619217@qq.com

    谢谢

  • 0
    @ 2008-09-21 07:15:58

    注意一个问题,就是第十组数据似乎m大于了10^3,我一开始TLE,后来改大数组就KO了.....

  • 0
    @ 2008-08-26 10:38:00

    第150题

    纪念一下

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-08-22 17:54:23

    用double就行了啊

  • 0
    @ 2008-08-21 22:57:14

    额,局域网都关了,怎么玩CS?PDBOT?

信息

ID
1401
难度
7
分类
模拟 点击显示
标签
(无)
递交数
561
已通过
121
通过率
22%
被复制
2
上传者