C小沙の不懂(加数据后寄了,重新新增条件判断,已过)
- 首先大胆猜测长度大的就一定大?
举例发现7777778 和 8 那么 当7对应为0的时候就相等了
- 那么去掉开头连续相同数字后长度还大的就一定大了?
举例发现777778 和 7如果只去了a的7是不够的的,因为当7对应0的时候 b也会少一个数字变成同样1位数了
- 那么结论就出来了:首数字相同就一起去掉连续相同的,没相同的就单去掉大的,判断去完后是否还大。写的时候用个变量赋值0和1和再乘被比较的即可合并写了
(旧版结论,加数据后寄了,对拍发现还有一种情况)
-
还有13 310这种情况扣完首后变成x0和xy因为已经没有0可以选了所以xy一定>x0 也就是判断原本长度大的,扣完后如果变成一样长,那么第一位不相同的数字是否b是被替换后的0
def solve(a,b):
if a==b:
return '='
else:
ans='>'#默认a大
if(len(a)<len(b)):#减小一个大分支
a,b=b,a
ans='<'#要变输出的方向
shou1,shou2=0,0#前面多少个一样的数字
tong=0
if(a[0]==b[0]):
tong=1
for t in a:
if t==a[0]:
shou1+=1
else:
break
for t in b:
if t==b[0]:
shou2+=1
else:
break
if len(a)>len(b):
if len(a)-shou1>len(b)-tong*shou2:
return ans
elif len(a)-shou1==len(b)-tong*shou2:#13 310扣完位数相等发现是x0和xy一定存在大于,即第一个不同的数小的为0(被置换后的0)
zero=a[0]
a=a[shou1:]#a是长的肯定要首变0扣掉
b=b[tong*shou2:]#b不一定扣和a首相同才扣
for i in range(len(a)):
if(a[i]!=b[i]):
if(b[i]==zero):#又不相同的且小的为0才能维持>,不然最后都要返回不等拉
return ans;
else:#第一个不相等的出现还不是被置换的0那就只能返回不等了
break
return '!'
a,b=input().split()
print(solve(a,b))
D小沙の赌气
用个优先队列,按照左边界升序,然后每次操作判断当前位置是否大于等于左边界 符合条件说明可以跳转到这个区域的右边界,然后小心有可能右边界比当前位置还小,所以取个max就好了
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct zone{
int l,r;
bool operator<(const zone &rhs) const{
return l>rhs.l;
}
};
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
int d1[n+5],d2[n+5],w1=-1,w2=-1;//每次能到的地方和当前位置
priority_queue<zone>p1,p2;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
p1.push({x-1,y-1});
zone t=p1.top();
while(w1+1>=t.l)//使用道具的条件
{
w1=max(t.r,w1);//当前远或者能使用的道具抵达的远
p1.pop();
if(p1.empty())
break;
t=p1.top();
}
d1[i]=w1;
}
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
p2.push({x-1,y-1});//统一下标0
zone t=p2.top();
while(w2+1>=t.l)//使用道具的条件
{
w2=max(t.r,w2);//当前远或者能使用的道具抵达的远
p2.pop();
if(p2.empty())
break;
t=p2.top();
}
d2[i]=w2;
}
for(int i=0;i<n;i++)
{//开始输出和通关
// cout<<"d1="<<d1[i]<<" d2="<<d2[i]<<'\n';
if(d1[i]>d2[i])
cout<<"sa_win!\n"<<d1[i]-d2[i]<<'\n';
else if(d1[i]<d2[i])
cout<<"ya_win!\n"<<d2[i]-d1[i]<<'\n';
else
cout<<"win_win!\n0\n";
}
return 0;
}