CF140C New Year Snowmen
这道题其实吧,水,我们教练说过,不要看标签,这只是CSP第一题的题目
思路嘛,priority_queue和贪心,就这样,很水
这是代码
还有,一定要在cf上交,不然……可以看一下提交记录,有几个人的代码回来了
Code
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
const int MAXN = 1e6 + 5;
inline int read(){
int k = 0,f = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){
if (ch == '-'){
f = -1;
}
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
k = k * 10 + ch - '0';
ch = getchar();
}
return k * f;
}
inline void write(int x){
if (x < 0){
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
struct node{
int cnt,num,id;
node(){}
node(int Cnt,int Num){
cnt = Cnt,num = Num;
}
bool operator <(const node& a) const{
return cnt < a.cnt;
}
}a[MAXN];
priority_queue <node> q;
int cnt = 1;
int ans;
struct ball{
int big,mid,sma;
}k[MAXN];
bool cmp(node x,node y){
return x.num < y.num;
}
int main(){
int n;
n = read();
for (int i = 1; i <= n ; i++) a[i].num = read();
sort(a + 1,a + 1 + n,cmp);
for (int i = 1; i <= n; i++){
if (a[i].num != a[i + 1].num){
q.push(node(cnt,a[i].num));
cnt = 1;
}
else cnt++;
}
if (q.size() < 3){
printf("0");
return 0;
}
while(q.size() >= 2){
node x = q.top();q.pop();
node y = q.top();q.pop();
node z = q.top();q.pop();
x.cnt--,y.cnt--,z.cnt--;
k[++ans].big = x.num;
k[ans].mid = y.num;
k[ans].sma = z.num;
if (x.cnt) q.push(node(x.cnt,x.num));
if (y.cnt) q.push(node(y.cnt,y.num));
if (z.cnt) q.push(node(z.cnt,z.num));
}
write(ans);
putchar(10);
for (int i = 1 ; i <= ans ; i++){
int m[5];
m[1] = k[i].big;
m[2] = k[i].mid;
m[3] = k[i].sma;
sort(m + 1,m + 4);
printf("%d %d %d\n",m[3],m[2],m[1]);
}
return 0;
}
CF140C New Year Snowmen的更多相关文章
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
- 钠 GZY整理贪心
目录 CF140C New Year Snowmen CF161B Discounts P1842 奶牛玩杂技 CF140C New Year Snowmen #include <bits/st ...
- 「CF140C」 New Year Snowmen
题目链接 戳这 贪心+优先队列,只要每次将数量前三大的半径拿出来就好了,用优先队列维护一下 #include<bits/stdc++.h> #define rg register #def ...
- CF140CNew Year Snowmen
CF140C 题目大意:堆雪人,需要三个大小不同的雪球,现有\(n\)个给定大小的雪球,问最多堆多少个雪人 一个很明显的思路是把每种雪球出现的个数记录下来,然后直接扔到大根堆里面,每次选择剩下出现次数 ...
- Day3-E-New Year Snowmen CodeForces140C
As meticulous Gerald sets the table and caring Alexander sends the postcards, Sergey makes snowmen. ...
- CoderForce 140C-New Year Snowmen(贪心)
题目大意:有n个已知半径的雪球.堆一个雪人需要三个尺寸不同的雪球,问用这些雪球最多能堆多少个雪人? 题目分析:先统计一下每种尺寸的球的个数,从三种最多的种类中各取出一个堆成雪人,这样贪心能保证的到的数 ...
- CodeForces 140C New Year Snowmen(堆)
题面 CodeForces 题解 因为要保证两两不同,所以不能单纯的开堆来维护,堆维护一个二元组,个数为第一关键字,编号为第二关键字,对于一个相同的颜色,统计一下这个颜色的个数再用堆来维护就好了. # ...
- [Codeforces 140C] New Year Snowmen
[题目链接] https://codeforces.com/problemset/problem/140/C [算法] 显然 , 我们每次应优先考虑数量多的雪球 将雪球个数加入堆中 , 每次取出数量前 ...
- 【Codeforces 140C】New Year Snowmen
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 每次都选择剩余个数最多的3个不同数字组成一组. 优先消耗剩余个数多的数字 这样能尽量让剩余的数字总数比较多,从而更加可能得到更多的3个组合 [ ...
随机推荐
- zabbix配置
一:安装zabbix服务端 1.部署准备 命令:iptables -F #关闭防火墙命令:systemctl stop firewalld #关闭防火墙 设置解析,自建yum源 命令:c ...
- JS中的运算符_函数学习
js中的运算符: 算数运算符: + - * / % ++ -- 逻辑运算符: & | ! && || < > <= ...
- UESTC1977-图书馆(AC自动机应用)
M - 图书馆 Time Limit: 2000 MS Memory Limit: 256 MB Submit Status 电子科技太学图书馆创建于1956年,馆舍总面积66974平方米,各 ...
- 5分钟教你看大神操作keepalived服务
第11章 高可用服务(keepalived)的配置 11.1 高可用服务的概念 11.1.1 高可用服务总体概念 为了解决单点故障 减轻服务器的压力 11.1.2 高可用keepalived的概念 为 ...
- cl创建opencv程序
环境 win8 VS2017或VS2013 opencv 3.2.0 配制环境变量 解压opencv到某个目录,比如D:\Program\Uninstall,把设置OPENCV_HOME为D:\Pro ...
- 关于《iBoard 电子学堂》的学习及进阶方式(精 转)
关于<iBoard 电子学堂>的学习及进阶方式 <iBoard 电子学堂>自发布以来,受到广大网友的热烈关注.虽然我前期设计我花了大量精力,但能得到大家的认可,我也非常欣慰.由 ...
- 【CuteJavaScript】GraphQL真香入门教程
看完复联四,我整理了这份 GraphQL 入门教程,哈哈真香... 欢迎关注我的 个人主页 && 个人博客 && 个人知识库 && 微信公众号" ...
- Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
前言 Orleans是一个跨平台的框架,用于搭建可扩展的分布式应用程序 第一次接触Orleans还是两年前做游戏服务器的时候,用SignalR+Orleans的组合,写起代码来不要太爽. 即将进入20 ...
- kubernetes-单机实验(入门)
一.安装kubernetes 实验环境: centos7.0(建议使用7.5版本) 实验机器IP:192.168.1.4 安装方式:yum安装 需求环境:Tomcat+Mysql 1:关闭防火 ...
- web开发中浏览器跨域问题
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...