自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蟋蟀的博客

All i learned about CS

  • 博客(25)
  • 收藏
  • 关注

原创 LeetCode 394. Decode String

题解看到括号很容易想到栈。用stack的思路就是每遇到一个 ],不停出栈直到遇到对应的 [ 再出栈把数字倒出来。大体思路就是这样。当然我们不需要显式的用stack,用递归也是一样的,我的解法就是递归。这里给几点tips:递归解法是想把原问题分解为小问题,这题的所谓小问题就是decode 一个[]内的字符串。注意只要有数字就会有[],每个[]内可能有数字也可能没有,但必然会有字母。...

2018-09-30 11:51:44 140

原创 LeetCode 48. Rotate Image

题解这题只要有点分解的意识就好了。旋转矩阵其实就是在按照顺时针顺序依次swap一行/列,如下图。每完成一个 口字再往内部走就是个更小的 口字。 4 - - - |3 | | 1 | | | - - - ...

2018-09-28 11:54:19 89

原创 LeetCode 62. Unique Paths

题解很常见的矩阵位移类的dp,naive的做法是开个同大小的dp[m , n],然后 dp[ i , j ] = dp[ i-1 , j ] + dp[ i , j-1 ]。这样空间开销比较大,注意到dp[ i , j ] 的更新只依赖于上和左,那么其实用两行数组就可以。其实还可以优化到一组: dp[ i ] += dp[ i-1 ],哈哈Code不给了太简单...

2018-09-28 11:01:05 76

原创 LeetCode 309. Best Time to Buy and Sell Stock with Cooldown

题解注意这道dp题对选择和状态的描述。用buy sell rest, 三个数组分别表示在 第i天时 能获得的最大收益。有转移方程: buy[i] = max( rest[i-1]-prices[i], buy[i-1] ) sell[i] = max( buy[i-1]+prices[i], sell[i-1] ) re...

2018-09-28 10:35:25 111

原创 LeetCode 621. Task Scheduler

题解比较有意思的题,不太好归类,应该是贪心。这题的只要换个思路就好做了,就是算idle的时间有多长,因为task必然耗时。给一篇写得很完备的英文解析简介几个核心点:有最大频率的任务,会创造最长的时间间隔如 A _ _ A _ _ A (n=2)这些间隔 _ 可用来放置其他任务,或者留作idle如果间隔不够,那么恭喜你我们不需要idle(思考为什么)特例 有相同最大频率的不同任务。...

2018-09-27 18:19:13 140

原创 LeetCode 96. Unique Binary Search Trees

题解这是一道很有意思的dp题目,值得玩味。给出一个写的很好的英文题解。解释得非常清楚。点几个要点:以不同序号标记去重,形成1-(i-1) – i – (i+1)-N的树形。G(N), F(i , N)的表示意思及联系。为什么 F(i , N) = G(i-1) * G(N-i)。Codeclass Solution {public: int dp[200]; // ...

2018-09-27 11:07:18 89

原创 LeetCode 494. Target Sume

题解之前在luogu上做过一道类似的题,但是更难点还要考虑空格。记得也写过题解的但是找不到了。。。这道简化了点,所以我用dp来做一下,思路比较清晰。dp[ i , j ] : 表示前 i 个数组合成总和 j 的方案数有转移方程:dp[ i , j ] = dp[ i-1 , j - nums[i] ] + dp[ i-1 , j + nums[i] ]这很显然吧。注意j不能为负数,所...

2018-09-27 10:24:23 94

原创 LeetCode 56. Merge Intervalse

题解检验区间交叠,思路比较直观,先排序再比较,看代码。前面我的,后面的最精炼。O(n^2)class Solution {public: static bool cmp(Interval &a,Interval &b){ return a.start < b.start; } bool used[50000]; ve...

2018-09-26 13:13:17 96

原创 LeetCode 22. Generate Parentheses

题解这题很巧,虽然还是个dfs。用两个变量n,m记录待放入的左右括号,放一个左则n-1,m+1,放一个右m-1,如此反复可得。Codeclass Solution {public: vector<string> generateParenthesis(int n) { vector<string> res; dfs(res...

2018-09-26 11:10:26 73

原创 LeetCode 39. Combination Sum

题解这种求sum的题目核心思路就是遍历,没其他的东西。这题就是个dfs,注意回避重复(用序号开始)。ps: 看别人答案,函数上套那么多变量真是看得好难受。。。Codeclass Solution {public: vector<vector<int>> ret; vector<int> cot; int cur_sum; ...

2018-09-26 10:39:30 75

原创 LeetCode 454. 4Sum II

题解4sum变种,本质还是枚举,但是4个数组遍历要O(n^4),有咩有办法减少时间呢? 空间换时间吧。4组两两分着遍历,将其中两组的和用Map记录下来,另外两组求和后在Map中 找到负和就可以了。ps: java.xxx.map getOrDefault(object,v),寻找键值若无返回缺省的v。Codeclass Solution { public int f...

2018-09-14 16:32:30 73

原创 LeetCode 18. 4Sum

题解这个4sum的题其实是2sum,3sum的集大成者。其实说白了这种Ksum的题目就是只能靠遍历这种做法,枚举 所有的可能,但是这个枚举还是要点技巧,规避一些多余的计算。Codeclass Solution { public List<List<Integer>> fourSum(int[] nums, int target) { ...

2018-09-14 16:23:06 95

原创 luogu P1736 创意吃鱼法

题解f [ i , j ] 代表以 i-j 为末端的最长值,显然依赖于f [ i-1 , j-1 ] 和 f [ i-1 , j+1 ] 即左上右上。 但左上右上可取到是有前提的,即左右上三个方向恰好有多于 f [ i-1 , j-1 ] 和f [ i-1 , j+1 ] 长度的空格。 那么我们用s1[ i , j ] s2[ i, j ] 来记录再 i-j 位 左右以及上方向有多少...

2018-09-12 15:23:41 97

原创 luogu P1095 守望者的逃离

题解这题我当作贪心来做了,看大佬们用dp用得很6啊,肥肠羡慕。本题核心思想: 在一段时间内移动尽可能多的位移,最大化时间效率。妥妥的贪心。大体思路:蓝充裕(m>=10)的时候肯定瞬移最快 60m/s,在蓝不够的时候有可能等回蓝再瞬移更快,也可能直接走更快。 这取决于剩余的时间。 代码中列了一个表,人肉算出来的是对 1-6s 时能够产生的最大位移。为什么只算到6s呢?因为以后的...

2018-09-12 13:20:59 114

原创 luogu P1058 立体图

题解可以说是很烦的题目了。硬写是基本做不到的,存在遮挡的问题,人肉考虑无比繁琐,反正我是放弃了。 可行的做法是,准备好一个健全的方块,以及一个画布 (char canvas[][] ),然后一个一个画上去copy。 亮点是如果按照一定顺序画的话,后画的能恰好实现遮挡前面的。是不是很巧。Code#include <iostream>#include <cstd...

2018-09-11 17:35:37 368

原创 USACO 3.1.2 总分 Score Inflation

题解完全背包裸题,不解释。Code// H F Eusing namespace std;int n,m,k;int f[10001];int v[10001],w[10001];int main(void){ cin>>n>>m; for(int i=1;i<=m;i++) cin>>v[i]>>w...

2018-09-10 15:49:17 337

原创 USACO 3.1.1 最短网络 Agri-Net 【模版】

题解最小生成树裸题。Kruskal方法解答,用并查集对节点检查合并。代码很简练。Code// head files excludedusing namespace std;int n,m,k;struct edge{ int x,y,v;} cot[20000];int f[200];bool cmp(edge &a, edge &b){...

2018-09-10 15:01:22 247

原创 USACO 2.4.5 分数化小数 Fractions to Decimals

题解想出来的解法比较暴力。 前提知识:能够用整数表示出的小数都是有理数,所以不会存在无限不循环小数(无理数)。 判断是否无限循环,遍历小数点后100-200位若全是0那肯定不是无限小数 ( 确实存在后面这么多0的无限小数,但不在题目数据范围内 ),否则肯定无限。 若无限循环就要找环,环长怎么样?从头到尾数相同,暴力遍历即可。 最后注意 N 要开大点。Code// head ...

2018-09-07 15:24:35 420

原创 luogu P1338 末日的传说

题解本质就是算逆序对数。 n个降序排列的数能提供 (n-1)*n/2 个逆序对,这是n个数能创造出的最多逆序对数。 那如何排列出任意m个逆序对呢? 显然第一步是找出能覆盖 m 的最小 n 来,即 (n-1)*n/2 >= m。 n 能覆盖,那么 n-1 就不能覆盖 m,而 m 与 n-1 的覆盖 之间的差值 dis = m-(n-1)*(n-2)/2,如何填补? 这个差值 d...

2018-09-06 11:35:54 151

原创 luogu P2158 [SDOI2008]仪仗队 【模版】

题解数论类型的题目,一头雾水。第一次见到欧拉函数,这里记录一下。Code筛法/*特性 :1.若a为质数,phi[a]=a-1;2.若a为质数,b mod a=0,phi[a*b]=phi[b]*a3.若a,b互质,phi[a*b]=phi[a]*phi[b](当a为质数时,if b mod a!=0 ,phi[a*b]=phi[a]*phi[b])*/int m[n...

2018-09-06 10:55:31 228

原创 USACO 2.4.4 回家 Bessie Come Home

题解最短路径题,以Z为起点,用Dijkstra算法秒杀。注意会有重复边要取最小。Code// head files excludedusing namespace std;const int INF = 1e8;int n,m;int dis[53][53];int sd[52];bool vis[52];void init(){ for(int i=0;...

2018-09-05 16:47:05 257

原创 USACO 2.4.3 牛的旅行 Cow Tours

题解图论入门级的题目。算最短路径,处理需要点技巧。代码很巧妙,琢磨一下啊。Code#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#inc

2018-09-05 11:59:54 335

原创 luogu P1052 过河

题解一道难点不在于dp的dp题目。转移公式很简单for( i = 1->n ) for( step = s ->t ) f[i] = min(self, f[i-step] + v[i])// v[i]:在i处有无石头我脑子比较抽用的max()来递推的,其实也一样。 但是这条路有 1e9 长,直接下去是肯定超内存又超时的,必须要想办法把无用的路...

2018-09-04 21:15:02 116

原创 luogu P1541 乌龟棋

题解难得做出一道dp题,虽然方法不是最好的,但记录一下思路,方便和大佬的比较一下。 这题有点像背包,但不一样的地方在于 背包问题中背包的价值和放的位置无关,本题中顺序会影响其价值。 显然所有的顺序都要被考虑。 这里简要给出我的思路: 设有 F [ pos , i-j-k-t ] ,表示到达第pos位置时候以 i-j-k-t (四种卡片消耗数量)此情况 能够取得最大价值。 每到一个...

2018-09-04 14:58:17 95

原创 luogu P1538 迎春舞会之数字舞蹈

题解看到别人都用了什么结构来存储,我就比较简单粗暴了,直接按 行 - 字 - 列 的顺序依次考虑输出对象。 想清楚了其实不难,就是稍微繁杂了点,有点像小学奥赛题…Code#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#inclu...

2018-09-02 15:19:58 309

空空如也

空空如也

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

TA关注的人

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