自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tomjobs的博客

弱校银牌退役菜鸡,秋招求内推

  • 博客(1780)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Codeforces橙名纪念贴

比我想象的简单,手速快就一把橙名了,可能通货膨胀严重吧。还有两个紫名号,再继续打上橙。从大一的垫底的小菜鸡,到现在慢慢感觉自己有点进步,这都是日积月累摸鱼的成效啊。

2021-01-20 10:40:12 393 3

原创 再见2020(ACM退役倒计时)

总结一下自己的2020:1000+的博客3个cf紫名湖南省赛2等奖蓝桥杯国一省一天梯赛国一省一CCPC威海铜加上乱七八糟企业比赛的奖最终ICPC济南完成了大一的心愿rk50+拿到了银牌(差2个多小时就金了呜呜呜,顺便后面3天考试喜提挂科)All Was Ended...

2020-12-27 17:19:48 613 8

原创 About Me

Hello World

2020-08-07 00:08:05 722 2

原创 菜鸡的2020训练日志

训练记录前言√ 代表赛中ACX 代表尝试但是没过O 代表没有AC但是补了题号的超链接代表题解地址,如果是有点想法但是暂时没过的,会写到后面。1. ICPC NEAU Programming Contest 2020链接:https://www.jisuanke.com/contest/9342/challenges题号情况题解A——B——CO计算几何D√单调栈直接可以求,你也可以结合倍增,强制在线的时候就只能倍增了EX

2020-06-06 23:00:00 753

原创 go语言中间件学习demo

Ginpackage mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context){ c.JSON(200, gin.H{ "message": "pong", }) }) router(r) r.Run()}func router(router *gin.Engine)

2021-06-17 11:19:33 36

原创 后端学习小记

前言现在是计算机科学的黄金时代,也是全人类的黄金时代,能够站在这样的黄金时代里,我感到无比的荣幸,我梦想能够成为黄金时代大潮中的一朵浪花,为人类智慧添砖加瓦。GoTour of go,有代码,有简介,1天就能撸一遍,有时再看还能学到新东西Go语言圣经,深入学习要的吧,正在阅读ing,之后想写写这本书的笔记,代码:https://github.com/basicExploration/Demos/blob/master/gop_homework7天用Go从零实现系列,简易版分布式缓存、RPC、HT

2021-06-11 18:51:53 115

原创 python对于csv,json格式的处理

csvcsv全称:Comma-Separated Values,也称为逗号分隔符文件。读入:import csvwith open(filepath, mode='r') as csv_file: rows = csv.DictReader(csv_file) for row in rows: # 这里写操作;读取出来的是很多个字典,每个row为一个字典,key值对应csv文件第一行 value1 = row['column1']

2021-04-21 21:39:45 48

原创 关于为什么要开始

2021-04-07 23:16:29 239 2

原创 Bounty Hunter II Gym - 100753B(DAG最小路径覆盖,二分图最大匹配)

题意:DAG图求最少多少条不想交路径覆盖全图思路:真没想到是二分图;建图以后就构成了二分图,一开始n个点对应n个路径,每进行一次匹配路径数减少一,所以结果就是n减去求最大匹配数。#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>#include<queue>#include<map>.

2021-03-21 18:44:04 75

原创 LeetCode 115. 不同的子序列(DP)

