题目链接:这里
题意:
有n个物品,然后有k个东西留了下来
如果x/(i-1)
//URAL 1995
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int n, k, p, a[maxn];
int main(){
scanf("%d%d%d", &n, &k, &p);
k = n-k;
int now = 1, num = 0;
for(int i = 1; i <= n; i++){
if(i <= k){
a[i] = 1;
num++;
}
else{
if(100*num >= p*(i-1)){
a[i] = now+1;
}
else{
now++;
num=i-1;
a[i] = now+1;
}
}
}
long long ans = 0;
for(int i = 1; i <= n; i++) ans += a[i];
printf("%lld\n", ans);
for(int i = 1; i <= n; i++){
printf("%d%c", a[i], i==n?'\n':' ');
}
return 0;
}
本文解析了一道关于物品分配的算法题,通过设定特定条件实现最优分配方案的计算。利用C++语言实现了该算法,并详细展示了核心代码逻辑。
443

被折叠的 条评论
为什么被折叠?



