Codeforces Round #617 (Div.3)

A. Array with Odd Sum
这是一个水题,如果这个数组每项和就是奇数,直接输出YES,否则去判断数组中是否全是偶数,或者全是奇数。如果全是输出NO否则输出YES。

#include<bits/stdc++.h>
using namespace std;
int a[20200];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        int flag1=0;int flag2=0;
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            sum=sum+a[i];
            if(a[i]%2)
                flag1=1;
            else
                flag2=1;
        }
        if(sum%2!=0)
            cout<<"YES"<<endl;
        else{
            if(flag1==1&&flag2==1)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
    return 0;
}

B. Food Buying
也是水题,总之每次买10块钱,然后模拟出来就好了

 #include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int s;
        cin>>s;
        int sum=0;
        int x=s;
        while(x>=10)
        {
            sum=sum+x/10*10;
            x=x%10+x/10;
        }
        sum=sum+x;
        cout<<sum<<endl;
    }
    return 0;
}

C. Yet Another Walking Robot
思路:用map<pair<int,int>,int>存储走过的地方,是坐标点到字符串下标+1的映射。只要发现下一个走到的点已经出现在字典里了,说明这一段走的路就是在兜圈子
count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int t;
    cin>>t;
    int n;
    string s;
    while(t--)
    {
        cin>>n>>s;
        int x=0,y=0;
        map<pair<int,int>,int>m;
        int l=-1,r=n;
        m[{0,0}]=0;
        for(int i=0; i<n; i++)
        {
            if(s[i]=='L')
                x--;
            if(s[i]=='R')
                x++;
            if(s[i]=='U')
                y++;
            if(s[i]=='D')
                y--;
            if(m.count({x,y}))
            {
                if(i-m[{x,y}]<r-l)
                {
                    r=i;
                    l=m[{x,y}];
                }
            }
            m[ {x,y}]=i+1;
        }
        if(l==0)
            cout<<-1<<endl;
        else
            cout<<l+1<<" "<<r+1<<endl;
    }
    return 0;
}

后面的题还没写,后面再慢慢补题把=-=

发布了86 篇原创文章 · 获赞 0 · 访问量 1507

猜你喜欢

转载自blog.csdn.net/qq_43811879/article/details/104215435