zoukankan      html  css  js  c++  java
  • cf_1293_AB

    对于A题,因为它的k是有限的,就没必要去管n的范围,只要在[n-1500,n+1500]加入k然后循环一遍就行,当然1500是随便的,想2000也行。

    一下为代码:

    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    const int mod=1e9+7;
    int vis[3000]={0};
    int main(){
        int t;
        cin>>t;
        while(t--){
            memset(vis,0,sizeof vis);
            int n,s,k;
            cin>>n>>s>>k;int i,j;
            for(i=0;i<k;i++){
                cin>>j;
                if(abs(s-j)<3000)
                vis[abs(s-j)]++;
            }
            if(vis[0]==0){
                cout<<0<<endl;
                continue;
            }
            for(int i=1;i<3000;i++){
                    if(s-i>0&&i+s<=n){
                        if(vis[i]!=2){
                    cout<<i<<endl;
                    break;
                        }
                    }else{
                        if(vis[i]!=1){
                            cout<<i<<endl;
                            break;
                        }
                    }
     
            }
        }
        return 0;
    }
    A

    而对于B题,只要发现一个规律,即每次减少一人,赚的钱总是最多即可:

    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    const int mod=1e9+7;
    int main(){
        int n;
        cin>>n;
        double sum=0;
        for(int i=n;i>0;i--){
            sum+=1.0/i;
        }
        printf("%.12f\n",sum);
        return 0;
    }
    B
  • 相关阅读:
    开课博客
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    四则运算
    冲刺二(2)
    用户体验评价
    冲刺二(1)
  • 原文地址:https://www.cnblogs.com/Ean1zhi/p/12216744.html
Copyright © 2011-2022 走看看