100分但是有些疑惑,想请大家帮忙看看

P1161 开灯

```cpp #include <iostream> #include<vector> #include<cmath> using namespace std; int main(){ int n = 0; cin >> n; vector<double>a(n,0); vector<int>t(n, 0); vector<double>a_t(n, 0); for (int i = 0; i < n; i++) { cin >> a[i] >> t[i]; a_t[i] = a[i] * t[i]; }//三个数组的值输入完毕 for (int i = 0; i < n - 1; i++) { if (a_t[i] > a_t[i + 1]) { a_t[i + 1] = a_t[i]; } }//找出了数组需要的最大数量a_t[i + 1] vector<bool>light(ceil(a_t[n - 1]), 0); for (int i = 0; i < n; i++) { for (int j = 0; j < t[i]; j++) {//t[i]代表第i+1个t的大小 if (light[floor(a[i] * (t[i]-j))-1] == 1) { light[floor(a[i] * (t[i] - j)) - 1] = 0; } else { light[floor(a[i] * (t[i] - j)) - 1] = 1; }//转换轮到的开关状态 } } for (int i = 0; i < ceil(a_t[n - 1]); i++) { if (light[i]) { cout << i + 1; break; } } std::system("pause"); return 0; } ```
by AliLovePeach @ 2023-11-02 21:14:38


@[AliLovePeach](/user/1180674) 还没仔细看,通常是精度不够的问题
by cff_0102 @ 2023-11-02 21:16:01


都说了是6位
by TT666_ @ 2023-11-30 22:21:27


|