标签:space class pair span size back syn fir robot
想要数组加和为奇数,可以从数组长度是奇数还是偶数着手
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define _for(i,a,b) for(int i = (a);i < b;i ++)
#define _rep(i,a,b) for(int i = (a);i > b;i --)
#define INF 0x3f3f3f3f
#define ZHUO 11100000007
#define MOD 1000000007
#define MIKUNUM 39
#define pb push_back
#define debug() printf("Miku Check OK!\n")
#define maxn 3503
#define X first
#define Y second
int main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
//全て odd と even
int subedeodd = 1,subedeeven = 1;
_for(i,0,n)
{
int tmp;
cin >> tmp;
if(tmp&0x1)
subedeeven = 0;
else
subedeodd = 0;
}
if( ((!(n&0x1))&&(subedeeven||subedeodd))
|| ((n&0x1) && subedeeven))
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
原谅我不懂 \(cashback\) 的含义...但从题目理解去模拟即可,每次得到的钱再加上去然后再滚一遍
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define _for(i,a,b) for(int i = (a);i < b;i ++)
#define _rep(i,a,b) for(int i = (a);i > b;i --)
#define INF 0x3f3f3f3f
#define ZHUO 11100000007
#define MOD 1000000007
#define MIKUNUM 39
#define pb push_back
#define debug() printf("Miku Check OK!\n")
#define maxn 3503
#define X first
#define Y second
int main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
int x;
cin >> x;
int rnt = 0;
while(x>=10)
{
int tmp = x-x%10;
rnt += tmp;
x -= tmp;
x += tmp/10;
}
printf("%d\n",rnt+x);
}
return 0;
}
题目说的挺花哨,翻译翻译,把问题转化一下,就是在字符串中找一最小子串使得能够恰好抵消。什么叫恰好抵消?\(L\) 能和 \(R\) 抵消,\(U\) 能和 \(D\) 抵消,也就是字符串里 \(L\) 和 \(R\) 的数量相等, \(U\) 和 \(D\) 数量相等即可。
光从字符串角度想不好想,我们考虑一下这个机器人怎么算是能恰好抵消——很显然,如果这个机器人走到了之前走到的位置,也就是它绕了个圈,那就是能够恰好抵消,这个圈就是我们应该删掉的部分。
记录当前位置,存到 \(map\) 里,\(first\) 记录到过的坐标,\(second\) 记录在哪儿到过的,每次到达的位置就去 \(map\) 里找找,能找到说明有个圈,看看能不能更新答案,然后把这个圈的碰撞点的 \(second\) 更新为当前位置。
时间复杂度 \(O(nlogn)\)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define _for(i,a,b) for(int i = (a);i < b;i ++)
#define _rep(i,a,b) for(int i = (a);i > b;i --)
#define INF 0x3f3f3f3f
#define ZHUO 11100000007
#define MOD 1000000007
#define MIKUNUM 39
#define pb push_back
#define debug() printf("Miku Check OK!\n")
#define maxn 3503
#define X first
#define Y second
int main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
int n;
string s;
cin >> n >> s;
map<pair<int,int>,int> mp;
int ans = INF;
int anst,aned;
int x = 0, y = 0;
mp[{0,0}] = -1;
_for(i,0,s.size())
{
if(s[i]=='L')
x --;
else if(s[i]=='R')
x ++;
else if(s[i]=='U')
y ++;
else
y --;
auto iter = mp.find({x,y});
if(iter!=mp.end() && ans > i-iter->second)
{
ans = i-iter->second;
anst = iter->second+2;
aned = i+1;
}
mp[{x,y}] = i;
}
if(ans==INF)
printf("-1\n");
else
printf("%d %d\n",anst,aned);
}
return 0;
}
标签:space class pair span size back syn fir robot
原文地址:https://www.cnblogs.com/Asurudo/p/12268311.html