C:
#include <bits/stdc++.h>
#define maxs 2020202
#define mme(i,j) memset(i,j,sizeof(i))
#define lbt(x) (x&-x)
#define pb(x) push_back(x)
#define ins(x) insert(x)
using namespace std;
string s[maxs];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
for(int i=n-2 ; i>=0 ; i--) {
if(s[i] > s[i+1]) {
int len=s[i].size();
for(int j=len-1;j>=0;j--) {
if(s[i][j]>s[i+1][j]){
s[i].resize(j);
s[i][j]='\0';
}
}
}
}
for(int i=0;i<n;i++)
cout<<s[i]<<endl;
return 0;
}
B:
#include <bits/stdc++.h>
#define mme(i,j) memset(i,j,sizeof(i))
#define maxs 202002
#define ll long long
#define pb(x) push_back(x)
#define lbt(x) (x&-x)
using namespace std;
ll lowbit(ll x)
{
return x&(-x);
}
int main()
{
string s;
ll n,q;
while(cin>>n>>q)
{
ll x;
ll rt=(n+1)/2;
while(q--)
{
cin>>x>>s;
ll len=s.size();
for(int i=0; i<len; i++)
{
if(s[i]=='U')
{
if(x==rt)
continue;
if( x &(lbt(x)<<1))
x-=lbt(x);
else
x+=lbt(x);
}
else if(s[i]=='L')
{
x-=lbt(x)/2;
}
else if(s[i]=='R')
x+=lbt(x)/2;
}
// puts("HHH");
cout<<x<<endl;
}
}
return 0;
}

433

被折叠的 条评论
为什么被折叠?



