zoukankan      html  css  js  c++  java
  • 【Codeforces Round #301 (Div. 2) B】 School Marks

    【链接】 我是链接,点我呀:)
    【题意】

    已知k门成绩. 总共有n门成绩. 让你构造剩下的n-k门成绩,使得这n门成绩的中位数>=y,并且这n门成绩的和要小于等于x. n为奇数

    【题解】

    首先判断k门成绩的和是不是小于等于x. 然后x-sum就是剩下的n-k个数字最多能填的和。 可以这样。 既然中位数要大于等于y; 那么转化为让(n+1)/2个数字都大于等于p; 则在剩下的n-k个位置凑足(n+1)/2个p就够了。 凑够了就都用1填就好。

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 1e3;
    
    int n,k,p,x,y;
    int a[N+10];
    vector <int> v;
    
    void wujie(){
    	puts("-1");
    	exit(0);
    }
    
    void buqi(int pos,int rest){
    	for (int i = pos;i <= n;i++){
    		v.push_back(1);
    		rest--;
    		if (rest<0) wujie();
    	}
    }
    
    int main(){
    	#ifdef LOCAL_DEFINE
    	    freopen("rush_in.txt", "rt", stdin);
    	#endif
    
    	scanf("%d%d%d%d%d",&n,&k,&p,&x,&y);
    	for (int i = 1;i <= k;i++) 		scanf("%d",&a[i]);
        int sum1 = 0;
        for (int i = 1;i <= k;i++) sum1+=a[i];
    
        if (sum1 > x) wujie();
        int rest = x - sum1;
        if (rest < (n-k)) wujie();
        int num = 0;       	
        for (int i = 1;i <= k;i++)
        	if (a[i]>=y) num++;
    
        if (num>=(n+1)/2) 
        	buqi(k+1,rest);
        else{
        	int need = (n+1)/2 - num;
        	int i;
        	bool flag = true;
    
        	for (i = k+1;i <= n;i++){
        		if (rest>=y){
        			v.push_back(y);
        			rest-=y;
        			need--;
        			if (need==0) break;
        		}else{
        			flag = false;
        			break;
        		}
        	}
        	if (flag && need==0){
        		if (i+1<=n) buqi(i+1,rest);
        	}else wujie();
    	}
    	for (int i = 0,first = 1;i < (int) v.size();i++){
    		if (!first) putchar(' ');
    		first = 0;
    		printf("%d",v[i]);
    	}	
    	return 0;
    }
    
  • 相关阅读:
    Linux 让终端走代理的几种方法
    golang 项目框架开发
    tensorflow + python + keras 版本对应关系
    Mac OS X下的ldd工具——otool
    jumpserver的安装
    golang 设置代理
    mac install Docker version 19.03.8
    SpringBoot + Spring Cloud Eureka 服务注册与发现
    SpringBoot + Spring Cloud Consul 服务注册和发现
    前端实现大文件上传
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7768354.html
Copyright © 2011-2022 走看看