"
国王游戏:
1 #include
2 #include
3 #include
4 #include
5 using namespace std;
6 const int maxn=100007;
7 const int maxm=200007;
8 int a【maxn】,b【maxn】;
9 int ans【maxm*10】;
10 int now,num,l=1;
11 void multi(int x){
12 for(int i=1;i<=l;i++) ans【i】*=a【x】;//1~l 低位到高位
13 for(int i=1;i<=l;i++){
14 ans【i+1】+=(ans【i】/10);
15 ans【i】%=10;
16 }
17 l++;//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjYzNDkxNg==.html
18 while(ans【l】>9)
19 {
20 ans【l+1】+=(ans【l】/10);
21 ans【l】%=10;
22 l++;
23 }//if(ans【l+1】>0) l++;这样是错的,因为ans【l】可能很大
24 }
25 void divis(int x){
26 for(int i=l;i>=1;i--){
27 ans【i-1】+=((ans【i】%b【x】)*10);
28 ans【i】/=b【x】;
29 }
30 while(ans【l】==0) l--;
31 if(l==0) cout[1[endl;
32 }
33 int main(){
34 int n;cin]n;
35 cin]a【0】]b【0】;
36 for(int i=1;i<=n;i++){
37 cin]a【i】]b【i】;
38 }
39 int aa=0,bb=0;
40 for(int i=1;i<=n;i++){
41 if(a【i】*b【i】>aa){
42 aa=a【i】*b【i】;
43 bb=i;
44 }
45 }
46 l=1;
47 ans【1】=a【0】;
48 for(int i=1;i<=n;i++)
49 if(i!=bb) multi(i);
50 divis(bb);
51 for(int i=l;i>=1;i--) cout[ans【i】;
52 cout[endl;
53 return 0;
54 }
保护花朵:
国王游戏的题解不好好看,到这就想不到用结构体......
要开long long啊......
1 #include
2 #include
3 #include
4 using namespace std;
5 const int maxn=1e5+7;
6 int n,tt;
7 long long ans;
8 struct Node{
9 int t,d;
10 double a;
11 }node【maxn】;
12 bool cmp(Node x,Node y){
13 return x.a[span //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDE5NzM2NA==.html
style=""color: rgba(0, 0, 0, 1)"">y.a;14 }
15 int main(){
16 cin]n;
17 for(int i=1;i<=n;i++){
18 cin]node【i】.t]node【i】.d;
19 node【i】.t*=2;
20 node【i】.a=(double)node【i】.t/node【i】.d;
21 }
22 sort(node+1,node+n+1,cmp);
23 for(int i=1;i<=n;i++){
24 ans+=tt*node【i】.d;
25 tt+=node【i】.t;
26 }
27 cout[ans[endl;
28 return 0;
29 }
"