1 条题解
-
0
模拟
#include<bits/stdc++.h> using namespace std; const int N = 1010; int a[N]; int main(){ int n, t; //n瓶水,倒t次 cin >> n >> t; for(int i = 1; i <= n; i++) cin >> a[i]; if(n == 1){ //题目的特殊情况 for(int i = 1; i <= t; i++) cout << 1 << endl; return 0; //直接结束程序 } while(t--){ int index, ma = -1; //index记录容量最大的瓶子下标,ma记录最大容量 for(int i = 1; i <= n; i++){ if(a[i] > ma){ ma = a[i]; index = i; } } cout << index << endl; //输出瓶子的编号 a[index] = 0; //瓶子的水都倒走了,容量清零 int k = ma / (n - 1); //其他每个瓶子增加的容量 for(int i = 1; i <= n; i++) if(i != index) a[i] += k; ma = ma % (n - 1); //计算剩下的水的容量 for(int i = 1; i <= n; i++){ if(ma == 0) break; //倒完了就退出循环 if(i == index) continue; a[i]++; ma--; } } return 0; }
- 1
信息
- ID
- 508
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者