CF Stressful training优先队列加二分搜答案
明显的二分搜答案,整体思路很好把握,但是2300分的题,总归有点门头的。
如果是裸的二分搜答案,我们只需要longlong右边界,然后二分答案,并带入答案,进行判断,模拟n*k的复杂度,然后就会和我一样TLE 。。。
所以里面模拟如何模拟需要重新思考一下。暴力模拟肯定是错误的。
我们可以进行贪心。
我们可以计算出,哪一个,是马上需要充电的,那些是,可以不急的。
这里就算计算出还能撑多少天,是一样的,也可以在下一次贪心的时候,发现这个时候计算的值是错误的从而排除掉,return false。
那么我们模拟思路就出来,每次贪心的寻找,天数最小的哪一个。
我们用堆顶来维护,即,优先队列。
但是我自己对于运算符重载,并不是很了解。。边写便百度的优先队里里面关于结构体的重载。
留一个坑在这里吧。去学一学运算符重载,再来吧坑填了。
#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b) for(int i=a;i<b;i++)
#define dw(i,a,b) for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
typedef pair<int, int> pir;
int n, k;
ll a[200005];
ll b[200005];
ll acp[200005];
struct node {ll l, r, rate;bool operator<(const node& q)const {return rate > q.rate;}//小堆顶
};
bool judge(ll mid)
{priority_queue<node>q;up(i, 0, n){q.push(node{ a[i], b[i], a[i] / b[i] });}up(i, 0, k)//这里从零开始,实际上意味着时间从1开始,但在零时刻,我们给最小的那个充了一次电了{node tq = q.top();q.pop();if (tq.l < i*tq.r)return false;//天数乘以b,再用现在有的电量去减if (tq.l / tq.r>k)return true;//剪纸tq.l += mid;q.push(node{ tq.l, tq.r, tq.l / tq.r });}return true;
}
void solve()
{ll l = 0;ll r = 1e13;while (r > l)//二分搜答案模板{ll mid = (l + r) >> 1;// cout <<"mid "<< mid << endl;if (judge(mid)) {r = mid;}else{l = mid + 1;}}if (r == 1e13) { cout << -1; return; }else cout << r;return;
}
int main()
{cin >> n >> k;up(i, 0, n){scanf("%lld", &a[i]);}up(i, 0, n)scanf("%lld", &b[i]);solve();return 0;
}
CF Stressful training优先队列加二分搜答案相关推荐
- Brownie Slicing(二分枚举答案)
描述 Bessie has baked a rectangular brownie that can be thought of as an RxC grid (1 <= R <= 500 ...
- 网课搜答案公众号接口系统
网课搜答案公众号接口系统 本平台优点: 多题库查题.独立后台.响应速度快.全网平台可查.功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳 ...
- 从“二分之一加二分之三等于三”说起………
从1/2+3/2=3说起---- 老师在课堂上无情的嘲弄了一个二分之一加二分之三等于三的同学,差把他说成民族败类了-- 对此,我感到不解,难道算错一道题就这么不可原谅吗? 还有,二分之一加二分之三等于 ...
- 山头狙击战 二分猜答案
问题 C: 山头狙击战 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Lucky为了掩护大部队,单枪匹马同敌人周旋,后来被敌人包围在某山头--等等,为什么怎么听怎么像狼牙山五壮士!不过不 ...
- POJ 3258 River Hopscotch(二分查找答案)
一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...
- 程序员上网搜答案被HR吐槽人品差,网友:你们公司是断网开发吗?
在面试过程中,如果面试官给你一份试卷让你做,在没提前说明是开卷还是闭卷的情况下,是应该老实作答?还是利用工具高效完成答题?就有一名互联网行业的HR吐槽过来面试的程序员"作弊",称: ...
- 聪明的质检员 二分验证答案
https://www.luogu.org/problem/show?pid=1314#sub ← 题目自己拿 QAQ 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产 ...
- 输入框超链接_微信内测新功能,聊天输入框的关键词前加#变身搜一搜的超链接...
↑ 点击上方 俗世传媒 关注我们 打开支付宝首页搜索"663622630" 立即领红包,每天可领一次. 如上图所示,你在聊天界面的输入框中长按住一会,立马弹出一个菜单提示框,除了原 ...
- CF 8D Two Friends (三分+二分)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...
- 加载dict_Pytorch模型resume training,加载模型基础上继续训练
Step1:首先查看源码train.py中如何保存模型的: checkpoint_dict = {'epoch': epoch, 'model_state_dict': model.state_dic ...
最新文章
- 机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播
- JAVA SHA1 加密 对应 c# SHA1 加密
- 用 Python 详解《英雄联盟》游戏取胜的重要因素!
- Git 使用规范流程
- 当ABAP遇到OLE
- k8s serviceaccount pod亲和性 污点
- myeclipse如何换一个漂亮的主题
- oracle 静默安装出错,关于redhat6.2静默安装oracle11g出现的问题 大神救命
- RTT的线程同步篇——互斥量
- 推搡辱骂外卖小哥 美女主持人再发道歉视频:网友集体不买账
- 在 .NET 中设置页面元素的 javascript 事件 - IEBrowser [5]
- class文件-常量池类型汇总
- 【Redis笔记】数据结构和对象:字典
- nodejs实现同步http请求
- pdf edit注册码
- cocos creater 使用.max文件/.max文件转换为.fbx文件
- Adobe XMP SDK项目应用(续1)
- 六、HSV颜色空间应用实例——颜色分割提取与替换
- C++ 大整数运算 高精度除法
- 图纸转图片cad转换成jpg格式
热门文章
- mysql 回归分析_统计科学之多元回归分析
- P4238 【模板】多项式求逆
- 浪漫七夕—很幸运一路有你
- python英文分词库_Python中文分词库jieba,pkusegwg性能准确度比较
- Tangent Element调色台的设计和功能同等重要
- PHPoffice PHPword添加水印
- arcgis多面体数据转面_ArcGIS多面体(multipatch)解析——引
- 177.5. FAQ
- vue项目中使用Js判断图片是否加载完 所有图片加载完成前展示Loading效果
- Android 切换双卡数据链接__2019.11.22