2541. 使数组中所有元素相等的最小操作数 II – 力扣(LeetCode)
题目中的含义是在一个数组里面进行+k -k
但是代码里面有 ans+=abs(nums1[i]-nums2[i])/k;
说明是相当于在两个数组里面分别操作(因为前提是可以操作成功)
然后再把结果/2 就相当于在一个数组里面操作了
class Solution {
public:
long long minOperations(vector<int>& nums1, vector<int>& nums2, int k) {
long long num1=0,num2=0,ans=0;
for(long long i=0;i<nums1.size();i++)
{
num1+=nums1[i];
num2+=nums2[i];
}
if(num1!=num2)
return -1;
for(long long i=0;i<nums1.size();i++)
{
if(nums1[i]==nums2[i])
continue;
if(k==0||(nums1[i]-nums2[i])%k!=0)
return -1;
ans+=abs(nums1[i]-nums2[i])/k;
}
return ans/2;
}
};
P3370 【模板】字符串哈希 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这个题不会写(以后说不定就会了)
1020-倒水_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com)
#include<iostream>
using namespace std;
const int N=1e4+10;
double a[N],b[N];
int main()
{
int n;
cin>>n;
double t,c;
cin>>t>>c;
double T=t*c,p=c;
double mx=0,mi=1e4+10;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
T+=a[i]*b[i];
c+=b[i];
mx=max(a[i],mx);
mi=min(a[i],mi);
}
double res=T/c;
if(res<=mi)
{
puts("Possible");
printf("%.4lf",mi);
}
else if(res>=mx)
{
puts("Possible");
printf("%.4lf",res);
}
else puts("Impossible");
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131409.html