c++ - 分配任务的方式数
问题描述
问题陈述:你有 n 个人围成一圈坐着。每个人都有一个技能值 arr[i]。您希望将人员分配给这些任务。为特定任务选择的人员必须全部连续坐着,并且他们的技能差距(最大到最小)的差异不得超过 K。此外,每个人都必须被分配一个任务。以 1e9+7 为模,将任务分配给所有人的方法有多少 如果我和 j 以不同的方式执行相同的任务,则认为两种方式不同。
示例输入:n=2
k=2
arr[]= {1,2}
样本输出:2
解释:有 2 种方法,1 和 2 做相同的任务或不做。两者都是有效的陈述。
我被困在这个问题上。早些时候我试图这样解决它:
//assuming necessary header files
int solve(int arr[], int n, int k){
map<int,vector<int>> mp;
for(int i=1;i<n;++i){
int temp= abs(arr[i]-arr[i-1]);
if(temp<=k)[
mp[temp].push_back(arr[i]);
mp[temp].push_back(arr[i-1]);
]
}
int ans=0;
for(auto it: mp){
vector<int> p= it.second;
int szz= p.size();
ans+= 2*(szz*(szz-1))/2;
}
return ans;
}
int main() {
int n,k;
cin>>n>>k
int arr[n];
for(int i=0;i<n;++i){
cin>>arr[i];
}
cout<<solve(arr,n,k)<<endl;
return 0;
}
我的方法是将所有技能差距小于 k 的连续人员存储在一个键值对中,然后返回每个键值对大小的两倍。我得到了错误的答案判决。要么我无法清楚地理解这个问题,要么我以错误的方式实施了它。任何人都可以更正它并让我知道正确的解决方案吗?谢谢
解决方案
推荐阅读
- apache-spark - 用于聚合的 PySpark UD(A)F 非常慢
- javascript - 使用 javascript 和 php 提交选择选项
- javascript - 如何在 Firestore 中处理多个相关的异步查询
- c# - “warp(Vector3)”必须声明一个主体,因为它没有标记为抽象、外部或部分
- next.js - NextJS 构建失败但没有说明原因
- django - 如何使用两个下拉列表的 ModelChoiceFields 根据 Django 中第一个下拉列表中的选定值填充第二个下拉列表中的选项
- javascript - 更改单词的字母重新格式化整个 html
- python - 如何将 3D nii 多类蒙版图像文件转换为 2D .png 图像
- django - Django 3.1+: (fields.E180) SQLite 不支持 JSONFields
- android - 无法在 Kotlin 中制作通用项目