zoukankan      html  css  js  c++  java
  • bzoj 1028: [JSOI2007]麻将

    暴力枚举+贪心

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<algorithm>
     6 #include<queue>
     7 #include<map>
     8 #include<cmath>
     9 #define M 100009
    10 #define ll long long
    11 #define Mo 998244353
    12 #define pa pair<int,int>
    13 using namespace std;
    14 ll read()
    15 {
    16     char ch=getchar();
    17     ll x=0,f=1;
    18     for(;ch<'0'||ch>'9';ch=getchar())
    19       if(ch=='-')
    20         f=-1;
    21     for(;ch>='0'&&ch<='9';ch=getchar())
    22       x=x*10+ch-'0';
    23     return x*f;
    24 }
    25 int a[M],shu[M],n,m,ans[M];
    26 bool pan()
    27 {
    28     for(int i=1;i<=n;i++)
    29       a[i]=shu[i];
    30     for(int i=1;i<=n-2;i++)
    31       {
    32         if(a[i]<0)
    33           return 0;
    34         a[i]=a[i]%3;
    35         a[i+1]-=a[i];
    36         a[i+2]-=a[i];
    37       }
    38     if(a[n-1]%3||a[n]%3)
    39       return 0;
    40     return 1;
    41 }
    42 int main()
    43 {
    44     n=read();
    45     m=read();
    46     for(int i=1;i<=3*m+1;i++)
    47       {
    48         int a1=read();
    49         shu[a1]++;
    50       }
    51     for(int i=1;i<=n;i++)
    52       {
    53         shu[i]++;
    54         for(int j=1;j<=n;j++)
    55           {
    56             if(shu[j]<2)
    57               continue;
    58             shu[j]-=2;
    59             if(pan())
    60               {
    61                 ans[++ans[0]]=i;
    62                 shu[j]+=2;
    63                 break;
    64               }
    65             shu[j]+=2;
    66           }
    67         shu[i]--;
    68       }
    69     for(int i=1;i<ans[0];i++)
    70       printf("%d ",ans[i]);
    71     if(!ans[0])
    72       printf("NO
    ");
    73     else
    74       printf("%d
    ",ans[ans[0]]);
    75     return 0;
    76 }
  • 相关阅读:
    IOS多态在项目中的应用
    经济博弈题-逻辑思维-算法-海盗分金币
    iOS weak底层实现原理
    Two Sum
    HTTP与HTTPS的理解
    iOS 加锁的方式
    PHP 打印前一天的时间
    PHP 遍历文件夹下的文件以及子文件夹
    PHP 获取url里文件的扩展名
    vi 编辑器基本命令
  • 原文地址:https://www.cnblogs.com/xiw5/p/5656649.html
Copyright © 2011-2022 走看看