社区讨论
80分, 不明白哪有问题
P1080[NOIP 2012 提高组] 国王游戏参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m67x9p01
- 此快照首次捕获于
- 2025/01/22 21:10 去年
- 此快照最后确认于
- 2025/11/04 11:00 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4 + 10;
struct people{
int a, b;
}ps[N];
int n;
int Len = 4005;
int s[4005], t[4005], ans[4005];
inline bool cmp(people x, people y){
return max(x.a * x.b, y.b) < max(y.a * y.b, x.b);
}
inline void cheng(int d){
for (int i = 1; i <= Len; i++) s[i] *= d;
for (int i = 1; i <= Len; i++){
s[i + 1] += s[i] / 10;
s[i] %= 10;
}
}
inline void chu(int d){
memset(t, 0, sizeof(t));
int r = 0;
for (int i = Len; i >= 1; i--){
r = r * 10 + s[i];
t[i] = r / d;
r %= d;
}
}
inline bool f(){
for (int i = Len; i >= 1; i--){
if (t[i] > ans[i]) return true;
if (t[i] < ans[i]) return false;
}
return false;
}
inline void cop(){
for (int i = 1; i <= Len; i++) ans[i] = t[i];
}
inline void print(){
while (ans[Len] == 0 && Len > 1) Len--;
for (int i = Len; i >= 1; i--) cout << ans[i];
cout << "\n";
}
int main(){
cin >> n;
for (int i = 0; i <= n; i++)
cin >> ps[i].a >> ps[i].b;
sort(ps + 1, ps + 1 + n, cmp);
s[1] = 1;
for (int i = 1; i <= n; i++){
cheng(ps[i - 1].a);
chu(ps[i].b);
if (f()) cop();
}
print();
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...