好题专题

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

HDU5521 Meeting([好题]最短路径)

题意:一个人在1位置,另一个在n位置,俩人要见面,然后给出m个集合,告诉集合的城市之间的距离都是t。然后问最短路 解法:边太多,直接邻接表是存不下的,所以要换一个存储方式,存与边关联的点,与点关联的边。然后最短路用堆优化的dij算法。还有一点值得注意的是,一个集合只需要跑一次就可以了,因为是最短路跑过来的,集合里都已经是最短的了 #include<bits/stdc++.h>using nam

Codeforces Round #329 (Div. 2) B. Anton and Lines ([好题] 计算直线在区间是否有交点)

题目链接 题意:给出n个条直线,然后在指定的区间(x1,x2)是否有直线的交点存在。 解法:一:闭区间,首先把区间略微调小。 二:计算直线在x1,x2上的交点y坐标,以及直线的id,然后按照y值,id值排序,最后判断第x1,x2左右两边的第i个点是不是同一直线的,如果不是,就存在交点。 #include<bits/stdc++.h>using namespace std;const i

[M二分] lc153. 寻找旋转排序数组中的最小值(二分+边界情况+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:153. 寻找旋转排序数组中的最小值 2. 题目解析 一道不错的二分题目。有两种写法,但两种写法的边界情况各不相同,需要考虑清楚。 思路: 数组中可能是完全升序的,也可能是前半段完全大于后半段的旋转的。升序的很简单,只需要考虑 nums[0] < nums.back() 即可。关注这个旋转的,可知,nums[

[M二分] lc162. 寻找峰值(二分+思维+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:162. 寻找峰值 题单: 二分算法(二分答案/最小化最大值/最大化最小值/第K小) 其他 2. 题目解析 本题是而二分法的一个经典变种,也说明了一点: 当数组即便无序时,只要其满足二分性质,则也可以进行二分。 思路: 首先,本题答案一定存在。因为在两侧边界是属于 -inf,负无穷的高度。那么只要存

[Mdfs] lc473. 火柴拼正方形(剪枝优化+经典题+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:473. 火柴拼正方形 拔高、证明: [dfs] aw167. 木棒(dfs剪枝与优化+分类讨论+思维+好题) 2. 题目解析 水一篇。和之前的一个问题一模一样,在此不再赘述,写出来方便搜索。 [Mdfs] lc698. 划分为k个相等的子集(剪枝优化+经典题+好题) 时间复杂度:此类 dfs 和剪枝

[M双指针] lc713. 乘积小于 K 的子数组(双指针+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:713. 乘积小于 K 的子数组 题单位置: 滑动窗口(定长/不定长/多指针) 不定长滑动窗口(求子数组个数) 2. 题目解析 经典的 双指针、滑动窗口 问题。 思路: 能发现让右边界向右拓展时,窗口内元素已经大于 k,则可以尝试缩小左边界。且左边界不会再回头向左拓展,左指针具有单调性。适合使用滑动窗

[M位运算] lc3133. 数组最后一个元素的最小值(位运算+思维+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:3133. 数组最后一个元素的最小值 题单位置: 位运算(基础/性质/拆位/试填/恒等式/思维) 二、与或(AND/OR)的性质 2. 题目解析 一道挺有意思的题目。位运算的简单拓展。 主要讲下简单的代码实现方法和思路: 相当于 x 的二进制表示下,0 的位置相当于一个个的空位置,都是待填的空位置。想

[M双指针] lc209. 长度最小的子数组(双指针+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:209. 长度最小的子数组 题单: 滑动窗口(定长/不定长/多指针) 不定长滑动窗口(求最长/最大) 2. 题目解析 思路: 朴素双指针即可。r 向右拓展时,判断 l 是否可以向右拓展,在满足题目要求的情况下获取到更短的子数组长度。 坑点: 如果做了前几个题目的话,可能在计算答案的时候不会去写这个

归纳贪心好题

很有趣的一道归纳贪心题目 class Solution {public:int minimumAddedCoins(vector<int>& coins, int target) {sort(coins.begin(),coins.end());int n = coins.size();int s = 0,i=0;int res = 0;while(s<target){if(i<n&&

poj3017 Cut the Sequence 单调队列优化dp 好题!

Language: Default Cut the Sequence Time Limit: 2000MS Memory Limit: 131072KTotal Submissions: 8766 Accepted: 2578 Description

Codeforces Round 951 (Div. 2) F. Kostyanych‘s Theorem(思维题 交互好题)

题目 交互题,n(n<=1e5)个点的完全图,无向的,初始恰好删了n-2条边 每次询问可以输入一个d:? d 交互器会输出一个当前度>=d的点v, 如果有多个这样的点,输出度最小的,如果还有多个,输出点号最小的 还会输出一个和这个点v当前没有连边的点x,如果x有多个,也输出点号最小的x 如果x不存在,输出x=0 然后交互器会把v这个点和当前连的所有边都删了, 如果没有找到这样的v,

HDU 2865 Birthday Toy(ploya好题)

对于这种颜色多的,但是限制简单的情况,可以利用dp推出公式,然后矩阵快速幂求解 代码: #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MOD = 1000000007;typedef long long ll;int n, k;int phi(int n) {

HDU 4507 吉哥系列故事――恨7不成妻(数位dp好魔性的一道好题)

题目链接:[kuangbin带你飞]专题十五 数位DP J - 吉哥系列故事――恨7不成妻 题意 Time Limit:500MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description   单身!   依然单身!   吉哥依然单身!   DS级码农吉哥依然单身!   所以,他生平最恨情人节,不管是214还是7

刷好题,固基础-12

复盘c++中string字符串的操作 reverse(开始位置,结束位置);--左闭右开,实现字符串[l, r]区间的逆置 string s;int l, r;reverse(s.begin()+l, s.begin()+r+1); s.substr(要截取的位置,要截取的长度);--截取位置从1开始,下面是截取区间[l, r]的字符串并加在字符串s的最后 string s;int

C - Ordering Pizza CodeForces - 867C(贪心,好题!)

It’s another Start[c]up finals, and that means there is pizza to order for the onsite contestants. There are only 2 types of pizza (obviously not, but let’s just pretend for the sake of the problem),

刷好题,固基础-10

今天打天梯赛模拟赛有一道全排列的题(在我看来是啦,虽然只拿了25/30,一个点超时了呜呜呜呜呜) 在此纪念一下自己推导得出的得到两种不同全排列的方法: 方法一:按照字典序大小推导得出的全排列顺序 p是全排列的总和,pa是一条排列,v数组表示该点是否被访问过 void dfs(int idx, vector<int> &pa){if(pa.size() != 0) p.push_bac

【寒假集训营总结笔记——7道优质好题】

牛客寒假集训营总结笔记——7道优质好题 一、Trie树的应用: 题目链接:Tokitsukaze and Min-Max XOR 1、题意 2、题解 1、首先这道题的答案和元素本身的顺序是无关的,因为假如你选择了一些数字,它是默认必须排好序才能记作是答案,所以对于我们枚举的任意一组max和min,位于 m i n ≤ x ≤ m a x min \le x \le max

刷好题,固基础-7

L3-007 天梯地图 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。 输入格式: 输入在第一行给出两个正整数N(2 ≤ N ≤ 500)和M,分别为地图中所有标记地点的个数和连接地点的道路条数。随后M行,每行按如下格式给出一条道路的信息:

好题分享--小A的皇室战争卡组

题目描述 小 A 很喜欢玩皇室战争这款游戏。皇室战争的卡牌种类共有 3 种,分别为部队、建筑和法术。一个卡组会携带 88 张卡牌,一个合理的卡组会包含 0∼1 张建筑牌、 1∼3 张法术牌,部队牌则没有限制。每张卡牌都有自己独立的等级 ai​ 和种类 ci​。 现在小 A 想和 小 B 进行友谊战,因此需要来构建出战卡组。小 A 共有 n 张卡牌,卡牌的类型与等级已知,且 小 B 的每张出战卡

Java好题分享——健康体检(循环队列)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 代码实现   题目描述 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中

【无标题】1135bfs好题

dfs当你找到了答案后就要设计一个值一直return否则会超时, 如果不能选一样的数就要开状态数组,你再main里面定义的变量如果你不传到函数里函数里面也 用不到 /* 广搜模板 q.push(初始状态); while(q.size){     a=q.front();     q.pop();     for(枚举a的所以可到达状态){         if(本状态v合法){

刷好题,固基础-2

7-5 运动会 T公司的员工层级关系可以表示成一棵树,员工X是员工Y的直接领导,则在树中X是Y的父结点。公司拟组织一场运动会,但为了避免尴尬,每个员工都不想与自己的直接领导一起参赛。假定每个员工都对应一个权重(领导的权重不一定比下属大),请你编写程序,邀请若干员工参赛,使得参赛人员的总权重和最大。 输入格式: 第一行一个正整数n,表示公司的员工人数,员工编号为1...n,n不超过30

HDU 1277 全文检索 (Trie树应用 好题)

全文检索 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1304    Accepted Submission(s): 416 Problem Description 我们大家经常用google检索信息,但是检索信息的

NOJ 2030 收购计划 (枚举+DFS 好题)

收购计划 时间限制(普通/Java) : 2000 MS/ 6000 MS          运行内存限制 : 16384 KByte 总提交 : 286            测试通过 : 23 题目描述 IT巨子松老师经过数十年的奋斗,终于打败了所有竞争对手准备一统IT界。此时除了松老师的帝国之外还有N个残存的小公司,松老师打算收购其中的一些。这些公司有a1、a

蓝桥杯练习题 最小方差生成树 (Kruskal MST 好题)

算法提高 最小方差生成树   时间限制:1.0s   内存限制:256.0MB 问题描述 给定带权无向图,求出一颗方差最小的生成树。 输入格式 输入多组测试数据。第一行为N,M,依次是点数和边数。接下来M行,每行三个整数U,V,W,代表连接U,V的边,和权值W。保证图连通。n=m=0标志着测试文件的结束。 输出格式 对于每组数据,输