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;
    }
    
  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7768354.html
Copyright © 2011-2022 走看看