zoukankan      html  css  js  c++  java
  • bzoj 1028 暴力枚举判断

    昨天梦到这道题了,所以一定要A掉(其实梦到了3道,有两道记不清了)

    暴力枚举等的是哪张牌,将是哪张牌,然后贪心的判断就行了。

    对于一个状态判断是否为胡牌,1-n扫一遍,然后对于每个牌,先mod 3,

    如果还有剩余,就需要和i+1,i+2凑成顺子,减掉i+1,i+2的值就行了,然后

    只要枚举到的i为负就是不可行,还有要枚举到n+2位,因为第n,n-1为可能

    减了n+1,n+2但是没扫到。

    /**************************************************************
        Problem: 1028
        User: BLADEVIL
        Language: Pascal
        Result: Accepted
        Time:1032 ms
        Memory:232 kb
    ****************************************************************/
     
    //By BLADEVIL
    var
        n, m                        :longint;
        count, jud                  :array[0..400] of longint;
        i, j, k                     :longint;
        x                           :longint;
        ans                         :array[0..400] of longint;
         
    function judge:boolean;
    var
        i                           :longint;
    begin
        for i:=1 to n+2 do
        begin
            if jud[i]<0 then exit(false);
            jud[i]:=jud[i] mod 3;
            if jud[i]>0 then
            begin
                dec(jud[i+1],jud[i]);
                dec(jud[i+2],jud[i]);
                jud[i]:=0;
            end;
        end;
        exit(true);
    end;
         
    begin
        read(n,m);
        for i:=1 to 3*m+1 do
        begin
            read(x);
            inc(count[x]);
        end;
        for i:=1 to n do
        begin
            for j:=1 to n do jud[j]:=count[j];
            inc(jud[i]);
            for j:=1 to n do if jud[j]>=2 then
            begin
                dec(jud[j],2);
                if judge then
                begin
                    inc(ans[0]);
                    ans[ans[0]]:=i;
                end;
                if ans[ans[0]]=i then break;
                for k:=1 to n+2 do jud[k]:=count[k];
                inc(jud[i]);
            end;
        end;
        if ans[0]=0 then
        begin
            writeln('NO');
            halt;
        end;
        write(ans[1]);
        for i:=2 to ans[0] do write(' ',ans[i]); writeln;
    end.
  • 相关阅读:
    笨方法学python(本文为阅读时从此书摘录的笔记) 第一天
    关于C++中的虚拟继承的一些总结
    用提高效率的暴力法求3000以内的素数
    DAY 155 python中parse模块
    DAY 154 python自带的hmac模块
    DAY 153 Python中使用pymongo操作mongodb
    DAY 152 hmac模块
    DAY 151 parse模块
    DAY 150 setter&getter&@property
    DAY 149 property和setter装饰器
  • 原文地址:https://www.cnblogs.com/BLADEVIL/p/3500327.html
Copyright © 2011-2022 走看看