• UVa-12657


    用数组写感觉萌萌哒啊,本题可以写个link函数,更加方便

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int maxx=100010;
     6 int r[maxx],l[maxx];
     7 int n,m;
     8 long long ans;
     9 int main()
    10 {
    11     int cnt=0;
    12     while(~scanf("%d%d",&n,&m))
    13     {
    14         ans=0;
    15         for(int i=1;i<=n;i++)
    16         {
    17             r[i]=i+1;
    18             l[i]=i-1;
    19         }
    20         r[0]=1;
    21         r[n]=0;
    22         l[1]=0;
    23         l[0]=n;
    24         bool f=0;
    25         while(m--)
    26         {
    27             int op,x,y;
    28             scanf("%d",&op);
    29             if(op==4) f=!f;
    30             else
    31             {
    32                 scanf("%d%d",&x,&y);
    33                 if((f==0&&op==1)||(f==1&&op==2))
    34                 {
    35                     r[l[x]]=r[x];
    36                     l[r[x]]=l[x];
    37                     l[x]=l[y];
    38                     r[l[y]]=x;
    39                     r[x]=y;
    40                     l[y]=x;
    41                 }
    42                 else if((f==0&&op==2)||(f==1&&op==1))
    43                 {
    44                     r[l[x]]=r[x];
    45                     l[r[x]]=l[x];
    46                     r[x]=r[y];
    47                     l[r[y]]=x;
    48                     l[x]=y;
    49                     r[y]=x;
    50                 }
    51                 else if(op==3)
    52                 {
    53                     if(r[x]==y)
    54                     {
    55                         r[x]=r[y];
    56                         l[r[y]]=x;
    57                         r[l[x]]=y;
    58                         l[y]=l[x];
    59                         l[x]=y;
    60                         r[y]=x;
    61                     }
    62                     else if(l[x]==y)
    63                     {
    64                         r[l[y]]=x;
    65                         l[x]=l[y];
    66                         l[r[x]]=y;
    67                         r[y]=r[x];
    68                         r[x]=y;
    69                         l[y]=x;
    70                     }
    71                     else
    72                     {
    73                         r[l[x]]=y;
    74                         l[r[x]]=y;
    75                         r[l[y]]=x;
    76                         l[r[y]]=x;
    77                         swap(r[x],r[y]);
    78                         swap(l[x],l[y]);
    79                     }
    80                 }
    81             }
    82         }
    83         if(f==0)
    84         {
    85             for(int p=r[0],i=1;p!=0&&i<=n;p=r[p],i++)
    86                 if(i%2==1) ans+=p;
    87         }
    88         else
    89         {
    90             for(int p=l[0],i=1;p!=0&&i<=n;p=l[p],i++)
    91                 if(i%2==1) ans+=p;
    92         }
    93         printf("Case %d: %lld
    ",++cnt,ans);
    94     }
    95 }
  • 相关阅读:
    logging- 日志记录
    apscheduler -定时任务
    mysql
    Time-python
    pandas 常用语句
    re 正则
    sublime text3的快捷键
    git 常用操作
    tf.nn的conv2d卷积与max_pool池化
    WebApi 接口返回值类型详解 ( 转 )
  • 原文地址:https://www.cnblogs.com/windrises/p/4672244.html
Copyright © 2020-2023  润新知