物理实验 (easy)

题目背景

莲子为了完善她的论文,决定研究一些物体的物理性质。由于工作实在是太多,她邀请你帮忙完成其中的一个小实验。

题目描述

这是该题的简单版本,两个版本之间的区别在于小球需要满足的条件不同。该题的满分为 50 分。

莲子有一个初始在数轴 000 点并向数轴正方向移动的小球。她在数轴的 111nnnnnn 个点上设置了装置,当小球经过点 iii 时,她可以花费 aia_iai 的代价让其改变移动方向(从数轴正方向切换为负方向,或者相反)。

莲子有 mmm 个需要满足的条件,第 iii 个条件形如“小球需要从点 xix_ixi 移动到点 yiy_iyi 至少一次”,其中 xix_ixi 大于 yiy_iyi。更详细的说,该条件即要求小球的移动路径形如 …→xi→…→yi→…\ldots \to x_i\to\ldots\to y_i\to\ldotsxiyi

莲子想要知道她至少要花费多少代价才能满足所有条件。

输入格式

第一行两个整数 n,mn,mn,m

第二行 nnn 个正整数描述序列 aaa

接下来 mmm 行中,第 iii 行依次给出两个正整数表示 xix_ixiyiy_iyi

输出格式

一行一个整数,表示莲子至少要花费多少代价才能满足所有条件。

样例 #1

样例输入 #1

3 1
1 2 3
2 1

样例输出 #1

2

样例 #2

样例输入 #2

5 3
5 2 3 4 5
2 1
3 2
3 1

样例输出 #2

3

提示

样例解释

如图所示给出了两个样例的移动路线。数轴上方的是在每个点转向的代价,下方的是坐标。

样例 #1

莲子让小球在经过点 222 时反转方向恰好能满足所有条件,总花费代价为 222

样例 #2

莲子让小球在经过点 333 时反转方向恰好能满足所有条件,总花费代价为 333

数据范围

本题采用捆绑测试。

Subtask分值n,m≤ai≤xi,yi≤特殊性质Subtask 依赖1101010010−−210103108103−13302×1051082×105−1,2 \def\arraystretch{1.5} \begin{array}{|c|c|c|c|c|c|c|}\hline \textbf{Subtask} & \textbf{\textsf{分值}} & \bm{n,m\le } & \bm{a_i\le} & \bm{x_i,y_i\le} & \textbf{\textsf{特殊性质}}&\textbf{Subtask \textsf{依赖}}\cr\hline 1 & 10 & 10 & 100 & 10 & - &-\cr\hline 2 & 10 & 10^3 & 10^8 & 10^3 & -&1 \cr\hline 3 & 30 & 2\times 10^5 & 10^8 & 2\times 10^5 & -&1,2 \cr\hline \end{array} Subtask123分值101030n,m101032×105ai100108108xi,yi101032×105特殊性质Subtask 依赖11,2

对于所有数据满足:1≤n,m≤2×1051\le n,m\le 2\times 10^51n,m2×1051≤ai≤1081\le a_i\le 10^81ai1081≤yi<xi≤n≤2×1051\le y_i< x_i \le n\le 2\times 10^51yi<xin2×105

C++实现

#include
#include
#include <bits/stdc++.h>

using namespace std;

int n,m,k,a[10000],x[10000],y[10000];

bool cmp(int a,int b){
return a>b;
}

int main() {
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>x[i]>>y[i];
sort(x+1,x+m+1,cmp);
int ans=1e9;
for(int i=x[1];i<=n;i++){
ans=min(a[i],ans);
}
cout<<ans;
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP C++考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容

Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