1029 False coin

来源:互联网 发布:七年级网络阅卷 编辑:程序博客网 时间:2024/05/03 07:41

wa了n次,枚举哪个硬币是不同的,带入条件验证是否有矛盾

要注意:

对于>和<,没有出现在两边的肯定是真的

对于=,出现在两边的肯定是真的

  1. //3463503_AC_32MS_292K
  2. #include<iostream>
  3. #include<string>
  4. #include<sstream>
  5. using namespace std;
  6. #define MAXN 100
  7. struct Node
  8. {
  9.     bool a[MAXN],b[MAXN];
  10. };
  11. int i,j,n,k,t,pi,m,test,ans;
  12. string s;
  13. char c;
  14. Node wit[MAXN];
  15. bool use[MAXN];
  16. bool temp[MAXN];
  17. int fit(int x)
  18. {
  19.     int i,ret=0;
  20.     for (i=0;i<m;++i)
  21.     {
  22.         if (!(wit[i].a[x]&&!wit[i].b[x]))
  23.         {
  24.             break;
  25.         }
  26.     }
  27.     if (i==m)
  28.     {
  29.         ret++;
  30.     }
  31.     for (i=0;i<m;++i)
  32.     {
  33.         if (!(wit[i].b[x]&&!wit[i].a[x]))
  34.         {
  35.             break;
  36.         }
  37.     }
  38.     if (i==m)
  39.     {
  40.         ret++;
  41.     }
  42.     return ret;
  43. }
  44. int main()
  45. {
  46.     //freopen("d:/in.txt","r",stdin);
  47.     test=0;
  48.     while (cin>>n>>k&&!(n==0&&k==0))
  49.     {
  50.         test++;
  51.         memset(use,true,n);
  52.         m=0;
  53.         for (i=0;i<k;++i)
  54.         {
  55.             getchar();
  56.             getline(cin,s);
  57.             stringstream ss(s);
  58.             ss>>pi;
  59.             cin>>c;
  60.             switch (c)
  61.             {
  62.             case '=':
  63.                 for (j=0;j<pi*2;++j)
  64.                 {
  65.                     ss>>t;
  66.                     use[t-1]=false;
  67.                 }
  68.                 break;
  69.             case '<':
  70.                 memset(temp,false,n);
  71.                 memset(wit[m].a,false,n);
  72.                 memset(wit[m].b,false,n);
  73.                 for (j=0;j<pi;++j)
  74.                 {
  75.                     ss>>t;
  76.                     wit[m].a[t-1]=true;
  77.                     temp[t-1]=true;
  78.                 }
  79.                 for (j=0;j<pi;++j)
  80.                 {
  81.                     ss>>t;
  82.                     wit[m].b[t-1]=true;
  83.                     temp[t-1]=true;
  84.                 }
  85.                 m++;
  86.                 for (j=0;j<n;++j)
  87.                 {
  88.                     if (!temp[j])
  89.                     {
  90.                         use[j]=false;
  91.                     }
  92.                 }
  93.                 break;
  94.             case '>':
  95.                 memset(temp,false,n);
  96.                 memset(wit[m].a,false,n);
  97.                 memset(wit[m].b,false,n);
  98.                 for (j=0;j<pi;++j)
  99.                 {
  100.                     ss>>t;
  101.                     wit[m].b[t-1]=true;
  102.                     temp[t-1]=true;
  103.                 }
  104.                 for (j=0;j<pi;++j)
  105.                 {
  106.                     ss>>t;
  107.                     wit[m].a[t-1]=true;
  108.                     temp[t-1]=true;
  109.                 }
  110.                 m++;
  111.                 for (j=0;j<n;++j)
  112.                 {
  113.                     if (!temp[j])
  114.                     {
  115.                         use[j]=false;
  116.                     }
  117.                 }
  118.                 break;
  119.             }
  120.         }
  121.         ans=-1;
  122.         for (i=0;i<n;++i)
  123.         {
  124.             if (use[i])
  125.             {
  126.                 if (fit(i)!=0)
  127.                 {
  128.                     if (ans!=-1)
  129.                     {
  130.                         ans=-1;
  131.                         break;
  132.                     }
  133.                     else
  134.                     {
  135.                         ans=i;
  136.                     }
  137.                 }
  138.             }
  139.         }
  140.         cout<<ans+1<<endl;
  141.     }
  142.     return 0;
  143. }
原创粉丝点击