您当前的位置: 首页 >  算法

*DDL_GzmBlog

暂无认证

  • 0浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[nk] 2022牛客寒假算法基础集训营1 补题|题解

*DDL_GzmBlog 发布时间:2022-01-26 18:30:29 ,浏览量:0

目录
      • 前言
        • L.牛牛学走路
          • MyCode
          • OtherCode
        • J.小朋友做游戏
          • MyCode
        • A.九小时九个人九扇门
          • MyCode
        • F. 中位数切分
          • MyCode

前言

根据难度系数补题,大概会补 ACDEFHIJL (因为我的学长也做了这么多题)

L.牛牛学走路

题意 : 模拟上下左右,问什么时候的距离最大

思路 : 对于样例 t t t和 n n n,范围乘起来不超过 1 e 5 1e5 1e5,所以想了想我们可以使用栈模拟

我们将 L R LR LR和 U D UD UD分为这两组,如果当前栈顶元素不同于当前的 S [ i ] S[i] S[i]那么我们

就开始计算,并且更新答案

但是其实不用栈来模拟,因为使用栈来模拟,对于计算答案的时候,我们总是需要想

一下,虽然思路清晰但是码量较大,所以我们不妨看一下别人的代码,显然他们也是

分了两组,但是使用的是两个变量进行计算,这样子就可以更好的Ac

MyCode
double cal(int x,int y){
	return x*x + y*y;
}
void solve()
{
	int n;cin>>n;
	string s;cin>>s;
	ans = 0 ;
	
	while(!xlen.empty()) xlen.pop();
	while(!ylen.empty()) ylen.pop();
	
	for(int i = 0 ; i> n;
    int x = 0, y = 0;
    double res = 0;
    for(int i = 0 ; i > c;
        if(c == 'L') x --;
        else if(c == 'R') x ++;
        else if(c == 'U') y ++;
        else y --;
        res = max(res, get_dist(x, y));
    }
    cout >n;
	for(int i=1;i>va[i];
	for(int i=1;i>vb[i];
	
	sort(va+1,va+1+a,cmp);sort(vb+1,vb+1+b,cmp);
	/**
	判断不能的情况 
	**/	
	int ans =  -1 ;
	
	if(a             
关注
打赏
1657615554
查看更多评论
0.0515s