- 博客(127)
- 收藏
- 关注
原创 AtCoder ABC001D - 感雨時刻の整理 题解及翻译(差分,排序,占位输出方式)
给定一个变量 m, 之后是 m 组时间段以“时分-时分”给出要求将其转化之后再合并转化方式为,起始时间向前移动到能被5整除,结束时间向后移动到能被5整除,如:1148-1210转化为1145-1210合并方式为,将重复的时间段合并。
2023-09-17 09:05:58 225
原创 AtCoder ABC001A積雪深差,ABC001B視程の通報 题解及翻译(模拟)
给定两个雪深 h1,h2, 以 int 形式给出,求 h1-h2;
2023-09-17 08:06:44 233
原创 天文观测理论——已知像素大小、焦距,求像素分辨率
一、已知像素大小、焦距,求像素分辨率1. 计算像素分辨率为 Pix, 单位:角秒/像素像素大小为 d2d^2d2, 单位:平方毫米焦距为 fff, 单位:毫米总像素为 rerere, 单位:平方毫米感光面积为 sss. 单位:平方毫米d2=sred^2=\frac{s}{re}d2=resPix =206265df\frac{206265d}{f}f206265d2. 代码#include<iostream>#include<cstring>#includ
2021-12-17 16:41:57 2073
原创 买天文望远镜必看——已知望远镜焦距、相机画幅,求视场(附代码,实时更新)
天文计算表一、已知望远镜焦距、相机画幅,求视场1. 计算θ1,θ2,θ3\theta_1,\theta_2,\theta_3θ1,θ2,θ3 分别表示横、纵和对角向视场角直径,单位:弧度d1,d2,d3d_1,d_2,d_3d1,d2,d3 表示相机横、纵和对角向画幅,单位:毫米fff 表示望远镜焦距,单位:毫米θ1=2tan−1(d12f)\theta_1 = 2tan^{-1}(\frac{d_1}{2f})θ1=2tan−1(2fd1)θ2=2tan−1(d22f)\t
2021-12-17 03:13:45 1375
原创 动手用graphviz快速画一棵好看简洁的多叉树/有向无向图
下载并安装graphviz官网下载地址笔者下载的版本:安装时在这一步选择加入环境变量。开始绘图首先创建或打开一个用于存图片的文件夹,建议文件路径为英文。在里面创建一个 dot 文件,这里命名为 tree, 然后用文档编辑器编辑,如下图所示:digraph binaryTree{ node[shape=circle,color=red,fontcolor=blue,fontsize=10]; root[color=blue,fontcolor=black,fontsize=20
2021-11-30 02:10:19 831 1
原创 【犀首】 个人题解编写标准
【犀首】 个人题解编写标准一、架构标准应至少包括标题、题目描述、算法分析、代码四个部分,必要时可以加入参考文献部分。二、内容标准1.标题居中,一级标题,与正文之间空一行由 “题源” + “题号” +“题目”组成。题源与题号之间无空格,题号后插入小数点,小数点和题目之间插入空格。题源是网站的直接用网站名,题源是比赛的,加上中括号,但中括号内不加空格AcWing1097. 池塘计数[NOIP1998普及组T1]. 三连击洛谷1251. 餐巾计划问题[NOI2011]. 智能车比赛
2021-11-19 20:56:18 259
原创 从零开始的linux_manjaro+vim+fish shell+i3酷炫操作和配置(持续更新中......)
这里写目录标题一、前言二、安装虚拟机三、安装vim,fish和oh-my-fish四、配置喜欢的fish样式五、用FileZilla给虚拟机里的linux传文件一、前言笔者此前几乎没有vim使用经验,也没有安装过linux虚拟机,偶然在b站上看到TheCW的视频,遂惊异于linux和vim配合的巧妙与vim配置和fish shell等结合的惊艳。决定从零开始对其进行研究,并将学习路线和遇到的障碍及解决方式记录下来。二、安装虚拟机安装VMware16官网安装较慢,我是在网上某个软件园用下载器下载
2021-11-12 03:44:32 3267 1
原创 在flask中用ajax实现页面实时更新(轮询)功能——以课表实时更新为例
一、用ajax实现将时间传入HTML界面(用按钮查询)1. 下载jquery,将其放在static里面下载地址2. 写HTML页面,放到template里面,并写对应的视图函数HTML:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>轮询</title></head><body><
2021-10-26 08:36:42 4726 1
原创 flask学习时的出错笔记(错题本)(实时更新)
多开时的注意事项:多个项目共用同一个端口号的时候,如果都开启了,则会默认是用第一个项目。学习的时候同时开了几个项目,然后怎么改后面的项目网页都不动,才发现是因为前面的没关。同一个项目的不同app启动的时候也是一样的。...
2021-10-23 16:33:53 128
原创 Educational Codeforces Round 108 (Rated for Div. 2) E. Off by One 题解
一、题目大意给你n个点,每个点可以且必须进行一次位移(横向向右移动一个单位或者纵向向上移动一个单位),问位移之后有多少对点可以进行匹配(只要两个点和原点三点共线即可匹配),每个点只能匹配一次,问最大匹配数目和匹配方案。样例1也强调了,每个点只能匹配一次,且可能有重合点,每个点也必须要移动。二、算法分析①采用tan值的方式衡量是否共线,由尽量避免小数出现的原则,tan值可以用分数结构体来刻画。②化点为边,一个点有两种平移方式,那么就可以用一条斜边来代替原图中的一个点,如图所示对于斜边来说,两个端
2021-10-22 05:25:38 527
原创 Codeforces Global Round 14 D. Phoenix and Socks 题解
一、算法分析如何分析这样的题目?宏观来看,将两只袜子匹配的花费可能是0,1或2,经过分析,先把0花费匹配完之后,不会影响最终结果。那么我们的目标就是使花费2的尽可能地少。花费0的匹配为:同色不同左右的匹配。花费1的匹配为:①同色同左右的匹配;②异色不同左右的匹配。花费2的匹配为:同色同左右的匹配。在花费0的匹配结束后,每种颜色的袜子就只剩下左袜子或者右袜子。设第i种左袜子的个数为l[i],右袜子为r[i].在进行完花费0的操作之后:不妨设左袜子个数l_cnt>=r_cnt,则优先用l_
2021-10-22 05:19:48 193
原创 做月饼-制作过程及图文笔记
一、最终成果展示二、学习步骤和笔记一、观看教程【小高姐】广式月饼 清晰的纹路 漂亮的色泽 你在家里也可以做出来二、开始制作三、笔记及经验(以下括号里是图片代号,从最上面的成果展示算起)一、做转化糖浆:1.新鲜柠檬,取汁过筛。(p4)2.锅中加入柠檬汁,水和糖,水糖比例1:2,每个柠檬对应300克水。3.水烧开,不要搅拌,让糖自己受热融化,当温度到达105度之后,说明糖基本融化,此时转小火等待温度继续升高。(p5)4.当温度升高到128度左右,说明糖浆基本制作完
2021-10-20 20:01:51 827
原创 Codeforces Global Round 14 F. Phoenix and Earthquake题解(生成树,dfs)
一、题目大意及算法分析给n个点,m条边的图,所有边被摧毁,然后要建一棵树把点都连起来。第i个点有ai的材料,要连一条边需要x的材料,要修i点到j点的边,必须i点和j点总共有x的材料。在修好的边上可以运输材料。问能否建出这棵树,要连哪些边,连边顺序是什么。1.输出YES的条件是什么?猜想,如果所有点权和不到(n−1)∗x(n-1)*x(n−1)∗x,则一定可以在任意一个生成树上完成建图,只要考虑顺序就行了。(心里想的是材料反正可以随便运)证明如下:①对于一棵生成树,其某个叶子结点u,若其点权大于
2021-10-20 17:10:04 197
原创 Codeforces Round #720 (Div. 2) D. Nastia Plays with a Tree 题解
一、算法分析基本算法是树上统计+贪心。笔者参赛时是不会做的,后来参考了洛谷too_late 的博客 的 https://www.luogu.com.cn/blog/115857/solution-cf1521d题解才码出这道题。下面简单地描述一下思路:1.划分链的种类,可以将链划分为1号链和2号链。2.对于每个子树,最好的情况是能保留成1个1号链,或1个二号链。所以对于一棵子树,设子树的根结点为u,u的子结点为集合{v},则对于所有的v,其可能是1号链的根结点(记为1号v)或2号链的根结点(记为2号v
2021-10-19 23:59:25 129
原创 Flask项目的几个基本配置和操作(持续更新)
一、下载windows的cmd下的pipC:> py -m pip install sampleprojectgitC:>git clone https://github.com/.../...二、httphttp程序秘钥SECRET_KEY=os.getenv('SECRET_KEY','secret string')三、数据库SQLALCHEMY数据库配置dev_db = prefix + os.path.join(os.path.dirname(a
2021-10-19 20:43:30 227
原创 《Flask Web开发实战:入门、进阶与原理解析》 笔记代码学习和注释(第五章-数据库)
一、ORMORM用类来定义表,类的实例化代表了表的一整行,那么整个表就是类的实例化的LIST.二、在表单中实现增删改查代码样例增@app.route('/new', methods=['GET', 'POST'])def new_note():#是一个比较典范的程序 form = NewNoteForm() if form.validate_on_submit(): body = form.body.data note = Note(body=bod
2021-10-19 19:45:19 650
原创 Codeforces Round #720 (Div. 2) B.Nastia and a Good Array 题解(思维题)
一、算法分析基本题意是给定一个数列,然后每次可以找两个数,将这两个数交换位置,再将两个里面较大的那个换成任意一个大于等于这两个数中较小者的数。或者将两个数中较大的那个变得更大。最终目标是相邻两个数互质。要求这样的操作次数少等于n次。这道题的一个关键信息是操作次数不需要求最小值。构造方式:因为不一定求最优,所以可以每次只解决一位。题目中还有一个特殊条件,即x和y的范围比原数列的元素范围大所以可以先找到数列里面的最小的数,然后从头到尾将其它数都变成大于原序列的最小值的最大可能值的大质数,比如本题可以用1e9
2021-10-19 17:59:34 140
原创 Codeforces Round #719 (Div. 3) E. Arranging The Sheep 题解
一、算法分析将星号聚拢到中间的那个星号上,可以使得总路程最短。每个星号的路程花费是其距离中间星号之间的点号个数。最开始自己想到的方法是前缀和维护,但是TLE了。正解如下。二、代码及注释正解: 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<cstdio> 5 #define LL long long 6 using namespace std;
2021-10-19 03:41:59 154
原创 Codeforces Round #719 (Div. 3) D. Same Differences 题解
一、算法分析很经典的做法,把原来的aj−ai=j−ia_j-a_i=j-iaj−ai=j−i进行移项,变成aj−j=ai−ia_j-j=a_i-iaj−j=ai−i,从而生成一个新的数组bi=ai−ib_i=a_i-ibi=ai−i,对于新数组,只需要统计某个数bib_ibi之前有多少个和其相等的数即可。对于这种题目,要求就是要做得快,代码要一气呵成尽可能不要出错,要思考缜密。比如这道题的bbb数组元素下标就可能小于0,那么就要用到偏移量或者是用map数组。二、代码及注释 1 #inc
2021-10-19 03:36:53 227
原创 Codeforces Round #719 (Div. 3) C. Not Adjacent Matrix 题解(构造题)
一、写在前面按说这就是一道典型的构造题。但是由于参赛经验不足,自己又去多想能否用枚举,甚至dfs等做法来做,而忽略了数据范围的问题,导致最后没有完成这道题。二、算法分析参赛时就想到了按奇数和偶数构造。因为要求差1,那么我们按照先填奇数再填偶数的策略来做,这样可以保证奇数的部分左右相邻至少差1,偶数部分同理。考虑上下相邻,更是差2∗n。那么就只用考虑衔接处即可,这里有个巧妙的方式就是奇数和偶数都从小到大排列,这样衔接处差距最大。只有2这个特例无法构造,输出-1即可三、代码及注释 1 #include
2021-10-19 03:34:37 130
原创 《Flask Web开发实战:入门、进阶与原理解析》笔记代码学习和注释(第四章-表单)
一、表单和其生成通过WTForms设置的表单,可以把HTML代码直接封装起来,直接通过它给的类就可以做表单,不需要自己写HTML代码来实现模板的功能。通常把表单类用一个单独的python文件存起来。二、表单处理流程引用书上的流程图:和模板可以自定义测试器和过滤器一样,表单也可以自定义验证器。三、文件上传文件上传主要应该考虑安全问题。...
2021-10-18 20:01:32 304
原创 《Flask Web开发实战:入门、进阶与原理解析》笔记代码学习和注释(第三章-模板)
一、模板的形成模板的设计,可以看做是一个一层一层装饰的过程模板(template),对应的是MTV结构里面的T,在flask里面主要用来进行对HTML的渲染,然后显示到用户面前。所以其基础是HTML模板里面除了HTML语法之外,还包含了控制语句和很多有用的函数,以及一些有用的规则。还可以通过自定义全局函数、全局变量、过滤器、测试器等函数来丰富模板的功能。二、模板的组织局部模板:可以让模板之间进行继承,实现重复子模板的重用宏:同样地,子代码也能重用,其实它就相当于是模板里的“函数”,注意
2021-10-18 03:49:21 416
原创 Codeforces Round #720 (Div. 2) A. Nastia and Nearly Good Numbers 题解(思维题)
(之前写在小号里了,现在大号找回来了,所以再搬回来)一、算法分析首先想到将x+y=z写成Ai+Aj=ABk,这样可以约掉A.变成i+j=Bk,然后令i=1,j=B−1,k=B即可。接着构造数据考虑特殊情况,要求x和y不能是AB的倍数,则需要考虑对于以上的构造方式,什么情况下x和y是AB的倍数,结果只有B=1的情况下成立,则特判B=1的情况即可。同理,对于题目中要求x,y,z三个数不同的条件,特判B=2的情况即可。二、代码 1 #include<iostream> 2
2021-10-18 01:05:39 102
原创 《Flask Web开发实战:入门、进阶与原理解析》笔记代码学习和注释(第一章-初识Flask 和 第二章-Flask与HTTP)
一、前言学习这本书,然后自己对其中的代码加了一些注释,便于学习和理解。代码可以在https://github.com/greyli/helloflask/下载到二、C/S和B/S先看两张书上的图:第一张图是C/S架构的图,C(Client,用户),S(Server,服务器)第二张是Flask Web的工作流程客户端先通过http,用URL向服务器端发送请求,然后服务器端通过一个约定好的叫做WSGI的标准,与Flask程序交互,返回Flask处理好的东西,然后再通过Web服务器传回客户端浏览器。
2021-10-18 01:04:18 850
原创 Codeforces Round #719 (Div. 3) B.Ordinary Numbers 题解(打表,技巧处理)
(之前写在小号里了,现在大号找回来了,所以再搬回来)这道题目深刻地告诉了自己基础的重要性!!!读完题目直接想到打表,然后因为是有序数组,所以直接想到二分。到这里按说这道题应该很好做,但是自己首先,忘了lower_bound和upper_bound的区别,然后去查区别,浪费了时间。然后又因为其它地方的错误,交上去WA了,自己又以为是二分没写好,于是把二分改成了手写二分,结果手写二分又忘了怎么写,于是去查手写二分,又浪费了时间,而且交上去还是WA.然后仔细读代码后发现,打表时少打了一位,应该打到1e9-1
2021-10-17 11:18:22 196
原创 Codeforces Global Round 14(补题,到F题)
(之前写在小号里了,现在大号找回来了,所以再搬回来)A. Phoenix and GoldB. Phoenix and PuzzleC. Phoenix and TowersD. Phoenix and SocksE. Phoenix and ComputersF. Phoenix and Earthquake
2021-10-17 11:10:10 83
原创 Educational Codeforces Round 108 (Rated for Div. 2)(补题A~E)
(之前写在小号里了,现在大号找回来了,所以再搬回来)AB太简单,略CDE
2021-10-17 11:05:18 67
原创 Educational Codeforces Round 108 (Rated for Div. 2) C. Berland Regional(思维,枚举)
(之前写在小号里了,现在大号找回来了,所以再搬回来)一、算法分析基本思路就是枚举,还有利用vector的一些小技巧。注意的点是,最后的枚举方式要有一个小优化,不能外层对k进行枚举,如果那样会超时,因为两层循环都是n。而是应该开一个res数组,以组为单位去维护res数组。二、代码及注释 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring>
2021-10-17 10:56:24 115
原创 Educational Codeforces Round 108 (Rated for Div. 2) A. Red and Blue Beans(思维题)
(之前写在小号里了,现在大号找回来了,所以再搬回来)一、思想刚开始拿到这道题有点懵,但是很快确定了基本的解题方向:r,b,d三个参数,通过其中两个来确定另一个的合理范围,从而确定另一个是否合法。然后开始造了几个数据,以 2 7 3 为例,可以考虑把2拆成一个一个的,则每个最大可以配一个4(因为1 + 3 == 4),所以对于这个样例,b的最大取值可以是8,所以7是合理的。二、代码及注释 1 #include<iostream> 2 #include<cstring>
2021-10-17 10:49:58 120
原创 [USACO17FEB]Why Did the Cow Cross the Road III 牛为什么过马路(floodfill连通块)
一、算法分析基本算法:floodfill连通块具体实现:看数据范围,发现不同的点之间如果要一个个判断肯定是超时的,所以要统计各个连通块的规模,不同连通块的点不可到达,乘法计算就行。统计连通块规模用floodfill,乘法计算可以用一个前缀和来优化一下。记录本题中路径的方式这里用了一个set数组。二、代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#
2021-10-17 10:13:21 226
原创 AcWing 1469. 围栏规划题解(并查集)
(之前写在小号里了,现在大号找回来了,所以再搬回来)一、算法分析先画图分析然后基本思路是并查集,并查集的根节点维护一个矩形,用来表示框住当前并查集的这个块最小的矩形,每次动态更新。更新方式,先对于每个块存这个矩形的左上和右下两个点的位置,对于每条连边,用新加的块更新原有的块的四个坐标,然后把新加的块并到原有块的并查集里面二、代码及注释//先画图分析//然后基本思路是并查集,并查集的根节点维护一个矩形,用来表示框住当前并查集的这个块最小的矩形,每次动态更新。//更新方式,先对于每个块存这个矩形
2021-10-17 10:08:32 74
原创 丢了的号找回来了,开心!!!
笔者之前因为电脑坏了加上之前的手机卡注销掉了,导致这个号登不上了。当时也没找客服只是开了个小号。但是最近看自己之前写的文章,觉得这个号丢了蛮可惜的,就找客服联系,结果很快就把号找回来了,值得庆祝!!!...
2021-10-17 10:00:10 67
转载 (转-指路向)A way to Practice Competitive Programming : From Rating 1000 to 2400+
一、写在前面笔者是codeforces小菜鸟,刚打了几场div2,完全不熟悉上面的构造题,所以rating奇低,然后就开始边消沉边逛codeforces论坛,然后发现一个大佬写的博客是教如何训练的,顿觉如获至宝。(链接如下)A way to Practice Competitive Programming : From Rating 1000 to 2400+然后仔细看发现他这个只是一个介绍,干货在另一个链接里面,然而由于那个是谷歌的,无法直接打开。百度了一下也发现查到的对这篇文章的转载也都是这个谷歌
2021-10-17 09:55:31 563 4
原创 Acwing350巡逻 题解(树的直径)
(之前写在小号里了,现在大号找回来了,所以再搬回来)一、算法分析1.首先深搜找一次直径。具体方法是先从1点(随便一个点都行)把树拎起来,然后找一条最长路p,再以p把树拎起来,找一条最长路q,最后p和q之间的最短路就是直径(第一次找的时候,最关键的是要记录下来路径上对应的边的id)(用vis数组保存起来,但是注意这个vis后面不会全部都赋值为-1)2.p和q之间的最短路的边权赋值为-13.若k>1,则树形dp再求直径二、注意的点1.前置技能:Acwing1072树的最长路径2.记录链式前
2021-10-17 09:41:52 145
原创 (DP006)洛谷P1772 [ZJOI2006]物流运输
一、算法分析先分析题意,首先看到题目,物流运输,再结合题意,发现这个问题并不是问从起点走到终点只走一次的情况。而是问在每天都有物流的情况下,如何规划路线,使得各天的物流成本的总和最小。这道题还设置了某些天的某些点是不可达的,因此需要及时地更换新路线,而更换新路线是需要成本的。自己刚开始看这道题的时候没有头绪,然后看了标签之后发现是DP结合最短路来做,即外层是一个简单的线性DP,内层是最短路。对于DP部分,设f[i]表示前i天的最小花费,则可以选择第j到第i天走同一条路,j是决策变量。状态转移方程详见代码
2020-07-29 01:17:58 209
原创 ATCoder abc165_c Many Requirements
一、写在前面最近打了几场codeforces,发现自己很菜,因为不熟悉题型,很多简单构造题都做不出来。于是一边感叹自己菜一边翻博客,看到codeforces上一个大佬写了一篇很好的博客,TutorialA way to Practice Competitive Programming : From Rating 1000 to 2400+里面推荐要打div2的前几道题最好先刷一些Atcoder里面的beginner contest 的BCD题。同时多做一做codeforces的复现赛找找感觉。所以最近会
2020-07-19 02:36:57 440
原创 (并查集)[POI2005]SKA-Piggy Banks
一、算法分析个人做这道题就联想到了一本通里面一道名为格子游戏的题目,关键思路就在于如何利用并查集判环。方法是当即将连接的两个点已经处于同一个连通块的时候,就说明连接这两个点之后会产生一个环。对于本题而言,易证需要破罐的条件是出现环,且由于每个钥匙都一定在某个罐子中,因而不会出现某个呈链状的连通块。详见代码及注释二、代码及注释//当出现环形的时候,就需要破掉一个罐子//出现环形的条件:参考格子游戏那道题,当要连接的这两个点已经属于同一个连通块的时候,就说明连上之后会成环//就样例而言,一号钥匙在
2020-07-14 21:03:31 163
原创 (并查集)洛谷P1197 [JSOI2008]星球大战
一、算法分析个人看到这道题就想到之前做过的一道福建夏令营的题目,兽径管理兽径管理求的是最小生成树,但是给的边是动态的,这个时候我们可以倒着求,先求给出所有边的最小生成树,然后再去掉边,如果去掉的边恰好不在最小生成树上,则可以继承前面的答案,否则重新跑最小生成树。对于星球大战这道题,首先分析这道题是并查集求连通块,并查集求连通块的基本形式是先设连通块个数为点的个数,然后每次合并操作会将连通块个数减一。而这道题的思路和兽径管理很像。因为对于并查集而言,建边远比去边容易。因而我们考虑只建边的情况下解决这道
2020-07-14 11:02:20 256 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人