QFNU-ACM 2020.10.16 Trating

B - Power Sequence

 CodeForces - 1397B 

根据题意可以知道,当c等于1的时候,有最大的差值。则当每次暴力的时候,和大于10^9*10^5的时候就可以直接break了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;

ll n,a[MAXN];
int main(){
    cin>>n;
    memset(a,0,sizeof(a));
    for(int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    ll ans=1000000000000000000;
    
    for(int i =1;i<=100000;i++){
        ll pp=1,nn=0;
        int flag=1;
        for(int j =0;j<n;j++){
            if(pp>100000000000000) {
                flag=0;
                break;
            }
            nn+=abs(pp-a[j]);
            pp*=i;
        }
        if(flag) ans=min(ans,nn);
    }
    cout<<ans<<endl;
    return 0;
}

D - Drinks Choosing

 CodeForces - 1195A

自己想的太麻烦了,主要还是没理解透题意。后来一直忘记初始化数组。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;


int main(){
    int n,m,pot,k[1007];
    
    cin>>n>>m;
    memset(k,0,sizeof(k));
//    cout<<pot<<"#@##"<<endl;
    for(int i =0;i<n;i++){
        int x;
        cin>>x;
        k[x]++;
    }

    int ans=0;
    int good=0,bad=0;
    for(int i =1;i<=m;i++){
        bad += k[i]%2; 
        good += k[i]/2*2;
    }
    ans = good+(bad+1)/2;
    cout<<ans<<endl;
    
    return 0;
}

F - Basketball Exercise

 CodeForces - 1195C

动态规划,没什么好说的,找到公式就好做了,但是注意是两个数组来回动态存答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;

ll n,a[MAXN],b[MAXN],up[MAXN],down[MAXN]; 

int main(){
    cin>>n;
    for(int i =1;i<=n;i++)
        cin>>a[i];
    for(int i =1;i<=n;i++)
        cin>>b[i];

    down[0]=up[0]=0;
    for(int i =1;i<=n;i++){
        up[i]=max(down[i-1]+a[i],up[i-1]);
        down[i]=max(up[i-1]+b[i],down[i-1]);
    }
    cout<<max(up[n],down[n])<<endl;
    
    return 0;
}

 

posted @ 2020-10-21 20:07  Leviathan_Sei  阅读(84)  评论(0)    收藏  举报