现在的位置: 首页 > 综合 > 正文

几道hdu题

2018年04月24日 ⁄ 综合 ⁄ 共 3591字 ⁄ 字号 评论关闭

都是以前周赛的题目,以后会慢慢更新。

HDOJ--1020

水题

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
char a[10005];
int main()
{
    int t,i,l,sum;
    char c;
    scanf("%d",&t);
    while(t--)
    {
        int flag=1;
        sum=1;
        scanf("%s",a);
        l=strlen(a);
        c=a[0];
        for(i=0;i<l-1;i++)
        {
            if(a[i]!=a[i+1])
            {
                if(sum>1)   printf("%d",sum);
                sum=1;
                printf("%c",c);
                c=a[i+1];
                if(i+1==l-1)    {printf("%c",a[i+1]);flag=0;}
            }
            else    sum++;
        }
        if(flag==1)
        {
            printf("%d%c",sum,c);
        }
        printf("\n");
    }
    return 0;
}

HDOJ--1032

水题

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
char a[10005];
int main()
{
    int x,y,i,sum,max;
    while(scanf("%d%d",&x,&y)!=EOF)
    {
        printf("%d %d ",x,y);
        if(x>y)
        {
            int t=x;
            x=y;
            y=t;
        }
        max=0;
        for(i=x;i<=y;i++)
        {
            sum=1;
            int n=i;
            while(n>1)
            {
                if(n==1)    break;
                if(n%2) n=3*n+1;
                else    n=n/2;
                sum++;
            }
            if(sum>max) max=sum;
        }
        printf("%d\n",max);
    }
    return 0;
}

HDOJ--1037

水题

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
char a[10005];
int main()
{
    int x,y,z;
    scanf("%d%d%d",&x,&y,&z);
    if(x<=168)  printf("CRASH %d\n",x);
    else if(y<=168) printf("CRASH %d\n",y);
    else if(z<=168) printf("CRASH %d\n",z);
    else printf("NO CRASH\n");
    return 0;
}

HDOJ--1050

贪心题,注意对门也不能搬运,WA出翔了

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    int a[205],t,n,x,y,i;
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            x=(x+1)/2;
            y=(y+1)/2;
            if(x>y)
            {
                int temp=x;
                x=y;
                y=temp;
            }
            for(int j=x;j<=y;j++)
                a[j]++;
        }
        int max=a[1];
        for(i=1;i<201;i++)
            if(a[i]>max)    max=a[i];
        printf("%d\n",max*10);
    }
    return 0;
}

HDOJ--1062

水题

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string.h>
#include<ctype.h>
#include<stack>
#include<queue>
#include<set>
#include<algorithm>
#include<limits.h>
#define PI acos(-1)
using namespace std;
char a[1005],b[1005];
int main()
{
    int t,l,i,j,k;
    char c,temp;
    scanf("%d",&t);
    c=getchar();
    while(t--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        k=0;
        gets(a);
        l=strlen(a);
        for(i=0;i<l;i++)
        {
            if(a[i]==' ')
            {
                for(j=0;j<(k+1)/2;j++)
                {
                    temp=b[j];
                    b[j]=b[k-1-j];
                    b[k-1-j]=temp;
                }
                if(a[i]==' ')   printf("%s ",b);
                memset(b,0,sizeof(b));
                k=0;
            }
            else    b[k++]=a[i];
        }
        for(j=0;j<(k+1)/2;j++)
        {
            temp=b[j];
            b[j]=b[k-1-j];
            b[k-1-j]=temp;
        }
        printf("%s\n",b);
    }
    return 0;
}

HDOJ--1106

水题

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string.h>
#include<ctype.h>
#include<stack>
#include<queue>
#include<set>
#include<algorithm>
#include<limits.h>
#define PI acos(-1)
using namespace std;
char a[1005];
int b[1000];
int main()
{
    int i,l,k,x;
    char c[20];
    while(gets(a))
    {
        memset(c,0,sizeof(c));
        k=x=0;
        l=strlen(a);
        for(i=0;i<l;i++)
        {
            if(a[i]=='5')
            {
                if(k)
                {
                    c[k]='\0';
                    b[x++]=atoi(c);
                    memset(c,0,sizeof(c));
                    k=0;
                }
            }
            else    c[k++]=a[i];
        }
        if(k)
        {
            c[k]='\0';
            b[x++]=atoi(c);
        }
        sort(b,b+x);
        for(i=0;i<x-1;i++)
            printf("%d ",b[i]);
        printf("%d\n",b[i]);
    }
    return 0;
}

HDOJ--1016

DFS

和哈密顿那道题有点像,不过比那个简单,坑爹的地方在于是个多CASE,INPUT里没写,OUTPUT有句“Print a blank line after each case.”是提示

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<vector>
#include<set>
#include<queue>
#include<stack>
#include<stdlib.h>
#include<ctime>
#define PI acos(-1)
using namespace std;
int lu[25],n,m;
int visit[25];
bool prime(int x)
{
    int i;
    for(i=2;i*i<=x;i++)
    {
        if(x%i==0)  return false;
    }
    return true;
}
void dfs(int m,int cnt)
{
    int i;
    if(cnt==n)
    {
        if(prime(lu[1]+lu[n]))
        {
            for(i=1;i<=n-1;i++)
                printf("%d ",lu[i]);
            printf("%d\n",lu[i]);
        }
    }
    if(cnt>n)   return ;
    if(visit[m])    return ;
    else
    {
        visit[m]=1;
        for(i=1;i<=n;i++)
        {
            if(prime(m+i)&&!visit[i])
            {
                lu[cnt+1]=i;
                dfs(i,cnt+1);
            }
        }
        visit[m]=0;
    }
}
int main()
{
    int k=1;
    while(scanf("%d",&n)!=EOF)
    {
        memset(visit,0,sizeof(visit));
        printf("Case %d:\n",k++);
        lu[1]=1;
        dfs(1,1);
        printf("\n");
    }

    return 0;
}

抱歉!评论已关闭.