码迷,mamicode.com
首页 > 其他好文 > 详细

2014 ACM/ICPC Asia Regional Xi'an Online(HDU 5007 ~ HDU 5017)

时间:2014-09-14 22:00:08      阅读:641      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   2014   

题目链接

A题 :(字符串查找,水题)

题意 :输入字符串,如果字符串中包含“ Apple”, “iPhone”, “iPod”, “iPad” 就输出 “MAI MAI MAI!”,如果出现 “Sony” 就输出“SONY DAFA IS GOOD!” ,大小写敏感。

思路 : 字符串查找,水题。

bubuko.com,布布扣
 1 #include <string.h>
 2 #include <stdio.h>
 3 #include <iostream>
 4 
 5 using namespace std ;
 6 
 7 char str[20000];
 8 
 9 int main()
10 {
11     int i;
12     while(gets(str))
13     {
14         int len=strlen(str);
15         for(i=0; i<len; i++)
16         {
17             if(str[i]==A && str[i+1]==p && str[i+2]==p && str[i+3]==l && str[i+4]==e)
18                 printf("MAI MAI MAI!\n");
19             if(str[i]==i && str[i+1]==P && str[i+2]==h && str[i+3]==o && str[i+4]==n&&str[i+5] == e)
20                 printf("MAI MAI MAI!\n");
21             if(str[i]==i && str[i+1]==P && str[i+2]==a && str[i+3]==d)
22                 printf("MAI MAI MAI!\n");
23             if(str[i]==i && str[i+1]==P && str[i+2]==o && str[i+3]==d)
24                 printf("MAI MAI MAI!\n");
25             if(str[i]==S && str[i+1]==o && str[i+2]==n && str[i+3]==y)
26                 printf("SONY DAFA IS GOOD!\n");
27         }
28     }
29     return 0;
30 }
View Code

E题 :(博弈)

题意 : n堆珠子,两个人轮流玩儿,每一次,玩家从某一堆中拿出一些扔掉,至少拿出一个,然后对这堆剩下的,玩家可以不再操作,或者可以将剩下的分为两堆,但是每堆至少一个,然后下一个玩家玩儿,如果哪个玩家玩完一把之后没有珠子了。谁就胜了。

思路 : 类似于Nim游戏,就是多了一个分堆的问题,其实无大碍。。。还是那样分。。。。

bubuko.com,布布扣
#include <stdio.h>
#include <string.h>
#include <iostream>

using namespace std ;

int main()
{
    int n ;
    while(scanf("%d",&n)!=EOF)
    {
        int a,sum = 0 ;
        for(int i = 0 ; i < n ;i++)
        {
            scanf("%d",&a) ;
            sum ^= a ;
        }
        if(sum)puts("Win") ;
        else puts("Lose") ;
    }
    return 0 ;
}
View Code

 

F题 :(BFS) 

题意 : 告诉你一个骰子上下左右前后上的数字分别是多少,问转最少多少次能够转到另一个骰子的状态,如果不能输出-1,有前转后转左转右转。

思路 : 记录下当前状态在四种转向方式之后变成什么状态,然后加入队列,看能否转到终态。

bubuko.com,布布扣
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <queue>

using namespace std ;

int mul[7] = {1,10,100,1000,10000,100000};
struct node
{
    int sta,step ;
    friend bool operator < (node a,node b)
    {
        return a.step > b.step ;
    }
} p,temp1,temp2;
int state,a[7] ;
bool vis[700000] ;

int BFS()
{
    priority_queue<node>Q ;
    Q.push(p) ;
    vis[p.sta] = true ;
    while(!Q.empty())
    {
        temp1 = Q.top() ;
        Q.pop() ;
        if(temp1.sta == state) return temp1.step ;
        int ss = temp1.sta ;
        for(int i = 0 ; i < 6 ; i++)
        {
            a[i] = ss % 10 ;
            ss /= 10 ;
        }
        //左转
        p.sta = 0 ;
        p.step = temp1.step + 1 ;
        p.sta = 1*a[3]+10*a[2]+100*a[0]+1000*a[1]+10000*a[4]+100000*a[5] ;
        if(!vis[p.sta])
        {
            Q.push(p) ;
            vis[p.sta] = true ;
        }
        //右转
        p.sta = 0 ;
        p.step = temp1.step + 1 ;
        p.sta = 1*a[2]+10*a[3]+100*a[1]+1000*a[0]+10000*a[4]+100000*a[5] ;
        if(!vis[p.sta])
        {
            Q.push(p) ;
            vis[p.sta] = true ;
        }
        //后转
        p.sta = 0 ;
        p.step = temp1.step + 1 ;
        p.sta = 1*a[4]+10*a[5]+100*a[2]+1000*a[3]+10000*a[1]+100000*a[0] ;
        if(!vis[p.sta])
        {
            Q.push(p) ;
            vis[p.sta] = true ;
        }
        //前转
        p.sta = 0 ;
        p.step = temp1.step + 1 ;
        p.sta = 1*a[5]+10*a[4]+100*a[2]+1000*a[3]+10000*a[0]+100000*a[1] ;
        if(!vis[p.sta])
        {
            Q.push(p) ;
            vis[p.sta] = true ;
        }
    }
    return -1 ;
}
int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)
    {
        p.sta = a ;
        for(int i = 1 ; i < 6 ; i++)
        {
            scanf("%d",&a) ;
            p.sta += a*mul[i] ;
        }
        p.step = 0 ;
        state = 0 ;
        for(int i = 0 ; i < 6 ; i++)
        {
            scanf("%d",&a) ;
            state += a*mul[i] ;
        }
        //printf("%d %d\n",p.sta,state) ;
        memset(vis,false,sizeof(vis)) ;
        if(p.sta == state)
        {
            puts("0") ;
            continue ;
        }
        int t = BFS() ;
        printf("%d\n",t) ;
    }
    return 0 ;
}
View Code

 

2014 ACM/ICPC Asia Regional Xi'an Online(HDU 5007 ~ HDU 5017)

标签:style   blog   http   color   io   os   ar   for   2014   

原文地址:http://www.cnblogs.com/luyingfeng/p/3971753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!