2020年2月29日

leetcode 215 找第k大的元素(线性期望时间选择问题)

摘要: 其实线性期望时间的选择问题就是使用快速排序的方法,不过相较于快速排序需要对枢纽值两边进行递归,找第k大元素只需要对枢纽值的一边进行递归; 因此其平均时间复杂度为O(N)=N+N/2+N/4+...<2N,不过该方法的最坏情况的时间复杂度为O(N^2)。 void swap(vector<int> & 阅读全文

posted @ 2020-02-29 22:33 QingFengDaHui 阅读(179) 评论(0) 推荐(0) 编辑

2020年2月28日

hdu 1052 田忌赛马(贪心)

摘要: 题意:输入n(不为0),然后输入n个整数为田忌的马的速度和n个整数为齐王的马的速度,求田忌的收益,赢一场+200,输一场-200 首先考虑以下四种情况: (1)田忌最慢的马速度大于齐王最慢的马的速度,此时这两匹马比较胜齐王 (2)田忌最慢的马速度小于齐王最慢的马的速度,此时用齐王最快马比田忌最慢马, 阅读全文

posted @ 2020-02-28 22:49 QingFengDaHui 阅读(152) 评论(0) 推荐(0) 编辑

2019年3月9日

leetcode 215(分治,求第k大元素)

摘要: 这道题用的是老师上课讲的最坏时间复杂度为O(n)的算法,即BFPTR算法,简单来说就是给一个数组,然后将其划分为5个一组,然后剩下的为一组,然后将其放到一个数组继续递归,直到不足五个时返回中位数,然后我们用这个中位数作为基准进行分治,将大于该数的放在右边,小于的放在左边,然后比较k和基准的位置,相同 阅读全文

posted @ 2019-03-09 16:04 QingFengDaHui 阅读(254) 评论(0) 推荐(0) 编辑

2019年3月8日

hdu 5890(01背包+bitset优化)

摘要: 这道题就是给一堆数(n),然后从中删去1到3个,如果剩下的数中能选出10个加起来等于87,输出yes,否则输出No 这道题用到一个bitset优化,bitset用法可以百度下,另外这道题极度坑(注意输入输出) 假如dp[i]=1001,i个数之和为1和4的组合存在, 所以我们要求的就是dp[10][ 阅读全文

posted @ 2019-03-08 20:27 QingFengDaHui 阅读(134) 评论(0) 推荐(0) 编辑

2019年3月7日

hdu 5883(欧拉路)

摘要: 这道题实际上是一道判断是否含有欧拉路的题,欧拉路是经过所有的边有且一次,分为欧拉通路和欧拉回路, 首先我以为要先判断一下该无向图是否是通路(可以用dfs或bfs遍历一遍),但是后来发现不用判断,题目已经说明其是通路, 这就好做多了,首先分析每个点的度,如果奇数度顶点为2个,则为欧拉通路,且起点和终点 阅读全文

posted @ 2019-03-07 17:24 QingFengDaHui 阅读(103) 评论(0) 推荐(0) 编辑

2019年3月6日

CodeForces - 1105C (dp)

摘要: 这道题是一道dp题,给出数组的个数n,上下边界l和r(包括l,r),要求满足所有数组中元素之和满足被3整除的情况有多少种, 我们可以知道l到r中被3整除的数有mod0个,被3整除余1的有mod1个,被3整除余2的有mod2个。 dp[i][j]表示数组中前i个数的和被3整除余j的个数,我们要求的就是 阅读全文

posted @ 2019-03-06 19:13 QingFengDaHui 阅读(101) 评论(0) 推荐(0) 编辑

2019年3月4日

hdu 2602(01背包)

摘要: 01背包:有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到 的价值是Wi。求解将哪些物品装入背包可使价值总和最大。(每件物品只有一件,放或者不放) 即F[i,v]表示前i件物品恰放入一个容量为v的背包可以 获得的最大价值。则其状态转移方程便是:F[i,v] = max{F[i− 阅读全文

posted @ 2019-03-04 20:20 QingFengDaHui 阅读(87) 评论(0) 推荐(0) 编辑

poj 2479 (最大子串和的变形)

摘要: 首先front[i]是以第i个元素开头的最大子串和,back[i]是以第i个元素结尾的最大子串和,front_m[i]是从第i个元素到最后一个元素这段中最大子串和,然后ans=max(ans,back[i]+front_m[i+1]) 阅读全文

posted @ 2019-03-04 17:46 QingFengDaHui 阅读(167) 评论(0) 推荐(0) 编辑

2019年2月28日

poj 1088(dfs+dp)

摘要: 这道题本来可以用dfs做,但这样会超时,因为需要对每一个点进行dfs求从该点出发的最长距离,但我们在对一个点dfs的过程中,往往可以求到很多点,所以对每一个点dfs实际上是多余的,所以我们在dfs的基础上加上dp就可以得到答案。 阅读全文

posted @ 2019-02-28 22:26 QingFengDaHui 阅读(90) 评论(0) 推荐(0) 编辑

leetcode 166(分数转化位小数)

摘要: string fractionToDecimal(int numerator, int denominator) { long long n=numerator,d=denominator; string ans=""; map m; if(n*d<0) ans+="-"; n=abs(n);... 阅读全文

posted @ 2019-02-28 21:32 QingFengDaHui 阅读(219) 评论(0) 推荐(0) 编辑

导航