A. Two Elevators
题目大意:有两台电梯
题目做法:
AC代码:
#include<bits/stdc++.h>
#define pb(element) push_back(element)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define int long long
#define ll long long
//Cara's templet version 1.17
//2024/2/17 13:27 UTC+8
//I'M BACK
using namespace std;
const int maxn=2e5+10;
void solve()
{
int a,b,c;
cin>>a>>b>>c;
if((a-1)<abs(b-c)+(c-1)) cout<<1<<'\n';
else if((a-1)>abs(b-c)+(c-1)) cout<<2<<'\n';
else cout<<3<<'\n';
}
signed main()
{
fast int casen=1;
cin>>casen;
while(casen--) solve();
}
B. Decode String
题目大意:
题目做法:
AC代码:
#include<bits/stdc++.h>
#define pb(element) push_back(element)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define int long long
#define ll long long
//Cara's templet version 1.17
//2024/2/17 13:27 UTC+8
//I'M BACK
using namespace std;
const int maxn=2e5+10;
void solve()
{
int n;
vector<char> res;
string str;
cin>>n;
cin>>str;
for(int i=str.length()-1;i>=0;i--)
{
if(str[i]=='0')
{
res.pb((10*(str[i-2]-'0')+str[i-1]-'0'-1+'a'));
//cout<<(10*(str[i-2]-'0')+str[i-1]-'0')<<'\n';
i-=2;
}
else res.pb(str[i]-'0'-1+'a');
}
for(int i=res.size()-1;i>=0;i--)
{
cout<<res[i];
}
cout<<'\n';
}
signed main()
{
fast int casen=1;
cin>>casen;
while(casen--) solve();
}
C. Jumping on Tiles
题目大意:
给你一个字符串,要求你从这个字符串的头跳到这个字符串的尾端,每次跳的花费是the index of the letter in the alphabet的差值的绝对值,要求总花费最小的前提下,跳的步数尽可能得多。
题目思路:
首先跳跃的字母序列不可以忽上忽下,因为这样的话相当于有的距离本来只用走一遍走了两遍,所以这个跳跃的字母序列要单调,取决于头节点和尾节点的大小关系。
如果头节点在字母表中的索引大于尾节点,则单调递减
如果小于,则单增
如果相等,那么只能条约键值相等的值,
题目做法:
AC代码:
#include<bits/stdc++.h>
#define pb(element) push_back(element)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define int long long
#define ll long long
//Cara's templet version 1.18
//2024/2/20 20:32 UTC+8
//Tell u what when the time I see someone
//Even that I can't see the clear of which
//I still can feel sth different
using namespace std;
const int maxn=2e5+10;
struct node
{
int ps;
char content;
};
bool cmp1(node x,node y)
{
if(x.content==y.content) return x.ps<y.ps;
return x.content>y.content;
}
bool cmp2(node x,node y)
{
if(x.content==y.content) return x.ps<y.ps;
return x.content<y.content;
}
void solve()
{
string str;
cin>>str;
vector<int> res;
int i;
node ar[str.length()-1];
for(int i=0;i<str.length();i++)
{
ar[i].ps=i;
ar[i].content=str[i];
}
if(str[0]>=str[str.length()-1])
{
sort(ar,ar+str.length(),cmp1);
for(i=0;i<str.length();i++)
{
if(ar[i].ps==0) break;
}
for(;i<str.length();i++)
{
res.pb(ar[i].ps+1);
if(ar[i].ps+1==str.length())
{
break;
}
}
}
else
{
sort(ar,ar+str.length(),cmp2);
for(i=0;i<str.length();i++)
{
if(ar[i].ps==0) break;
}
for(;i<str.length();i++)
{
res.pb(ar[i].ps+1);
if(ar[i].ps+1==str.length())
{
break;
}
}
}
cout<<abs(str[0]-str[str.length()-1])<<" "<<res.size()<<'\n';
for(i=0;i<res.size();i++)
{
cout<<res[i]<<' ';
}
cout<<'\n';
}
signed main()
{
fast int casen=1;
cin>>casen;
while(casen--) solve();
}
D. Friends and the Restaurant
题目大意:
题目思路:
题目做法:
AC代码:
#include<bits/stdc++.h>
#define pb(element) push_back(element)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
#define ll long long
//Cara's templet version 1.19
//2024/2/20 20:32 UTC+8
//Blood Toil Tears Sweat
using namespace std;
const int maxn=3e5+10;
struct node
{
int x,y;
};
bool cmp(int x,int y)
{
return x>y;
}
void solve()
{
int n,res=0;
cin>>n;
node ar[n];
vector<int> a1,a2;
for(int i=0;i<n;i++)
{
cin>>ar[i].x;
}
for(int i=0;i<n;i++)
{
cin>>ar[i].y;
int t=ar[i].y-ar[i].x;
if(t>=0) a1.pb(t);
else a2.pb(t);
}
sort(a1.begin(),a1.end());
sort(a2.begin(),a2.end(),cmp);
// for(auto it:a1)
// {
// cout<<it<<' ';
// }
// cout<<'\n';
// for(auto it:a2)
// {
// cout<<it<<' ';
// }
// cout<<'\n';
int inips1=0,inips2=0,allpos=a1.size();
while(inips1<a1.size()&&inips2<a2.size())
{
if(a1[inips1]>=abs(a2[inips2])) res++,inips1++,inips2++,allpos--;
else
{
inips1++;
}
}
cout<<allpos/2+res<<'\n';
}
signed main()
{
fast int casen=1;
cin>>casen;
while(casen--) solve();
}
Last Update Date 2024/2/20 20:57