【发布时间】:2018-06-18 12:36:40
【问题描述】:
问题陈述询问i
我做了什么:
我从 i=0 到 n-2 运行了一个循环:
我使用的基本逻辑是,如果排序子数组中的前两个元素大于或等于最大值,那么所有对都将大于任何元素。每次获得子数组时,我都会将下一个元素添加到其中并再次设置这三个变量。正在通过 15/20 TC,其他人正在获得 TLE:
约束:
1
1
for(int i=0;i<n-2;i++)
{
int r=i+2;
vector<int> temp(inp.begin()+i,inp.begin()+r+1);
sort(temp.begin(),temp.end());
max_elem=temp[1];min_elem=temp[0];
int maximum=temp[temp.size()-1];
//cout<<max_elem<<" "<<min_elem<<"\n";
while(r<n && max_elem+min_elem >= maximum)
{
//cout<<max_elem<<" "<<min_elem<<" "<<inp[r]<<"\n";
cnt++;
r++;
if(inp[r]<min_elem) {max_elem=min_elem;min_elem=inp[r];}
else if(inp[r]<max_elem) max_elem=inp[r];
else if(inp[r]>maximum) maximum=inp[r];
}
}
cout<<cnt<<"\n";
示例 TC:
I1:
5
7 6 5 3 4
O1:
6
说明:
6 个子数组满足条件:(7,6,5),(7,6,5,3),(7,6,5,3,4),(6,5,3) ,(6,5,3,4),(5,3,4)。
I2:
5
1 2 3 5 6
O2:
3
说明:
(1,2,3),(2,3,5),(3,5,6) --(注意:1,2,3,5 不是答案,因为 1+2
【问题讨论】:
-
如果有问题的链接或屏幕截图将使问题更清晰。
-
你能告诉我我的问题中有什么不清楚的地方吗?我会添加它以澄清?
-
我添加了示例TC,现在清楚了吗?
标签: arrays algorithm loops coding-efficiency time-limiting