【CF 732E】Sockets(优先队列+贪心)

题目大意:
n台电脑,m个供电器。
每台电脑和每个供电器都有电量,当电脑i的电量和供电器j电量相同时,可以连接供电。

现在提供变压器,可以连接到供电器上,每个变压器会将电量变为⌈x2⌉\lceil \frac{x}{2} \rceil变压器可以累加。提供无限个变压器。

现在问最多能使多少台电脑供上电,输出最多的可供电电脑数,最少使用的变压器数。之后输出每个电源上安装的变压器数量,以及每个电脑连接到的电源编号(0表示不连接电源)

优先队列存结构体,表示电源。
结构体中有电源编号,当前电量以及使用的变压器数量。

电量大的在堆顶,相同的变压器用的少的在堆顶。

电脑按电量从大到小排序,然后遍历一遍电脑,能按电源就安。然后就没了

代码如下:

#include <iostream>
#include <cmath>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <list>
#include <algorithm>
#include <map>
#include <set>
#define LL long long
#define VI vector<int>
#define Pr pair<int,int>
#define fread(ch) freopen(ch,"r",stdin)
#define fwrite(ch) freopen(ch,"w",stdout)using namespace std;
const int INF = 0x3f3f3f3f;
const int msz = 10000;
const int mod = 1e9+7;
const double eps = 1e-8;
const int maxn = 212345;struct Stock
{int id,power,cnt;bool operator >(const struct Stock a)const{return power == a.power? cnt > a.cnt: power < a.power;}
} s[maxn];struct Computer
{int id,power;
} com[maxn];int ned[maxn];
int ans[maxn];
priority_queue <Stock,vector<Stock>,greater<Stock> > q;bool cmp(Computer a,Computer b)
{return a.power > b.power;
}int main()
{//fread("in.in");//fread("out.out");int n,m;scanf("%d%d",&n,&m);for(int i = 1; i <= n; ++i) {scanf("%d",&com[i].power);com[i].id = i;}sort(com+1,com+n+1,cmp);for(int i = 1; i <= m; ++i){scanf("%d",&s[i].power);s[i].id = i;s[i].cnt = 0;q.push(s[i]);}Stock tmp;int x;LL c,u;c = u = 0;for(int i = 1; i <= n; ++i){while(!q.empty()){tmp = q.top();if(tmp.power <= com[i].power) break;q.pop();tmp.cnt++;x = (int)ceil(tmp.power*1.0/2);if(x == tmp.power) continue;tmp.power = x;q.push(tmp);}if(!q.empty()){tmp = q.top();if(tmp.power < com[i].power) continue;q.pop();u += tmp.cnt;c++;s[tmp.id].cnt = tmp.cnt;ans[com[i].id] = tmp.id;}}printf("%lld %lld\n",c,u);for(int i = 1; i <= m; ++i) printf("%d ",s[i].cnt);puts("");for(int i = 1; i <= n; ++i) printf("%d ",ans[i]);puts("");return 0;
}

【CF 732E】Sockets(优先队列+贪心)相关推荐

  1. LeetCode 1642. 可以到达的最远建筑(二分查找 / 优先队列贪心)

    文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 优先队列+贪心 1. 题目 给你一个整数数组 heights ,表示建筑物的高度.另有一些砖块 bricks 和梯子 ladders . 你 ...

  2. CF(Div. 1 + Div. 2) E. Carrots for Rabbits(优先队列+贪心)

    原题链接 题意: 给你n个数,要你把n个数切成k个.求切后最小平方和. 题解 一开始就想着把每个数放进优先队列里,然后把最大的平分,再放回去.但这样是错的.如1 3 100 :33 33 34会更好. ...

  3. POJ3614Sunscreen(优先队列+贪心)

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8435   Accepted: 2981 Descrip ...

  4. *【HDU - 5711】Ingress(tsp旅行商问题,优先队列贪心,状压dp,floyd最短路,图论)

    题干: Brickgao, who profited from your accurate calculating last year, made a great deal of money by m ...

  5. LeetCode 1199. 建造街区的最短时间(优先队列贪心)

    文章目录 1. 题目 2. 解题 1. 题目 你是个城市规划工作者,手里负责管辖一系列的街区.在这个街区列表中 blocks[i] = t 意味着第 i 个街区需要 t 个单位的时间来建造. 由于一个 ...

  6. hdu 4544 优先队列+贪心

    题意:最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为 ...

  7. 51Nod - 1475 优先队列 + 贪心

    题意: 小C现在想建设一个国家.这个国家中有一个首都,然后有若干个中间站,还有若干个城市. 现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都(首都也是一个中 ...

  8. poj 3614 Sunscreen(优先队列+贪心)

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  9. BZOJ 2288: 【POJ Challenge】生日礼物 优先队列+贪心+链表

    这题看别人题解的 这题说可以转换成数据备份. 这题可以把一段同号的数并成一个数,那么就变成了一个正负交替的序列,然后把头尾的负数去掉. 然后就是把所有的正值都加起来,并统计正数的段数cnt,如cnt& ...

最新文章

  1. java 读取excel_Java12POI操作Excel
  2. [置顶] Android代码----android获取3G或wifi流量信息
  3. linux centos7 /tmp目录 自动清理规则
  4. 剑指offer-week1
  5. 五十六、Java的json解析库Json-lib和Gson
  6. 3d000: no database selected_No.[C9]020
  7. linux常用架构,Linux常用到的一些命令-Go语言中文社区
  8. HttpApplication的认识与加深理解
  9. 半学期学计算机有感论文,【计算机学习心得论文】_计算机学习心得论文参考资料-毕业论文范文网...
  10. 【论文笔记】Convolutional Neural Networks for Sentence Classification
  11. 金融评分卡项目—8.逻辑回归模型在申请评分卡中的应用
  12. 软件测试通过标准是什么?
  13. 家用千兆路由器排行榜前十名_公认最好的路由器牌子
  14. 那些SAP项目里的主流外围系统
  15. 妇女节手抄报Word电子小报
  16. 简单的VUE购物车应用
  17. SM敏捷实践经验总结
  18. 谈一谈对新技术的态度
  19. 3D计算机图形学零起点全攻略
  20. 真题训练1-算法思维训练

热门文章

  1. iOS 的看门狗机制
  2. (AI)Illustrator 2020安装教程
  3. 游戏出海加速度,腾讯、网易“快吃慢咽”
  4. 程序的世界里,短暂的放空
  5. Cocos2dx3.10常侍之移驾UBUNTU
  6. 机器视觉技术助力工业物联网发展,起到核心作用。
  7. 将图片和文字写到pdf文件中
  8. C. Ehab and Path-etic MEXs(思维+构造)
  9. Go语言学习笔记之基础语法(一)
  10. STC89c51利用esp8266发微信消息,POST例程