昨晚做了俩题(还是俩大水题)电脑没电了。。。还好是小号,不怕掉分
A.Linear Keyboard:
大大大大大水题,存一下s1的位置,然后遍历s2,找距离差的绝对值加一下就可以了
#include<iostream>
#include<cmath>
using namespace std;
int a[26];
void solve()
{
string s,t;
cin>>s>>t;
int ans = 0;
int l = 26;
int len = t.length();
for(int i = 0; i<l;i++)
a[s[i]-'a']=i;
for(int i = 1;i < len;i++)
{
ans += abs(a[t[i]-'a']-a[t[i-1]-'a']);
}
cout<<ans<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
B.Odd Grasshopper:
也是大大大大大水题,找规律,四个一轮,x0奇偶有不同的情况,判断一下x0是奇是偶,然后记一下n%4,0,1,2,3不同答案记一下就可以了…
#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
void solve()
{
ll x,n;
ll ans = 0;
cin>>x>>n;
if(x%2==0){
ll t1 = n/4;
ll t2 = n%4;
if(t2 == 1)
ans = x-n;
else if(t2 == 2)
ans = x+n-(n-1);
else if(t2 == 3)
ans = x+n+n-1-(n-2);
else if(t2 == 0)
ans = x;
}
else{
ll t1 = n/4;
ll t2 = n%4;
if(t2 == 1)
ans = x+n;
else if(t2 == 2)
ans = x-n+(n-1);
else if(t2 == 3)
ans = x-n-(n-1)+(n-2);
else if(t2 == 0)
ans = x;
}
cout<<ans<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
C.
也很水…看代码吧
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+10;
ll a[N];
void solve()
{
ll sum=0;
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
ll ans=a[0];
sum=-a[0];
for(int i=1;i<n;i++)
{
ans=max(ans,a[i]+sum);
sum-=a[i]+sum;
}
cout<<ans<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
}
D.
怎么这次的题这么水…
排个序,判断一下即可
#include<bits/stdc++.h>
#define yes "Yes"
#define no "No"
#define ll long long
using namespace std;
const int N=1e6+10;
int a[N];
struct node{
int n;
char ch;
}b[N];
bool cmp(node i, node j)
{
if(i.ch == j.ch)
return i.n<j.n;
return i.ch<j.ch;
}
void solve()
{
int n;
cin>>n;
for(int i =0 ;i<n;i++)
cin>>a[i];
string s;
cin>>s;
for(int i =0;i<n;i++)
{
b[i].n = a[i];
b[i].ch = s[i];
}
sort(b,b+n,cmp);
int flag = 1;
for(int i=1;i<=n;i++)
{
if(b[i-1].n<i&&b[i-1].ch == 'B')flag = 0;
if(b[i-1].n>i&&b[i-1].ch == 'R')flag = 0;
}
if(flag)cout<<yes<<endl;
else cout<<no<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
}
下次要打就在机房打,在宿舍打也一定先把电充满(