2019 ACM训练计划——( 每天5题 ) 训练计划15

A

Codeforces Round #126 (Div. 2), problem: (B) Drinks


题目大意

求等体积混合后的体积分数


题解

水题,其实就是求平均值

#include<bits/stdc++.h>
using namespace std;
double n;
int main(){
    cin>>n;
    double x=0.0,sum=0.0;
    for(int i=0;i<n;i++){
        cin>>x;
        sum+=x;
    }
    cout<<sum/n<<endl;
    return 0;
}

B

Codeforces Round #164 (Div. 2), problem: (A) Games


题目大意

比赛有主场和客场,主场穿上主场的服饰,客场穿上客场的服饰,如果主场和客场的服饰颜色相同就穿客场的衣服,问要穿多少次


题解

用一个数组存主场的服饰,用另一个数组存客场服饰出现次数,直接暴力即可

#include<bits/stdc++.h>
using namespace std;
const int maxn=110;
int a[maxn],b[maxn],n,x,y;
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x>>y;
        a[i]=x,b[y]++;
    }
    int ans=0;
    for(int i=0;i<n;i++)
        ans+=b[a[i]];
    cout<<ans<<endl;
    return 0;
}

C

Codeforces Round #266 (Div. 2) A. Cheap Travel


题目大意

给你n m a b n代表要乘n次车 m代表有一种特殊票可以做m次 a 代表普通票一次a元 b代表特殊票的价格b元


题解

首先看特殊票的次数与普通票比是否便宜 便宜当然尽可能选特殊票 然后最后看剩下几张票 与普通票的总价格相比较看谁需要的钱少选谁

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,a,b;
    cin>>n>>m>>a>>b;
    if(m*a<=b){
        cout<<n*a<<endl;
    }else if(m>=n){
        cout<<min(n*a,b)<<endl;
    }
    else {
        int k=n/m;
        int ans=k*b;
        k=n%m;
        ans+=min(k*a,b);
        cout<<ans<<endl;
    }
    return 0;
}

D

Codeforces Round #310 (Div. 2), problem: (A) Case of the Zeros and Ones


题目大意

给你一段字符串,对于相邻的两个数字如果是0和1的话,就能进行消除,问最后还有多长的字符串


题解

贪心

将第一个字符作为起始比较符,依次进行比较,其实我用的是异或操作,看最后结果有多少个1 然后乘以2 就是我们求得的删除字符的个数 最后求剩余多少

#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main(){
    cin>>n>>s;
    int ans=s[0]-'0';
    int len=0;
    for(int i=1;i<n;i++){
        int k=ans^(s[i]-'0');
        if(k==1){
            k=ans;
            len++;
        }
    }
    cout<<abs(n-len*2)<<endl;
    return 0;
}

E

Codeforces Round #165 (Div. 2), problem: (A) Fancy Fence


题目大意

给度数a,问有没有内角a的正多边形


题解

设边数n则度数为(n-2)*180/n==a;注意n<=2,没两边型

#include<bits/stdc++.h>
using namespace std;
int t,a;
int main(){
    cin>>t;
    while(t--){
        cin>>a;
        if(360%(180-a)==0){
            if(360/(180-a)>2)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
            cout<<"NO"<<endl;
    }
    return 0;
}
学如逆水行舟,不进则退
一百个Chocolate CSDN认证博客专家 CSDN博客专家 博客之星 前端开发攻城狮
JS,TS,LeetCode,Vue,React,算法爱好者。
主要分享前端知识,立志成为优秀前端博主。
座右铭:学如逆水行舟,不进则退!
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值