2016/11/6周赛存代码

88 阅读2分钟

周赛链接:点这里 密码:ACM7114

代码:

----------Problem A	HDU 2087 剪花布条-------------------
#include<iostream>
#include<string>
using namespace std;
int main()
{
    char a[1000];
    char b[1000];
    while(cin>>a&&(a[0]!='#'))
    {
       cin>>b;
       int n,m,k,num(0),t,temp;
       n=strlen(a);m=strlen(b);
       for(int i=0;i<=n-m;i++)
       {
          t=0;
          if(a[i]==b[0])
          {
             k=0;
             for(int j=1;j<m;j++)
             {
                     if(b[j]==a[i+j])
                     {k++;}
             }
             if(k==(m-1))
             {num++;t=1;}
          }
          if(t==1)
          {i=i+m-1;}
       }
       cout<<num<<endl;
    }
    return 0;
}
--------Problem B	CodeForces 733A	B--------------------
#include <stdio.h>
#include <string.h>
int main()
{
    char a[1001];
    while(~scanf("%s",a+1))
    {
        a[0]='E';
        int len=strlen(a),sum=1,q=0;
        a[len]='E';
        int i,j;
        for(int k=1; k<len; k++)
        {
            if(a[k]=='A'||a[k]=='E'||a[k]=='I'||a[k]=='O'||a[k]=='U'||a[k]=='Y')
                q++;
        }
        for(i=0; i<=len; i++)
        {
            if(a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U'||a[i]=='Y')
            {
                for(j=i; j<=len; j++)
                {
                    if(a[j]=='A'||a[j]=='E'||a[j]=='I'||a[j]=='O'||a[j]=='U'||a[j]=='Y')
                    {
                        if(j-i>sum)
                            sum=j-i;
                        i=j;
                        continue;
                    }
                }
            }
        }
        if(q!=0)
            printf("%d\n",sum);
        else
        {
            printf("%d\n",len);
        }
    }
    return 0;
}
------Problem C	HDU 2206	IP的计算-----------
#include<stdio.h>  
#include<string.h>  
int main()  
{  
    char s[110];  
    int n,m,i,a,b,t;  
    int sum[10],str[10];  
    while(gets(s))  
    {  
        memset(sum,0,sizeof(sum));  
        memset(str,0,sizeof(str));  
        n=strlen(s);  
        m=1;  
        if(n>15||s[n-1]=='.'||s[0]=='.') m=0;
        else  
        {  
            for(a=b=i=0;i<n;i++)  
            {  
            if(s[i]==s[i+1]&&s[i]=='.') break;
            if(s[i]=='.') a++;  
            else if(s[i]>'9'||s[i]<'0') b++;  
            }  
            if(a!=3||b>0) m=0;  
            else{  
                for(t=i=0;i<n;i++)  
                if(s[i]!='.') {sum[t]=sum[t]*10+s[i]-'0';str[t]++;}  
                else t++;  
                for(i=0;i<=t;i++)  
                if(sum[i]>255||str[i]>3) break;  
                if(i>t) m=1;  
                else m=0;  
                }  
            }  
            if(m==0) printf("NO\n");  
            else printf("YES\n");  
        }  
        return 0;  
    }  
<span style="color:#ff0000;">//附上一个别人的高清重置代码</span>
<span style="color:#ff0000;"></span><pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
int main()
{
    char a[110];
    while(gets(a))
    {
        int i,la,flag=1,t=0;
        la=strlen(a);
        if(a[0]=='.'||a[la-1]=='.'||la>15)
            flag=0;//筛去字符太长或前后是点的
        for(i=0; i<la; i++)
            if(a[i]==a[i+1]&&a[i]=='.')
            {
                flag=0;
                break;//筛去连续点的
            }
        for(i=0; i<la; i++)
            if(a[i]=='.')
                t++;
        if(t!=3)//筛去点不是3个的
            flag=0;
        else
        {
            for(i=0; i<la; i++)
            {
                if(a[i]!='.')
                {
                    if(a[i]>'9'||a[i]<'0')//筛去不合格字符
                        flag=0;
                }
            }
            for(i=0; i<la; i++)
            {
                int sum=0,k=0;
                while(a[i]!='.'&&i!=la)
                {
                    sum=sum*10+a[i]-'0';
                    k++;
                    i++;
                }
                if(sum>255||k>3)
                {
                    flag=0;//筛去大于255或者.与.之间大于3个字符的
                }
            }
        }
        if(flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}


\

</pre><pre name="code" class="cpp">---------Problem D	HDU 2537	8球胜负-------------------
#include <stdio.h>
int main()
{
    while(1)
    {
        int n;
        scanf("%d",&n);
        if(n==0)break;
        char a[100];
        scanf("%s",a);
        int numr=0,numy=0;
        for(int i=0; i<n; i++)
        {
            if(a[i]=='Y')
                numy++;
            if(a[i]=='R')
                numr++;
            if(a[i]=='B'&&numr<7)
                printf("Yellow\n");
            if(a[i]=='L'&&numy<7)
                printf("Red\n");
            if(a[i]=='B'&&numr==7)
                printf("Red\n");
            if(a[i]=='L'&&numy==7)
                printf("Yellow\n");
        }
    }

    return 0;
}
-----------Problem E	HDU 2550	百步穿杨---------------
#include <stdio.h>
#include <algorithm>
using namespace std;
struct j
{
    int chang;
    int num;
} a[100];
bool cmp(j x,j y)
{
    return x.chang<y.chang;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(int i=0; i<n; i++)
        {
            scanf("%d %d",&a[i].chang,&a[i].num);
        }
        sort(a,a+n,cmp);
        for(int i=0;i<n;i++)
        {
            for(int k=0;k<a[i].num;k++)
            {
                    printf(">+");
                    for(int l=0;l<a[i].chang-2;l++)
                    {
                        printf("-");
                    }
                    printf("+>");
                printf("\n");
            }
            printf("\n");
        }
    }
    return 0;
}
-----------Problem F	HDU 1859	最小长方形---------
#include <iostream>  
using namespace std;  
int main()  
{  
    int x,y,max_x,min_x,max_y,min_y;  
    while(cin >> x >> y)  
    {  
        if(!x && !y)  
            break;  
        max_x = min_x = x;  
        max_y = min_y = y;  
        while(cin >> x >> y)  
        {  
            if(!x && !y)  
                break;  
            if(x>max_x)  
                max_x = x;  
            else if(x<min_x)  
                min_x = x;  
            if(y>max_y)  
                max_y = y;  
            else if(y<min_y)  
                min_y = y;  
        }  
        cout << min_x << " " << min_y << " " << max_x << " " << max_y << endl;  
    }  
    return 0;  
}  
----Problem G	CodeForces 731A	Night at the Museum------
#include<algorithm>
#include<math.h>
#include <stdio.h>
#include <cstring>
using namespace std;

int main(int argc, char** argv)
{
    char ch[110];
    while(scanf("%s",ch)!=EOF)
    {
        int ans=0;
        ans=min(abs(ch[0]-'a'),abs(26-(ch[0]-'a')));
        for(int i=1; i<strlen(ch); i++)
        {
            ans+=min(abs(ch[i]-ch[i-1]),26-abs(ch[i]-ch[i-1]));
        }
        printf("%d\n",ans);
    }
    return 0;
}
-----------Problem H	CodeForces 702A	Maximum Increase--
#include<cstdio>
int a[100005];
int main()
{
    int n,i,c,ans,p;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    ans=1;
    c=1;
    for(i=1; i<n; i++)
    {
        if(a[i]>a[i-1])
        {
            c++;
        }
        else
        {
            if(c>ans)
            {
                ans=c;
            }
            c=1;
        }
    }
    if(c>ans)
    {
        ans=c;
    }
    printf("%d\n",ans);
    }
    return 0;
}


ps:存存代码,万一有用呢