2026/5/21 2:03:03
网站建设
项目流程
沈阳网站营销,国家防疫政策最新,高端网站建设公司增长,软件定制开发多少钱题目描述给定一个长度为 n 的整数数组 a 。有 n 条垂线#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, a[i]) 。找出其中的两条线#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 输出容器可以储存的最大水量。**说明#xff1a;**你不能倾斜容器。输入格式…题目描述给定一个长度为n的整数数组a。有n条垂线第i条线的两个端点是(i, 0)和(i, a[i])。找出其中的两条线使得它们与x轴共同构成的容器可以容纳最多的水。 输出容器可以储存的最大水量。**说明**你不能倾斜容器。输入格式输入共 2行。输入的第一行为一个正整数 n表示n条垂线。输入的第二行为n个正整数第i个数代表a[i]的值。输出格式输出一行一个整数表示容器可以储存的最大水量。输入输出样例输入 #1复制9 1 8 6 2 5 4 8 3 7输出 #1复制49输入 #2复制2 1 1输出 #2复制1说明/提示对于 100% 的数据2≤n≤10^6,0≤a[i]≤10^4。思路我们可以分别让变量l和r作为数组开头和结尾的位置开一个while循环通过比较l和r位置的高低用低的来进行容积计算r-l*h如何谁低谁位置就进行位移比如l位置低l这样才能找到更高的位置进行计算当l和r重合的时候也就是所有容积都计算了的时候时间复杂度on。主播的代码主播在编译器上写的不是力扣平台:#include iostream #includequeue #includealgorithm #includemap #includevector #includeset #includestack #includestring #includemath.h #include iomanip #includeunordered_map #include unordered_set #includearray #define gets(S) fgets(S,sizeof(S),stdin) #define ll long long const ll N 2e6 5; const ll Max 0x3f3f3f3f; using namespace std; ll n; int main() { cin n; vectorllsaki(n 1, 0); for (int i 1; i n; i) { cin saki[i]; } ll l 1, r n, sum 0; while (l r) { ll w min(saki[l], saki[r]); sum max(((r - l) * w), sum); saki[l] saki[r] ? r-- : l; } cout sum; return 0; }