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;
}
后面的题还没写,后面再慢慢补题把=-=