• NOIpDay1T2 国王游戏 高精度+贪心


    很强的高精   唐神的板子好用又好看   %Candy?

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cstring>
      4 #include<algorithm>
      5 
      6 using namespace std;
      7 
      8 const int B = 10000;
      9 
     10 struct Big{
     11     int n,a[1010];
     12     int& operator [](int x){return a[x];}
     13     Big():n(1){memset(a,0,sizeof(a));}
     14     void ini(int x){a[1] = x;n = 1;}
     15 };
     16 
     17 Big operator *(Big a,int b){
     18     int g = 0;
     19     for(int i = 1;i <= a.n;i++)
     20         g += a[i]*b,a[i] = g%B,g /= B;
     21     while(g)a[++a.n] = g%B,g /= B;
     22     return a;
     23 }
     24 
     25 Big operator *(Big a,Big b){
     26     Big c;
     27     for(int i = 1;i <= a.n;i++){
     28         int g = 0;
     29         for(int j = 1;j <= b.n;j++)
     30             g += c[i+j-1]+a[i]*b[j],c[i+j-1] = g%B,g /= B;
     31         c[i+b.n] = g;
     32     }
     33     c.n = a.n+b.n;
     34     while(c.n > 1&&c[c.n] == 0)c.n--;
     35     return c;
     36 }
     37 
     38 Big operator +(Big a,Big b){
     39     int g = 0,n = max(a.n,b.n);
     40     for(int i = 1;i <= n;i++){
     41         g += i<=a.n? a[i]:0;
     42         g += i<=b.n? b[i]:0;
     43         a[i] = g%B,g /= B;
     44     }
     45     a.n = n;
     46     if(g)a[++a.n] = g;
     47     return a;
     48 }
     49 
     50 Big operator -(Big a,Big b){
     51     for(int i = 1;i <= b.n;i--){
     52         if(a[i] < b[i])a[i+1]--,a[i] += B;
     53         a[i] -= b[i];
     54     }
     55     int p = b.n+1;
     56     while(a[p] < 0)a[p] += B,a[++p]--;
     57     while(a.n > 1&&a[a.n] == 0)a.n--;
     58     return a;
     59 }
     60 
     61 void print(Big a){
     62     printf("%d",a[a.n]);
     63     for(int i = a.n-1;i >= 1;i--)printf("%04d",a[i]);
     64 }
     65 
     66 bool operator <(Big a,Big b){
     67     if(a.n^b.n)return a.n < b.n;
     68     for(int i = a.n;i >= 1;i--)if(a[i]^b[i])return a[i] < b[i];
     69     return false;
     70 }
     71 
     72 Big operator /(Big a,int b){
     73     Big c; int r = 0;
     74     for(int i = a.n;i > 0;i--)
     75         a[i] += r*B,r = a[i]%b,a[i] /= b;
     76     while(a[a.n] == 0&&a.n > 1)a.n--;
     77     return a;
     78 }
     79 
     80 struct node{
     81     int l,r;
     82     bool operator <(const node& x)const{
     83         return l*r < x.l*x.r;
     84     }
     85 }prs[10010];
     86 
     87 Big sum,ans,cur;
     88 int n,m;
     89 
     90 int main(){
     91     cin >> n;
     92     for(int i = 0;i <= n;i++)cin >> prs[i].l >> prs[i].r;
     93     sort(prs+1,prs+n+1);
     94     sum.ini(prs[0].l);
     95     for(int i = 1;i <= n;i++){
     96         ans = max(ans,sum/prs[i].r);
     97         sum = sum*prs[i].l;
     98     }
     99     print(ans);
    100 return 0;
    101 }
    View Code
  • 相关阅读:
    bcrypt加密算法原理和应用
    spring security 防止iframes攻击
    angularjs在eclipse下不要随意ctrl+shift+f缩进代码
    第五章 容器之元组
    第五章 容器之列表
    第四章 函数
    第3章 编程概论
    mysql排序分组
    数据表的基本操作
    数据库基本操作
  • 原文地址:https://www.cnblogs.com/Wangsheng5/p/11664072.html
Copyright © 2020-2023  润新知