我正在尝试减少最大数量,直到用完m减少为止。为此,我认为该套件是最佳解决方案,因此我尝试了它。没用这是我第一次遇到这样的错误。有什么办法可以改变元素的“可变性”。如果您有更好的解决方案的建议,请随时回答。
set<pair<float, long int>> t;
long unsigned n, m;
scanf("%lu%lu", &n, &m);
for (long unsigned i = 0; i < n; i++)
{
float p;
scanf("%f", &p);
t.insert({p, 1});
}
m -= n;
while (m)
{
(*--t.end()).second++;
(*--t.end()).first *= ((*--t.end()).second - 1) / (*--t.end()).second;
m--;
}
有没有办法改变元素的“可变性”
不是集合的元素。他们总是const。您不能修改它们。
您可以做的是复制元素,从集合中删除元素,然后插入修改后的值。
P.S。代替(*--t.end())
,使用t.back()