自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 HDU题记

目录水题集1108 :求两个数的最小公倍数gcd(),lcm()2028 :多个数的最小公倍数1061:求n的n次方的个位数快速幂取余2035 : 求A的B次方的最后三位数1021 :新的斐波那契数列打表题2199 找单调函数方程解:连续的二分不连续的二分连续的二分(函数2899:求凸性函数最值:三分三分思想:水题集1108 :求两个数的最小公倍数HDU1108#include <bits/stdc++.h>using namespace std;int gcd(int a,int

2021-01-29 17:34:47 185

原创 听力全攻略

时长:30min题量:4篇40题注意:只能听一次文本难度较低,听的难度大!

2023-06-26 19:31:01 66

原创 阅读全攻略

时长:60min篇幅:3篇文章总题数:40题。

2023-06-26 15:23:15 63

原创 二分练习题

目录二分 模板(新)二分习题洛谷的题单P2249 【深基13.例1】查找P1102 A-B 数对P1873 砍树二分 模板(新)模板题找数组中某个数的上下界#include <iostream>#include <string.h>using namespace std;const int N=1e5+10;const int M=1e5+10;int a[N];int main() { //ios::sync_with_stdio(0);cin.tie(0)

2021-04-08 21:23:33 260

原创 三月反省

已经快开学一个月过去了 , 感觉没有寒假那股学习劲了 ,很多时候因为感觉难 , 就又停下来好久。实为 为懒惰找借口 ,甚至不配用安于现状来形容自己 !寒假结束后 ,感觉自己还是学到点知识的 ,就不知怎么的就安于现状 懒惰了 :这过去的一个月 , 没有做过一道CF 的题 , 也没有去学习新的算法 ,也没有回顾假期学习的那些算法 。学校有比赛训练什么的 , 就在那前几天稍稍的准备了几天 , 在遇到挫折过后 , 便又停下来很久没有训练 ,(唯一一次比赛我感觉我假期的学习是有效的 , 但是过后又遇到滑楼梯般

2021-04-02 19:37:20 116 2

原创 简单组合博弈

目录学习篇组合博弈定义必败点、必胜点(属性很重要 思想!!!简单的取子游戏算法实现(组合游戏的一种)Nim游戏SG函数的含义以及实现游戏类型 总结水题集hdu 1847:单堆型 取连续 求先手输赢hdu 1848:单堆型 取规定集合 求先手输赢hdu 1849:多堆型 取任意 求先手输赢hdu 1850:多堆型 取任意 求方案数hdu 2149:单堆型 取连续 求先手操作 方案hdu 2188:单堆型 取连续 求先手输赢hdu 1944:多堆型 取规定集合 求先手输赢学习篇组合博弈定义①有两个玩家②

2021-02-16 04:22:34 315

原创 二分匹配算法

目录学习篇二分图以及其最大匹配匈牙利算法二分图最大匹配变形题最小顶点覆盖 || 最大独立集DAG图的最小路径覆盖水题集hdu 2063:男女最大匹配hdu 1150:机器最少重启次数hdu 1151:DAG最小覆盖路1068:最大没有联系的男女个数hdu 1281 :骑士最大放置数学习篇二分图以及其最大匹配一、什么是二分图如果一个图的顶点可以分为两个集合X、Y, 图的所有边一定是有一个顶点属于集合X,另一个顶点属于集合Y, 则称该图为“二分图”或“二部图”。二、二分图的最大匹配在二分图的应用中,

2021-02-16 01:59:29 909

原创 BFS/DFS浅谈

目录学习篇(搜索)BFS水题集BFShdu 1548:二叉树型搜索hdu 1459:三个杯子倒可乐hdu 1372:骑士起点到终点最少步数hdu 1242:类似起点到终点题hdu 1253:类起点到终点(三维)学习篇(搜索)先举个例子:遍历二叉树(树的遍历层次)算法思想:维护一个队列,用于存放节点信息。当访问到一个节点的时候,先访问该节点,再将该节点出队,再将其左右儿子分别放入队列。再来讲讲搜索:起初我做搜索题真的是一头雾水,直接放弃搜索的本质:暴力枚举(让程序从一个状态跳到另一个状态就是搜索。

2021-02-13 03:27:49 204

原创 最短路径问题-迪杰斯特拉Dijkdtra

目录学习篇水题集hdu 1874:畅通工程续-单源点最短路hdu 2066:多源点hdu 2680:多源点&&有向学习篇求最短路径的基本思想:按照最短路径的长度递增的次序,依次求得——源点到其余各点的最短路径!假设,从源点到顶点v的最短路径是所有最短路径中长度最短者。路径长度 最短的最短路径 的特点:在这条路径上,必定只含有一条弧,并且这一条弧的权值最小。简单来说:一条最短路径比如:Start -> a->····-> End在一个图中,找到与源点距离最短

2021-02-11 03:50:53 474 1

原创 背包简单问题

目录学习篇+?板子?01背包问题 求优解朴素做法O(NV)常数优化完全背包 求最优解O(NM)做法多重背包 求最优解朴素做法 O(NVS)二进制优化 O(NVlog(S))单调队列优化 O(NV)水题集hdu 2602:01背包求最大值hdu 1114:完全背包+装满hdu 2191:多重背包hdu 1284:类完全背包hdu 4508:类完全背包学习篇+?板子?参考 : 资料1 ,资料2 ,资料3 ,资料401背包问题 求优解N种物品,总容量V,每种物品只能选一次,求不超过V的最优解(以下为求最

2021-02-10 17:23:25 266 2

原创 简单DP

目录学习篇+?板子?水题集hdu 2084:数塔hdu 1257:拦截系统(LIS)学习篇+?板子?基本思想:如果各个子问题不是独立的(即重复的),不同的子问题的个数只是多项式量级的(即有限的),如果能保存已解决的子问题的答案(一般用数组)而在需要的时候再找出已经求得的答案,这样就可以避免重复计算。满足DP的几个基本性质:参考资料一、最优子结构:当前问题的最优解包含了子问题最优解二、子问题重叠:所有的子问题都可以用一个算法计算(状态转移方程)三、同级问题独立:同一级所有问题互不干涉,即a[

2021-02-06 22:08:13 202

原创 递推系列(未学dp前的分析系列)

目录水题集hdu 2018:母牛生小牛hdu 2041:楼梯-斐波那契hdu 2046:2*n骨牌-斐波那契hdu 2067:棋盘-卡特兰数wa了多次的?水题集?hdu 2044:蜜蜂-斐波那契hdu:EOF牛肉串hdu 2045:涂颜色hdu 1297:男女生排队(大数加法所有考虑第n位的前提是,前n-1位合法;若直接考虑第n位的时候不能找出递推公式就换种思路,考虑 前n-1是否合法的情况。水题集hdu 2018:母牛生小牛hdu 2018:母牛生小牛#include <bits/st

2021-02-06 20:16:41 174

原创 二分/三分

目录二分查找三分水题集二分:hdu 2199:找单调函数方程解 ->连续的二分三分:hdu 2899:求凸性函数最值:一个函数三分hdu 3714:求多个函数构成的图形函数的最值wa多次 ?水题集?二分:poj:1905三分:二分查找参考资料一、查找 等于某个值的 位置(下标)/ 对应的变量在不连续的数据中查找 即数组int Bifi(int a[],int n,int x){ int l=0,r=n-1; while(l<=r){ int mid=(l+r)/2; if(

2021-02-06 16:08:58 142

原创 专题I_K个人解题报告-三分

I题:HDU 3714分析:求F(x)=max(Si(x));画图分析易知F(x)一定是一个下凸的图像,三分这个题的精度要注意,还不会精度到底要怎么搞,我一般都取1e-7,这次wa了,取了1e-10过了。#include <bits/stdc++.h>using namespace std;//把F[x]=max(s(x))表示出来;int n;struct node{double a,b,c;}p[10010];double S(double a,double b,dou

2021-02-03 23:03:30 98

原创 专题I_J个人解题报告-二分

J题:POJ 1905-二分做这个题做到怀疑智商了QAQ分析:由题意已知:L ,s ,0<h<L/2 ; 求 h;那么知道S(R(h))的单调性就可以知道用二分还是三分求解了;下面是错误分析(这段分析真的还以自己还有没有智商了)根据 h 的范围;我对①式中的 h 求导;得出 r 随 h 的增大而减小(即单调减函数);然后我一看②式妥妥的单调增函数啊;然后我就判定这个复合函数为单调减函数了。但是我突然发现我运行样例的时候,???,怎么都不对,我就去翻别人的题解,从别人的代码里我发

2021-02-03 20:45:18 108

原创 专题图论_I、J个人解题报告-最小生成树

HDU 1233最小生成树-查并集的简单应用#include <bits/stdc++.h>#define ll long longusing namespace std;//最小生成树问题int s[110];struct node {int a, b, d;}c[5000];bool cmp(node x,node y){return x.d<y.d;}int findx(int x){//查并集中的查 while(x!=s[x])x=s[x];

2021-02-02 00:32:08 99

原创 最小生成树

别人写的比较好的一篇什么是最小生成树:如何求最小生成树?A、Prim 算法(普里姆算法)(待补)B、Kruskal 算法(克鲁斯卡算法)理论基础:MST(证明)其实就是查并集的简单应用而已;举个题:HDU 1233#include <bits/stdc++.h>#define ll long longusing namespace std;//最小生成树问题int s[110];struct node {int a, b, d;}c[5000];bool

2021-02-02 00:21:27 90

原创 专题图论_H个人解题报告-查并集

图论_H题(查并集)题意:给出互通的两个城市的编号,使全省任意两个城市互通,最少还需要建设多少条道路。#include <bits/stdc++.h>#define ll long longusing namespace std;int s[1010];int findx(int x){ int r=x; while(s[r]!=r)r=s[r]; return r;}void mergeset(int a,int b){ int x=fin

2021-02-01 22:14:23 89

原创 查并集Disjoint Set(不相交的集合)

查并集:Disjoint Set(不相交的集合)常见两种操作:1、合并两个集合2、查找某个元素属于哪个集合**实现方法一(常用):**每个集合用一棵“有根树”表示定义数组Set[1,n];Set[ i ] = i ;则 i 表示本集合,并使集合对应树的根Set[ i ] = j ;若 j 不等于 i ,则 j 是 i 的父节点举个例子:Set(i)1232134334i12345678910具体操作:1、查:最坏情况O

2021-02-01 22:10:00 843

原创 可图性判定

可以构成图的判定两个概念:1、度的序列:若把图G的所有顶点的度数排成一个序列S,则称S为图G的度序列。2、序列是可图的:一个非负整数组成的有限序列如果是某个无向图的度序列,则称该序列是可图的Havel-Hakimi定理判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】开始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。HDU 2454#include <bits/stdc++.h>#define

2021-02-01 22:07:11 2846

原创 Light bulbs

Light bulbs两种方法:1、“猜想”??2、离散化的差分(待补,我搞懂了离散化,差分,但是合起来这个题为什么我现在不懂)题意:有N盏灯,编号为0到N-1,最开始他们都是关闭的。有M个翻转操作,翻转FLIP(L,R)是将[L,R]的灯变化,亮的变成暗的,暗的变成亮的。求最后亮的数目解法一:猜想:用线段的操作来举例子:可以看出 每一区间的线段数量奇偶交替 (第一区间 [a,e]奇的,·····也就是说线段两个端点排序后 相邻的区间是奇偶交替的 而第一个区间是奇的所以 求开着的灯的数

2021-01-28 21:21:58 306

原创 数据离散化

目录为什么要离散化?定义:操作数据离散化是一个非常重要的思想。为什么要离散化?当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。定义:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。(from百度)简单说:离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1,999,100000,15;处理后:1,3,4,2;原数据:{100,200},{20,50000},{1,400};处理后:{

2021-01-28 03:20:35 2005

原创 语法小知识(随笔

这里写目录标题lower_bound()和upper_bound()lower_bound()和upper_bound()头文件:#include < algorithm>lower_bound()返回的是大于或等于 value的第一个位置upper_bound()返回的是大于 value的第一个位置均为迭代器数组:#include <bits/stdc++.h>using namespace std;int a[8]={1,2,3,3,3,5,6,7};int

2021-01-28 01:46:20 190

原创 前缀和差分学习

文章目录前缀和、差分一维差分习题前缀和、差分一维差分习题前缀和、差分1、前缀和:某项为 该项及该项前 的数据和//数组a (下标为0开始)变前缀和数组for(int i=1;i<n;i++)a[i]+=a[i-1];2、差分:某项变为 该项与前一项的差2.1用途:维护一个区间的快速修改2.2性质:①差分序列求前缀和可得原序列②将原序列区间【L,R】中的元素加q可以转化为L处+q,R+1处-q;一维差分习题HJ浇花#include <bits/stdc++.h>

2021-01-27 21:33:30 133

原创 1月20日 每日一题 UVA-307题解

UVA-307 Sticks如果 在上面这个链接上提交了但是TLE了 就到下面这个链接去交 ?找回点自信? (好像是说POJ-1011的数据太水才能过的)POJ-1011 Sticks题意乔治拿了相同长度的木棍,随机切开,直到所有零件的长度最大为50个单位。 现在,他想将木棍恢复到原始状态,但是他忘记了原来拥有多少木棍以及它们原本有多长。 请帮助他,设计一个程序,计算出那些棍子的可能的原始最小长度。 所有以单位表示的长度都是大于零的整数。输入输入包含2行。 第一行包含切割后的木棍零件数量,

2021-01-18 19:11:57 903

原创 专题I_E个人解题报告-DFS

I_E题(dfs)POJ-1011 Sticks UVA-307 Sticks是的我又跑去学递归了QAQ这个题最好到UVA-307去交题 (好像是说POJ-1011的数据太水)题意乔治拿了相同长度的木棍,随机切开,直到所有零件的长度最大为50个单位。 现在,他想将木棍恢复到原始状态,但是他忘记了原来拥有多少木棍以及它们原本有多长。 请帮助他,设计一个程序,计算出那些棍子的可能的原始最小长度。 所有以单位表示的长度都是大于零的整数。输入输入包含2行。 第一行包含切割后的木棍零件数量,最多为64

2021-01-13 20:25:10 145

原创 专题I_D个人解题报告-DFS/二维01背包

I_D:HDU-2660 Accepted Necklace题意我有N块宝石,并计划用其中的K块为我的母亲做项链,但她不会接受太重的项链。 考虑到每种宝石的价值和重量,请帮助我找出母亲会接受的最有价值的项链。输入输入的第一行是案例数。对于每种情况,第一行都包含两个整数N(N <= 20)(总的宝石数)和K(K <= N)(制造项链的确切宝石数)。然后紧接着N行,每行包含两个整数:a(a <= 1000),代表每种宝石的价值; b(b <= 1000),其重量。每个案例

2021-01-12 02:39:50 288

原创 专题I_B、C个人解题报告-DFS

POJ-2386 Lake Counting这个题卡了我两天?难点:1、这个题我想好久没想明白(题目没看懂,我都不知道3是怎么来的,然后我就跑去看dfs做了好几道,在书上发现这个问题,看了才知道这个题的意思)2、编译出问题了(输入字符的问题)(想了一下午)题意(dfs)有一个n*m大的园子,W是一个积水,·····,八联通的积水是连在一起的当作一个水坑(这我愣是没想到)·····输入:10 12W…WW..WWW…WWW…WW…WW.…WW.…W……W…W….W.W…WW.

2021-01-08 16:08:27 139

原创 部分求和问题-dfs/穷竭搜索

题意一组数据中,判断是否可以选出若干数,使他们的和恰好为k;以下输入输出自己拟的 我结合两个题搞的所以有点乱//部分和问题 以下两种方法皆为O(2^n) 待学习后更新优化时间复杂度 “动态规划的记忆”#include <bits/stdc++.h>using namespace std;int a[100],n,k;//法一:"加法"(深搜)大白1书p30-32bool dfs(int i,int sum){ if(i==n)return sum==k; bool re.

2021-01-07 23:44:04 90

原创 分治法搜索数组中最大值(最小值)

分治法1、将问题"分割"成局部问题;2、递归求局部问题3、将局部问题的解"整合",解决原问题//分治法找最大元素模板题(最小)#include <bits/stdc++.h>using namespace std;/*大白2书上p110有问题: int fmax(int a[],int l,int r){ int mid=(l+r)/2; if(l==r-1)return a[l]; int u=fmax(a,l,mid); int v=fmax(a,mid,r)

2021-01-07 23:29:46 948 1

原创 专题I_A个人解题报告-尺取

专题I_A个人解题报告POJ-3061 Subsequence【传送门】A题:尺取描述给出了一个N长度正整数序列(10 <N <100 000),每个正整数小于或等于10000,并给出了一个正整数S(S <1e8)。 编写程序以查找该序列的连续元素的子序列的最小长度,其总和大于或等于S。输入第一行是测试用例的数量。 对于每个测试用例,程序必须从第一行读取数字N和S,并以一个间隔将其隔开。 序列的数目在测试用例的第二行中给出,以间隔分隔。 输入将以文件结尾结束。输出对于每种

2021-01-06 20:30:41 254 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除