首页 > 其他分享 >Codeforces Global Round 14, C. Phoenix and Towers

Codeforces Global Round 14, C. Phoenix and Towers

时间:2023-02-08 16:07:03浏览次数:45  
标签:towers blocks 14 Phoenix Towers height int test tower


problem

C. Phoenix and Towers
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Phoenix has n blocks of height h1,h2,…,hn, and all hi don’t exceed some value x. He plans to stack all n blocks into m separate towers. The height of a tower is simply the sum of the heights of its blocks. For the towers to look beautiful, no two towers may have a height difference of strictly more than x.

Please help Phoenix build m towers that look beautiful. Each tower must have at least one block and all blocks must be used.

Input
The input consists of multiple test cases. The first line contains an integer t (1≤t≤1000) — the number of test cases.

The first line of each test case contains three integers n, m, and x (1≤m≤n≤105; 1≤x≤104) — the number of blocks, the number of towers to build, and the maximum acceptable height difference of any two towers, respectively.

The second line of each test case contains n space-separated integers (1≤hi≤x) — the heights of the blocks.

It is guaranteed that the sum of n over all the test cases will not exceed 105.

Output
For each test case, if Phoenix cannot build m towers that look beautiful, print NO. Otherwise, print YES, followed by n integers y1,y2,…,yn, where yi (1≤yi≤m) is the index of the tower that the i-th block is placed in.

If there are multiple solutions, print any of them.

Example
inputCopy
2
5 2 3
1 2 3 1 2
4 3 3
1 1 2 3
outputCopy
YES
1 1 1 2 2
YES
1 2 2 3
Note
In the first test case, the first tower has height 1+2+3=6 and the second tower has height 1+2=3. Their difference is 6−3=3 which doesn’t exceed x=3, so the towers are beautiful.

In the second test case, the first tower has height 1, the second tower has height 1+2=3, and the third tower has height 3. The maximum height difference of any two towers is 3−1=2 which doesn’t exceed x=3, so the towers are beautiful.

solution

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{
int v, id;
bool operator < (node b)const{return v>b.v;}
};
int h[maxn], cc[maxn];
int main(){
int T; cin>>T;
while(T--){
//memset(h,0,sizeof(h));
int n, m, x; cin>>n>>m>>x;
priority_queue<node>q;
for(int i = 1; i <= n; i++){
int t; cin>>t; q.push({t,i});
h[i] = 0;
}
int be = 1;
while(q.size()){
node t = q.top(); q.pop();
h[be] += t.v;
cc[t.id] = be;
be++;
if(be==m+1)be = 1;
}
int mx = 0, mi = 1e9+10;
for(int i = 1; i <= m; i++){
mx = max(mx, h[i]);
mi = min(mi, h[i]);
}
if(mx-mi > x)cout<<"NO\n";
else {
cout<<"YES\n";
for(int i = 1; i <= n; i++)
cout<<cc[i]<<" ";
cout<<"\n";
}
}
return 0;
}


标签:towers,blocks,14,Phoenix,Towers,height,int,test,tower
From: https://blog.51cto.com/gwj1314/6044562

相关文章

  • Codeforces Global Round 14, D. Phoenix and Socks
    problemD.PhoenixandSockstimelimitpertest2secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputTosatisfyhisloveofmat......
  • 【CCCC】L3-014 周游世界 (30分),,DFS搜索最短路,路径打印
    problemL3-014周游世界(30分)周游世界是件浪漫事,但规划旅行路线就不一定了……全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组......
  • pycharm爬虫报错:pymysql.err.DataError: (1406, "Data too long for column 'content'
     在学习爬虫的时候,获取数据存入mysql时出现了问题:pymysql.err.DataError:(1406,"Datatoolongforcolumn'content'atrow1")因为mysql也是本地搭建的,所以一时间......
  • U214268 不老不死的竹林引路人
    不老不死的竹林引路人特别感谢icyM3tra神提供的标程OrzOrzOrz。速度上总时间直接从25s(我原来的程序)飙到了5s,单个测试点最慢也只有800ms!虽然有这么快的代码,但我还......
  • 第14课、POM - Page Object
      fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.support.uiimportSelectfromselenium.w......
  • CF14D题解
    CF14DTwoPaths题解题目链接传送门题意简述给定一棵树,找出两条不经过相同点的最长路径,使得他们的长度乘积最大。题目分析首先,如果在一棵树上,两条路径没有共同的点,那......
  • C++ Day14 借助智能指针实现文本查询查询
    一、设计思路数据结构:1、读取文件时,要记住文件的每一行,并且要将每一行分解为独立的单词vector<string>vec;istringstream2、输出时提供每个单词与其关联的行号,且......
  • Educational Codeforces Round 142 E. Divisors and Table
    链接:https://codeforces.com/problemset/problem/1792/E题意:给定n*n乘法表,第a[i][j]=i*j,给定m=m1*m2,求m的所有因子中出现在表中的最小行的xor和。n<=1e9,m......
  • 训练日记 2018.12.14
        哎,这几天被树形背包搞懵了,一开始感觉没学到啥,做一个题看一个题解,每个题单个来看都能看懂,但是遇到一个新题就不会了,而且你用上一个题的做法做,依旧不对,网上的题解......
  • Codeforces Round #514 (Div. 2).A. Cashier 做了个优化 还行
    A.Cashiertimelimitpertest2secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputVasyahasrecentlygotajobasacashieratal......