zoukankan      html  css  js  c++  java
  • HDU 6342.Problem K. Expression in Memories-模拟-巴科斯范式填充 (2018 Multi-University Training Contest 4 1011)

    6342.Problem K. Expression in Memories

    这个题就是把?变成其他的使得多项式成立并且没有前导零

    官方题解:

    没意思,好想咸鱼,直接贴一篇别人的博客,写的很好,比我的垃圾好多了。。。

    HDU 6342(模拟)

     

    贴一下一个队友的代码:

      1 //1011-6342-模拟
      2 #include<iostream>
      3 #include<cstdio>
      4 #include<cstring>
      5 #include<algorithm>
      6 #include<bitset>
      7 #include<cassert>
      8 #include<cctype>
      9 #include<cmath>
     10 #include<cstdlib>
     11 #include<ctime>
     12 #include<deque>
     13 #include<iomanip>
     14 #include<list>
     15 #include<map>
     16 #include<queue>
     17 #include<set>
     18 #include<stack>
     19 #include<vector>
     20 using namespace std;
     21 typedef long long ll;
     22 
     23 const double PI=acos(-1.0);
     24 const double eps=1e-6;
     25 const ll mod=1e9+7;
     26 const int inf=0x3f3f3f3f;
     27 const int maxn=1e5+10;
     28 #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
     29 
     30 int a[maxn];
     31 char c[maxn];
     32 
     33 int main()
     34 {
     35     int t;
     36     scanf("%d",&t);
     37     while(t--){
     38         int flag=0;
     39         scanf("%s",c+1);
     40         int n=strlen(c+1);
     41         for(int i=1;i<=n;i++){
     42             if(c[i]>='0'&&c[i]<='9')
     43                 a[i]=1;
     44             else if(c[i]=='?')
     45                 a[i]=1;
     46             else
     47                 a[i]=0;
     48             if(i!=1){
     49                 if(a[i]==0&&a[i-1]==0){//++
     50                     flag=1;
     51                     break;
     52                 }
     53             }
     54         }
     55         if(c[1]=='0'&&a[2]==1&&n>1){//01
     56             if(c[2]=='?'){
     57                 if(n>2&&a[3]==1)
     58                     c[2]='+',a[2]=0;
     59                 else
     60                     flag=1;
     61             }
     62             else
     63                 flag=1;
     64         }
     65         if(a[n]==0||a[1]==0)//1+ +1
     66             flag=1;
     67         for(int i=1;i<=n;i++){
     68             if(a[i-1]==0&&c[i]=='0'&&a[i+1]==1&&i>1&&i<n){
     69                 if(c[i+1]!='?'){//01
     70                     flag=1;
     71                     break;
     72                 }
     73                 else if(c[i+1]=='?'&&i+1>=n){//0?
     74                     flag=1;
     75                     break;
     76                 }
     77             }
     78             if(a[i-1]==0&&c[i]=='0'&&c[i+1]=='?'&&i>1&&i+1<n){
     79                 if(a[i+2]==1){//0?0
     80                     c[i+1]='+';
     81                     a[i+1]=0;
     82                 }
     83                 else{//0?+
     84                     flag=1;
     85                     break;
     86                 }
     87             }
     88         }
     89         if(flag)
     90             printf("IMPOSSIBLE
    ");
     91         else{
     92             for(int i=1;i<=n;i++){
     93                 if(c[i]=='?')
     94                     c[i]='1';
     95                 printf("%c",c[i]);
     96             }
     97             cout<<endl;
     98         }
     99     }
    100 }

     

    我发现我的模拟题都写得相当垃圾。。。

    垃圾滚了。。。

  • 相关阅读:
    In Java, how do I read/convert an InputStream to a String? Stack Overflow
    IFrame自动更改大小
    [置顶] 获取服务器上格式为JSON和XML两种格式的信息的小程序
    Qt VS MFC
    [技术分享]使用 UAG 发布 RemoteAPP
    linux2.6.32在mini2440开发板上移植(11)之配置USB外设
    MFC控件(2):Text_Edit_Control
    CentOS 6.4 安装 Oracle 10g2 备记
    sql lite 二个数据库之间的表进行复制
    变量和函数的定义和声明
  • 原文地址:https://www.cnblogs.com/ZERO-/p/9464987.html
Copyright © 2011-2022 走看看