Codeforces Round #544 (Div. 3) (A~D)

Codeforces Round #544 (Div. 3)

A. Middle of the Contest

题意:给两个时刻,求中间时刻。

思路:计算出总的分钟数/2即可,注意输出格式!

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,c,d;
    scanf("%d:%d",&a,&b);
    scanf("%d:%d",&c,&d);
    int t1=a*60+b,t2=c*60+d;
    int sum=(t1+t2)/2;
    printf("%02d:%02d\n",sum/60,sum%60);
    return 0;
}

B. Preparation for International Women's Day

题意:有n个数,记作d[i].能够使用组成多少对,使得每一对的和都能整除k。求最后用到的数的个数。

思路:记录%k的数分别有多少个,计算对数即可,注意判断边界。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
int a[maxn],d[maxn];
int main(){
    int n,k,x;
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>x,a[x%k]++;
    int res=a[0]/2;
    for(int i=1;i<k/2;i++){
        int minn=min(a[i],a[k-i]);
        res+=minn;
        a[i]-=minn;
        a[k-i]-=minn;
    }
    if(k%2==0) res+=a[k/2]/2;
    else res+=min(a[k/2],a[k-k/2]);
    cout<<res*2<<endl;
    return 0;
}

C. Balanced Team

题意:给n个数,可以从中选1~n个数,但是极差不能超过5,问最多可以选几个数。

思路:排序后 对于每一个数二分查找符合条件的,最后取max即可。

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;cin>>n;
    vector<int>v;
    for(int i=1;i<=n;i++){
        int x;cin>>x;
        v.push_back(x);
    }
    sort(v.begin(),v.end());
    int res=0;
    for(int i=0;i<n;i++){
        int w=upper_bound(v.begin(),v.end(),v[i]+5)-v.begin();
        res=max(res,w-i);
    }
    cout<<res<<endl;
    return 0;
}

D. Zero Quantity Maximization

题意:给两个数组a,b,构造一个数组c,使得c[i]=a[i]*d+b[i]

找到一个d使得c数组有最多0,求出0的最多个数。

思路:

就是求斜率相同的最大个数,用map统计一下b/a的个数取max即可。

细节挺多的:1.要用long double 2.特判一下a==0或b==0的情况,如果a==0&&b==0直接加到结果里就好。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+100;
int a[maxn];
long double b[maxn];
map<long double,int>mp;

int main(){
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    int res=0,tmp=0;
    for(int i=1;i<=n;i++){
        if(a[i]==0){
            if(b[i]==0){
                tmp++;
            }
            continue;
        }
        long double x=b[i]/a[i];
        mp[x]++;
        res=max(res,mp[x]);
    }
    res+=tmp;
    cout<<res<<endl;
    return 0;
}
全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务