打卡信奥刷题(057)用C++工具信奥P10606[普及组/提高] 物理实验 (easy)
物理实验 (easy)
题目背景
莲子为了完善她的论文,决定研究一些物体的物理性质。由于工作实在是太多,她邀请你帮忙完成其中的一个小实验。
题目描述
这是该题的简单版本,两个版本之间的区别在于小球需要满足的条件不同。该题的满分为 50 分。
莲子有一个初始在数轴 000 点并向数轴正方向移动的小球。她在数轴的 111 到 nnn 这 nnn 个点上设置了装置,当小球经过点 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\ldots…→xi→…→yi→…。
莲子想要知道她至少要花费多少代价才能满足所有条件。
输入格式
第一行两个整数 n,mn,mn,m。
第二行 nnn 个正整数描述序列 aaa。
接下来 mmm 行中,第 iii 行依次给出两个正整数表示 xix_ixi 和 yiy_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,m≤101032×105ai≤100108108xi,yi≤101032×105特殊性质−−−Subtask 依赖−11,2
对于所有数据满足:1≤n,m≤2×1051\le n,m\le 2\times 10^51≤n,m≤2×105,1≤ai≤1081\le a_i\le 10^81≤ai≤108,1≤yi<xi≤n≤2×1051\le y_i< x_i \le n\le 2\times 10^51≤yi<xi≤n≤2×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++考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容
更多推荐



所有评论(0)