关键词:
先分析复杂度,给的数据是1e5的,那么我们至少需要一个nlogn的算法才可以。由于答案是一个数字,首先想到是二分法(一般答案是一个数字都可以通过二分法来完成)
下面是思路:
1.可以完成题目的条件是,每道题需要使用黑科技的次数一定要小于总的分钟数,计算每道题需要黑科技的次数这里要用到向上取证9/5=2,这里写了一个cal函数,比较方便实现,用强制转换ceil函数啥的有点麻烦,当然这个貌似是只能完成正整数的转换。
2.然后用二分查找,正常的二分查找是可以找到mid满足条件,且是唯一的mid。此题在二分区间内有多个值都可以满足条件,所以一定要遍历所有满足的元素,从中选取出最小的那一个作为结果输出出来,用x>y作为结束的条件。一开始时的时候是按注释那样写的,找到可以的一个值之后用while继续找比这个值小的结果,肯定会超时,因为相当于找到一个结果之后就开始一个一个找,退化的很严重,是一个非常智障的操作。
3.一开始想把二分写成从2开始,然后特殊判断了一大堆条件如注释写的那样,也是非常智障的操作,因为1与其他没有什么区别,x=y的情况也没有什么区别,不需要特殊处理
#include<bits/stdc++.h> using namespace std; #define maxn 100005 int a[maxn]; int m = 1000000000; int cal(int x, int y) return (x + y - 1) / y; int merge(int x, int y, int n, int k) if (x >y) return 0; int mid; mid = (x + y) / 2; int sum; sum = 0; int i; for (i = 0; i < n; i++) if (a[i]>mid) sum += cal(a[i] - mid, k); if (sum < mid) if (mid < m) m = mid; merge(x, mid - 1, n, k); /* while (mid >= 2) mid--; sum = 0; for (i = 0; i < n; i++) if (a[i]>mid) sum += cal(a[i] - mid, k); if (sum <= mid) m = mid; else break; */ else if (sum > mid) merge(mid + 1, y, n, k); else m = mid; return 0; int main() int t; scanf("%d", &t); while (t--) int n; scanf("%d", &n); int i; for (i = 0; i < n; i++) scanf("%d", &a[i]); int k; scanf("%d", &k); sort(a, a + n); /* if (a[n - 1] == 1) printf("1\n"); else if (a[n - 2] == 1 && (a[n - 1] - 1 - k <= 0)) printf("1\n"); else*/ merge(1, a[n - 1] - k, n, k); printf("%d\n", m);
g:jlz的漫步(1316)(代码片段)
题目链接:http://acm.xidian.edu.cn/problem.php?id=1316 dfs+记忆化搜索,因为dfs的回溯,很方便的可以在每一点做记忆; dfs定义变量一定要注意全局和局部;1#include<stdio.h>2#include<memory.h>3#include<algorithm>45usingnamespacestd;6 查看详情
火爆github的刷题攻略,现在配套网站上线了!!力扣刷题网站,刷题路线
大家好,我是Carl。代码随想录网站终于上线了!之前如果在电脑端看「代码随想录」刷题攻略,只能在Github上看:https://github.com/youngyangyang04/leetcode-master手机端大家可以在公众号的左下角「刷题攻略」上查看。但... 查看详情
推荐的刷题学习仓库
https://github.com/labuladong/fucking-algorithmhttps://labuladong.gitee.io/algo/ 查看详情
怎样找到二级python的刷题工具
参考技术A1、Github:里面有数百万个Python项目,其中不乏优秀的二级Python学习类资源。2、leetcode:这是一个专业的刷题网站,二级Python题目数量非常之多。3、牛客网:leetcode类似,也是针对面试笔试场景的二级Python刷题网站。 查看详情
[小玄的刷题日记]《leetcode零基础指南》(第3讲)循环(代码片段)
剑指Offer64.求1+2+…+n-力扣(LeetCode)(leetcode-cn.com)https://leetcode-cn.com/problems/qiu-12n-lcof/submissions/求1~n的连加之和 求n的连加之和,有以下思路1,常规思路intsum=0;inti=1;for(i=1;i<=n;i++)sum+... 查看详情
#yyds干货盘点#前端歌谣的刷题之路-第六十四题-查找元素位置前端歌谣的刷题之路-第六十四题-查找元素位置
前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很... 查看详情
首师大附中科创教育平台我的刷题记录0284最强大脑
从现在开始,我的刷题记录都开始给大家一个一个刷!今天给大家献上“E”级题:最强大脑!! 试题编号:0284 最强大脑难度级别:E;运行时间限制:3000ms;运行空间限制:256000KB;代码长度限制:2000000B试题描... 查看详情
java刷题进阶基础入门篇(代码片段)
...从哪里开始,今天给大家推荐一个身边朋友都在使用的刷题网站:点击进入牛客网刷题吧!各大互联网大厂面试真题,成体系的分类题库,从入门到进阶,分类练习哦!文章目录🌕前 查看详情
火爆github的刷题攻略,现在配套网站上线了!!值得一看,从此学习算法不再迷茫
大家好,我是Carl。代码随想录网站终于上线了!之前如果在电脑端看「代码随想录」刷题攻略,只能在Github上看:https://github.com/youngyangyang04/leetcode-master手机端大家可以在公众号的左下角「刷题攻略」上查看。但... 查看详情
一周力扣刷题笔记(代码片段)
一周力扣刷题笔记(10月31日)这周的刷题主要是针对于栈的内容进行的,也包括了一些对于链表知识的整理与回顾旋转链表给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。这道题最... 查看详情
首师大附中科创教育平台我的刷题记录
首师大附中科创教育平台我的刷题记录(这次给大家刷多一点,31--40题吧)仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#include<iostream>usingnamespacestd;intmain(){intn;cin>... 查看详情
首师大附中科创教育平台我的刷题记录
首师大附中科创教育平台我的刷题记录(给大家刷21--25题吧)仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#include<iostream>#include<math.h>usingnamespacestd;intmain(){doublea... 查看详情
首师大附中科创教育平台我的刷题记录
首师大附中科创教育平台我的刷题记录(给大家刷11--15题吧)仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#include<iostream>#include<math.h>usingnamespacestd;intmain(){intx,y;... 查看详情
首师大附中科创教育平台我的刷题记录
首师大附中科创教育平台我的刷题记录(给大家刷16--20题吧)仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#include<iostream>#include<math.h>usingnamespacestd;intmain(){doublea... 查看详情
首师大附中科创教育平台我的刷题记录
首师大附中科创教育平台我的刷题记录(给大家刷26--30题吧)仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#include<iostream>#include<math.h>usingnamespacestd;intmain(){doubleI... 查看详情
牛客网前端刷题(代码片段)
还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦!赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。... 查看详情
牛客网前端刷题(代码片段)
还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦!赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。... 查看详情
视频解说:如何快速高效的刷算法题——排序专题(代码片段)
文章目录前言一、制定目标1、选择"合理"目标2、坚持下定决心二、制定计划1、平均刷题法2、跌宕起伏法3、先苦后甜法三、收集题目1、第一步:选择[排序]标签2、第二步:选择[简单]标签3、第三步:选择[通过... 查看详情