xjoi奋斗群群赛6

这里写图片描述

如图

[TOC]
https://vjudge.net/contest/184118#problem

A - Fraction CodeForces - 854A

题意

  • 给出一个分子分母的和,求出分子分母互质的最大分数

题解

#include<iostream>
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main(){
    int l,r,n;cin>>n;
    if(n&1){
        l=n/2;r=n/2+1;
    }
    else {
        l=n/2-1;r=n/2+1;
    }
    while(gcd(r,l)>1){
        l--;r++;
    }
    cout<<l<<" "<<r;
}

B - Maxim Buys an Apartment CodeForces - 854B

题意

  • 一个一个长度为n的数组中有k个1,剩下的是0.组合方式未定.
  • 所谓好点为自身是0,旁边至少有一个1的点.
  • 求所给的n,k最少和最多能产生多少好点.

题解

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k;cin>>n>>k;
    if(k==0||k==n)cout<<"0 0";
    else cout<<1<<" "<<min(n-k,2*k);
}

C - Planning CodeForces - 854C

题意

  • 飞机场,有n架飞机,每分钟一架飞机出发,第i架飞机延误一分钟的代价是c[i],现在要延误k分钟,使每架飞机调整后的时间不在调整前之前.

思路

  • 用优先队列priority_queue,把队列中最大的数与外面交换.

题解

#include<bits/stdc++.h>
using namespace std;
int t[300005],c[300005],n,k,i,j,a1,a2;
long long int tot=0;
priority_queue <pair<int,int> > p;
pair <int,int> x;
int main(){ 
    scanf("%d %d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%d",&c[i]);
    for(i=1;i<=k;i++)
        p.push({c[i],i});
    for(i=k+1;i<=k+n;i++)
    {
        if(i<=n)p.push({c[i],i});
        x=p.top();p.pop();
        tot+=1LL*(1LL*i-x.second)*x.first;
        t[x.second]=i;
        if(p.empty())break;
    }
    printf("%lld\n",tot);
    for(i=1;i<=n;i++)
        printf("%d ",t[i]);
}

D - Jury Meeting CodeForces - 854D

见上图.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值