思路:定义dp[i][j]dp[i][j]dp[i][j]代表字符串sss前iii个字符中,存在多少个字符串ttt前jjj个字符的子序列。class Solution {public: int numDistinct(string s, string t) { int n = s.size(),m = t.size(); vector<vector<long long>>dp(n + 1,vector(m + 1,0ll)); .

2021-03-17 15:01:38 50

原创 LeetCode 315. 计算右侧小于当前元素的个数(树状数组)

思路:树状数组裸题class Solution {public: const static int maxn = 3e4 + 7; int c[maxn]; void add(int x,int v) { while(x < maxn) { c[x] += v; x += x & -x; } } int query(int x) { int res =.

2021-03-17 14:34:15 42

原创 LeetCode 188. 买卖股票的最佳时机 IV(DP)

给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入:k = 2, pr

2021-03-17 12:55:08 49

原创 LeetCode 123. 买卖股票的最佳时机 III(DP)

思路:定义dp[i][0/1/2/3]dp[i][0/1/2/3]dp[i][0/1/2/3]代表考虑前iii个股票,第二维0代表买了一次,1代表买了一次卖了一次,2代表买了一次卖了一次又买了一次,3代表买卖了两次。转移就是dp[i][0] = max(dp[i - 1][0],-prices[i]);dp[i][1] = max(dp[i - 1][1],dp[i - 1][0] + prices[i]);dp[i][2] = max(dp[i - 1][2],dp[i - 1][1] - p.

2021-03-17 11:53:57 50

原创 LeetCode 面试题 17.14. 最小K个数(快速排序求前k小)

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))思路:这里只介绍快速排序的解法,当然二叉堆也可以写,只不过期望复杂度更高一些。快速排序每次递归得到一个分界点,分界点左边的数都大于等于他,右边的数都小于等于他。因此可以判断分界点与kkk的关

2021-03-17 09:42:55 71

原创 LeetCode 59 螺旋矩阵 II(模拟)

思路:就硬模拟,不解释class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>>ans(n,vector(n,0)); int x = 0,y = -1,cnt = 1; int len = n; while(cnt <= n * n) { .

2021-03-16 23:40:31 35

原创 LeetCode 403. 青蛙过河(基础DP)

一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。 开始时, 青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1个单位。 另请注意,青蛙只能向前方(终点的方向

2021-03-16 21:38:12 63

原创 LeetCode 17. 电话号码的字母组合(基础搜索)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:0 <= digits.length <= 4

2021-03-16 20:13:58 33

原创 LeetCode 486. 预测赢家(博弈DP,最小化最大值)

给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者 1 ),那么玩家 2 可以

2021-03-14 20:52:13 52

原创 LeetCode 207. 课程表(判断有向图是否有环)

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。示例 1:输入:numC

2021-03-14 20:06:18 45

原创 二叉树前中后序的非递归遍历(用栈实现)

前序遍历class Solution {public: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*>stk; stk.push(root); vector<int>ans; while(!stk.empty()) { TreeNode* now = stk.top();stk.pop();

2021-03-14 11:11:59 44

原创 LeetCode 331. 验证二叉树的前序序列化(统计度数,栈)

给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。示例 1:输入: “9,3,4,#,#,1,#,#,2,#,6,#,#”输出: true示例 2:输入: “1,#”输出: false示例 3:输入: “9,#,#,1”输出: false思路:两种写法,统计度数和栈。统计度数: 根节点入度为0,出度为2;其他有效节点的入度为1,出度为2;每个无效节点的入度为1,出度为0。遍历过程中只要保证除了最后一个节点的出度,所有遍历过节点出度-

2021-03-13 21:12:40 42

原创 LeetCode 124. 二叉树中的最大路径和(递归)

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。思路:递归的时候记录从这个点往下得到路径的最大权值和;那么遍历每一个点,找到其左右叶子向下遍历能得到的最大路径和,加上该点点权,得到的就是包含子树经过中经过该点的最大路径和。需要注意的一点是点权可能是负的。class Solution {

2021-03-13 17:20:31 48

原创 Codeforces-1496 F. BFS Trees(生成树,最短路)

We define a spanning tree of a graph to be a BFS tree rooted at vertex ???? if and only if for every node ???? the shortest distance between ???? and ???? in the graph is equal to the shortest distance between ???? and ???? in the spanning tree.Given a gr

2021-03-13 13:25:29 70

原创 Codeforces-1496 E. Garden of the Sun(构造,机智)

There are many sunflowers in the Garden of the Sun.Garden of the Sun is a rectangular table with ???? rows and ???? columns, where the cells of the table are farmlands. All of the cells grow a sunflower on it. Unfortunately, one night, the lightning strok

2021-03-12 20:41:10 110

原创 Codeforces-1494 C. 1D Sokoban(推箱子,模拟)

You are playing a game similar to Sokoban on an infinite number line. The game is discrete, so you only consider integer positions on the line.You start on a position 0. There are ???? boxes, the ????-th box is on a position ????????. All positions of the

2021-03-12 15:03:01 153 1

原创 Codeforces-1494 D. Dogeforces(递归,建树)

The Dogeforces company has ???? employees. Each employee, except for lower-level employees, has at least 2 subordinates. Lower-level employees have no subordinates. Each employee, except for the head of the company, has exactly one direct supervisor. The h

2021-03-12 14:48:54 70

原创 Codeforces-1494 E. A-Z Graph(思维,回文)

You are given a directed graph consisting of ???? vertices. Each directed edge (or arc) labeled with a single character. Initially, the graph is empty.You should process ???? queries with it. Each query is one of three types:“+ ???? ???? ????” — add arc

2021-03-12 14:43:25 65

原创 洛谷P1742 最小圆覆盖(Welzl’s算法,三点求圆心的证明)

题意:求覆盖平面nnn个点的最小半径圆。思路:Welzl’s算法:最直接的方法就是模拟退火,不过这里不用。这里用的是Welzl’s算法求最小覆盖圆,期望复杂度为O(n)O(n)O(n)。基于的结论是:只要得出了覆盖前iii个点的最小覆盖圆,那么第i+1i+1i+1个点如果在圆外,那么第i+1i+1i+1个点就应该在圆上,因此可以根据第i+1i+1i+1个点与圆的位置,迭代的更新圆上的三个点(或两个点)。对于最小覆盖球也有同样的结论,但是因为要枚举球上4个点,且3点有共面的情况,所以事先比较复杂

2021-03-12 09:48:12 68

原创 LeetCode 224. 基本计算器(表达式求值)

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。示例 1:输入:s = “1 + 1”输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = “(1+(4+5+2)-3)+(6+8)”输出:23提示:1 <= s.length <= 3 * 105s 由数字、’+’、’-’、’(’、’)’、和 ’ ’ 组成s 表示一个有效的表达式思路:基础的表达式求值。class Solution {public: t

2021-03-11 19:42:01 68

原创 LeetCode 227. 基本计算器 II(表达式求值)

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = “3+2*2”输出:7示例 2:输入:s = " 3/2 "输出:1示例 3:输入:s = " 3+5 / 2 "输出:5提示:1 <= s.length <= 3 * 105s 由整数和算符 (’+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开s 表示一个 有效表达式表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1]

2021-03-11 19:40:55 53

原创 LeetCode 542. 01 矩阵(多源BFS,DP)

给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:[[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四个方向上相邻: 上、下、左、

2021-03-11 15:02:15 46

原创 2021年度训练联盟热身训练赛第一场 I. Full Depth Morning Show(换根DP)

题意:一棵树,每个点有权值aia_iai​,每条边有边权wiw_iwi​。两点的距离花费为(ai+aj)∗wk(a_i+a_j)*w_k(ai​+aj​)∗wk​,wkw_kwk​代表两点距离。求任意两点间距离花费的和。思路:常规的换根DP。定义f[i]f[i]f[i]代表以iii为根时,子树点距离根节点距离与其本身权值的乘积和;定义d[i]d[i]d[i]代表以iii为根时,根到其他点距离和;定义sum[i]sum[i]sum[i]代表以iii为根时,子树点权和。那么点iii的答案就是f[

2021-03-11 10:21:40 115

原创 2021年度训练联盟热身训练赛第一场 H. On Average They‘re Purple(最短路,染色)

题意:无向图,你可以给边染色,如果走过的相邻两条边颜色不同,那么权值加一。求一种染色方案,起点终点所有路径中染色得到权值的最小值最大,输出权值。思路:按照起点到其他点的最短距离分组,最短距离为1的组,权值一定为0,最短距离为2的组,一定有一种染色方法使得到这些点权值至少为1,最短距离为3的组,只有在距离2的基础上改变颜色就可以使得其权值至少为2。所以只要求出起点到终点最短距离即可。#include <cstdio>#include <cstring>#include .

2021-03-11 10:16:35 108

原创 2021年度训练联盟热身训练赛第一场 E. Early Orders(单调栈)

题意:求一个字典序最小的子序列,包含1~k所有数恰好一次。思路:类似单调栈,用一个栈记录以及选的数字。只要当前的数a[i]a[i]a[i]没在栈中,且比栈底的数小,并且栈底之后还出现,就出栈。bitsetbitsetbitset写法,参考了别人代码#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <set>#incl.

2021-03-11 10:09:41 52

原创 2021年度训练联盟热身训练赛第一场 G. Birthday Paradox(生日问题,组合推公式,概率)

题意:mmm个人过生日,然后出现了nnn个不同的生日组,第一组有a1a_1a1​个人,第二组有a2a_2a2​个人…第nnn组有ana_nan​个人。求这种情况出现的概率。思路:就是推公式概率题。总的方案数为365m365^m365m。先找出这nnn种生日,方案数为C(365,n)C(365,n)C(365,n)。然后对着mmm个人分组,也就是C(m,a1)∗C(m−a1,a2)∗...∗C(m−a1−a2...−an−1,an)C(m,a_1)*C(m-a_1,a_2)*...*C(m-a_.

2021-03-11 09:52:17 107

原创 2021年度训练联盟热身训练赛第一场 B. Code Names(二分图匹配,最大独立集)

题意:nnn个同组成不同序字符串。两个字符串有矛盾当且仅当仅交换一个字符串的一对字符可以使得两者相同。求一个子集使得子集中没有矛盾。思路:500的范围,先n3n^3n3建图。建好图后,可以发现实际就是求无向图的最小独立集,这是一个npnpnp难题。但是观察发现,这实际是一个二分图,二分图中最小独立集=最小点覆盖=n-最大匹配数。所以直接匈牙利(网络流)跑二分图最大匹配就好了为啥是二分图呢?你可以先构造一个三元环试一下,发现怎么都构造不出来。具体证明明早写,要吃早餐先睡了。#include&.

2021-03-11 00:00:50 110

原创 2021年度训练联盟热身训练赛第一场 C. New Maths(爆搜)

题意:给你一个结果xxx,求一个最小整数yyy通过与自己进行不进位乘法得到结果xxx。思路:假设xxx长度为nnn,则可以得到yyy的长度为(n+1)/2(n+1)/2(n+1)/2(要求n+1n+1n+1是偶数)。假设已经确定了最低的kkk位,那么最终结果的最低kkk位也确定了。直到确定了全部位,就可以确定最终结果的所有位。直接爆搜经过这样的剪枝可以剪掉很多,复杂度不会太高。#include<cstdio>#include<cstring>#include<.

2021-03-10 23:51:11 71

原创 2021年度训练联盟热身训练赛第一场 A. Weird Flecks, But OK(最小圆覆盖,模拟退火)

题意:空间有nnn个点,求3种维度中的平面能画出一个圆覆盖所有点的最小直径。思路:实际就是在三个维度作最小圆覆盖。模拟退火可以解决最小球覆盖,三维改成二维就是最小圆覆盖了。不过最小圆覆盖是有Welzl算法的,待补。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;c

2021-03-10 23:47:29 72

原创 Codeforces-1496 D. Let‘s Go Hiking(思维)

On a weekend, Qingshan suggests that she and her friend Daniel go hiking. Unfortunately, they are busy high school students, so they can only go hiking on scratch paper.A permutation ???? is written from left to right on the paper. First Qingshan chooses

2021-03-10 23:42:59 130 1

原创 Codeforces-1496 C. Diamond Miner

Diamond Miner is a game that is similar to Gold Miner, but there are ???? miners instead of 1 in this game.The mining area can be described as a plane. The ???? miners can be regarded as ???? points on the y-axis. There are ???? diamond mines in the minin

2021-03-10 23:31:12 138

空空如也

tomjobs的留言板

发表于 2020-01-02 最后回复 2020-07-23

空空如也

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

TA关注的人 TA的粉丝

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