[ABC371D] 1D Country 题解
1.[ABC347C] Ideal Holidays题解2.《扶苏的问题》题解3.[ABC366C] Balls and Bag Query 题解4.[ABC366D] Cuboid Sum Query 题解5.P7706 文文的摄影布置 题解6.[ABC370C] Word Ladder 题解7.P11020 「LAOI-6」Radiation 题解8.P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能 题解
9.[ABC371D] 1D Country 题解
10.[ABC371D] 1D Country 线段树解法11.P1955 程序自动分析 题解12.[ABC376E] Max × Sum 题解13.[ABC379D] Home Garden 题解14.P11276 第一首歌 题解15.[ABC380C] Move Segment 题解这题,怎么说呢,
前置芝士: lower_pound
函数在结构体上的使用。
那其实这题便是一个二分前缀和的水题了。结构体存储每个村庄的距离
代码 :
#include <bits/stdc++.h>
#define seq(q, w, e) for (int q = w; q <= e; q++)
#define ll long long
using namespace std;
const int maxn = 2e5+10;
ll n,m,ans;
struct node{
ll x,d;
node(){}
node(int a,int b):x(a),d(b){} //初始化
bool operator < (const node b)const{ //自定义比较函数
return x<b.x;
}
}a[maxn]; //村庄数组
bool cmp(node a,node b){
return a.x<b.x; //排序函数,以距离为关键词
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
a[0].d=0;
seq(i,1,n){
cin>>a[i].x;
}
seq(i,1,n){
cin>>a[i].d;
}
sort(a+1,a+n+1,cmp); //输入结构体后按距离排序
seq(i,1,n){
a[i].d+=a[i-1].d; //维护前缀和
}
cin>>m;
seq(i,1,m){
ans=0;
int l,r;
cin>>l>>r;
int sum1=lower_bound(a+1,a+1+n,node(l,0))-a,sum2=lower_bound(a+1,a+1+n,node(r,0))-a; //二分查找求区间
if(a[sum2].x!=r) sum2--; //由于low_pound返回的是第一个大于等于的数,所以如果不相等,需要减一
ans=a[sum2].d-a[sum1-1].d; //前缀和查询操作。
cout<<ans<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】