题解

191 条题解

  • 0
    @ 2008-12-01 21:21:17

    第1200个ac,50题庆祝!!!

  • 0
    @ 2008-11-11 19:06:16

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    终于做对了啊啊啊啊~

  • 0
    @ 2008-11-10 22:58:13

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    回复luyifan

    n div 2 downto 0 do

    只是为了省时间

    用n downto 0 do 也可以,只不过f[i](i>n div 2)的就全部白算了,(因为题目说过只要用一半啦)

    40*j (因为选了j个数字,f[j][k]表示随便选j个数字是否能和成数值为k,不是前j个的和啊,我当时这里没搞清楚,弱……)

  • 0
    @ 2008-11-10 17:34:25

    感谢楼下强大的提示

  • 0
    @ 2008-11-06 15:41:48

    #include

    #include

    #include

    #include

    #define maxn 200

    #define INF 2000000000

    long n,blood[maxn+10];

    int main()

    {

    long i,ans_one,ans_two,ans,here,tmp;

    long which,lim[2],number[2],quantity[2];

    scanf("%ld",&n);

    for(i=1;i

  • 0
    @ 2008-11-06 13:46:56

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    没用dp,利用单调性

    //P1153

    #include

    #include

    #define ABS(ttt) ((ttt)>0?(ttt):-(ttt))

    int n,b[201],tot=0,arv,x[101],y[101],xt=0,yt=0;

    int isok(int xn,int yn)

    {

    if(ABS(xt-x[xn]+y[yn]-arv)

  • 0
    @ 2008-11-03 19:41:09

    编译通过...

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

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

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

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

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

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

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

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

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

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

    挖哈哈哈哈哈哈哈哈哈哈哈哈,随机的

  • 0
    @ 2008-11-02 09:44:45

    编译通过...

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

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

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

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

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

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

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

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

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

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

    DP才是王道 用f 开boolean

    i表示多少个兵

    j表示能达到的血的量

    然后尽量减少循环数

  • 0
    @ 2008-10-29 09:19:17

    我随机200000次超时

    随机50000次 AC

  • 0
    @ 2008-10-28 22:09:32

    program p1153;

    var i,j,k,n,m,ans:longint;

    a,s:array[0..201]of longint;

    f:array[0..101,-50..8000]of boolean;

    begin

    readln(n);

    for i:=1 to n do

    begin

    read(a[i]);

    s[i]:=s+a[i];

    end;

    m:=n div 2;

    f[0,0]:=true;

    for i:=1 to n do

    for j:=m downto 1 do

    for k:=40*j downto 0 do f[j,k]:=f[j,k] or f[j-1,k-a[i]];

    ans:=20082008;

    i:=0;j:=0;

    for k:=0 to s[n] do

    if f[m,k] and (abs(s[n]-2*k)

  • 0
    @ 2008-10-28 22:02:25

    假,我大大的囧..

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-10-28 22:05:56

    赞同cx24(已经过程序验证)

    7eleven的算法显然有后效性

    只能算是无敌贪心(话说这数据也太水了)

  • 0
    @ 2008-10-28 21:55:20

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

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

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

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

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

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

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

    ├ 测试数据 08:运行超时...

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

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

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

    Unaccepted 有效得分:90 有效耗时:791ms

    我囧...

  • 0
    @ 2008-10-28 17:45:54

    7eleven的算法是错的,反例在此

    101 40 0 8

    20 120 2 2

    单个交换无法使和差距变小

    但是0、8和2、2同时交换的话,和会变小

  • 0
    @ 2008-10-27 09:15:40

    用广度扩展过了。。。

    8000*200*100 +点优化

    program p1153;

    var

    re:array[1..2000] of longint;

    b:array[0..8000,0..200] of BOOLEAN;

    SP:ARRAY[0..8000,0..200] OF LONGINT;

    i, j, k, l, m, n, sum :longint;

    x, y, ans :longint;

    begin

    readln(n);

    for i:=1 to n do

    begin

    readln(re[i]);

    inc(sum,re[i]);

    end;

    b[0,0]:=TRUE; ans:=maxlongint;

    sp[0,0]:=1; sp[0,1]:=0;

    for i:=1 to n do

    for j:=sum-re[i] downto 0 do

    FOR K:=1 TO SP[J,0] DO

    if b[j,SP[J,K]] and (sp[j,k]

  • 0
    @ 2008-10-22 23:17:43

    编译通过...

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

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

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

     ├ 错误行输出 358 3..

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

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

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

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

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

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

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

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

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

    program p1153;

    var

    n,i:1..201;

    a:array[1..201]of 0..40;

    z,y,x:integer;

    l,r,p,q:0..102;

    procedure wxd;

    begin

    if (zy or y>z x:=xiao}

    if x=y then begin y:=y+a[i];inc(p);end

    else begin z:=z+a[i];inc(q);end;

    end;

    if z-y>0 then writeln(y,' ',z)

    else writeln(z,' ',y);

    end.

    哪位大牛能告诉我哪错了 怎么修改啊??

  • 0
    @ 2008-10-22 17:31:24

    why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??why??

    要 N DIV 2 DOWNTO 0 DO

    AND

    40*J DOWNTO 0 DO

  • 0
    @ 2008-10-19 21:08:29

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    穷举题。

  • 0
    @ 2009-05-16 15:18:12

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    楼上的是什么办法,能0MS过。。。。。。。。。。。

  • 0
    @ 2008-10-17 20:14:51

    编译通过...

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

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

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

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

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

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

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

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

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

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

    Accepted 有效得分:1 有效耗时:ms

    7eleven太吊了...真是经典的算法...

    f:=true;

    while f do

    begin

    f:=false;

    for i:=1 to l1 do

    for j:=1 to l2 do

    begin

    p:=sum1-a[i]+b[j];

    q:=sum2+a[i]-b[j];

    if abs(p-q)

信息

ID
1153
难度
7
分类
动态规划 | 背包 点击显示
标签
递交数
4721
已通过
1027
通过率
22%
被复制
6
上传者