题解 | #Letter Song ~ 致十年后的我们#

Letter Song ~ 致十年后的我们

https://ac.nowcoder.com/acm/contest/91072/A

显然的若l>n则只需要x或y为中点,否则x和y到中点距离相同,我们设置一个函数f来求l到r中所有数到x的距离和,代码就能非常短

#include <bits/stdc++.h>
#define int long long
using namespace std;
int f(int l,int r,int mid){
    return mid*(mid-l+1)-(mid+l)*(mid-l+1)/2+(mid+r)*(r-mid+1)/2-mid*(r-mid+1);
}
signed main(){
    int t;cin>>t;
    while(t--){
        int n,l;cin>>n>>l;
        int mid=1+n>>1;
        if(l<n){
            int x=mid-l/2,y=mid+(l-l/2);
            cout<<x<<" "<<y<<" "<<f(1,mid,x)+f(mid+1,n,y)<<endl;
        }else
            cout<<mid<<" "<<mid+l<<" "<<f(1,n,mid)<<endl;
    }
    return 0;
}

全部评论
666
点赞 回复 分享
发布于 04-12 17:33 四川

相关推荐

不愿透露姓名的神秘牛友
07-01 17:00
点赞 评论 收藏
分享
05-11 20:45
门头沟学院 Java
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务