城市商业街主干道是一条笔直的道路,商业街里有 n 家店铺,现给定 n 个店铺的位置,请在这条道路上找到一个中心点,使得所有店铺到这个中心点的距离之和最小,并输出这个最小值。
#include <bits/stdc++.h>
using namespace std;
int a[100000];
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a+0,a+n);
int i=0;
int sum=0;
int j=n-1;
while(i<j){
sum=sum+(a[j]-a[i]);
i++;
j--;
}
cout<<sum;
return 0;
}
图书馆的书籍分类系统使用二进制标签管理,0 代表儿童读物,1 代表青少年书籍。管理员发现当前的书架排列中不允许出现青少年书籍之后连接儿童读物的情况(即 10 子串)。管理员每次可以交换任意两本书的位置。请计算让书架符合规定所需的最少操作次数。
#include <bits/stdc++.h>
using namespace std;
string s;
int main()
{
cin>>s;
int n=s.size();
int cnt=0;
for(int i=0;i<n;i++){
if(s[i]=='0') cnt++;
}
int cnt1=0;
for(int i=0;i<cnt;i++){
if(s[i]=='1') cnt1++;
}
cout<<cnt1;
return 0;
}
你收集了 n 张卡片,按照收集的时间顺序编号 1 到n 并依次排列,每张卡片上标有一个数值。现在突发奇想,想知道在这些卡片中,若每次挑选两张卡片,会有多少对不同的组合满足两张卡片的数值和恰好为 0,请你计算出符合条件的卡片组合的数量。
#include <bits/stdc++.h>
using namespace std;
int a[10000];
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a+0,a+n);
int i=0;
int j=n-1;
int cnt=0;
while(i<j){
if(a[i]+a[j]==0)
{cnt++;
i++;
j--;
}
else if(a[i]+a[j]>0){
j--;
}
else if(a[i]+a[j]<0){
i++;
}
}
cout<<cnt;
return 0;
}