ACM算法
文章平均质量分 93
acm
Yuki Sam
脚步要跟上野心
展开
-
PTA - 团体程序设计天梯赛-练习集(更新中)
L1-002 打印沙漏 (20 分)不算沙漏下面,上面部分随着行数增加,字符的总数依次是1,4,9,16…满足row^22-1<=n,逆推得上半部分行数(算上1)row=sqrt((n+1)/2),行最大字符数=2row-1。剩下的for循环实现。L1-003 个位数统计 (15 分)用map和数组统计,可以直接char数组,和dodo那题字符类型的通用了(例如按字典序输出一行英文句子每个单词的出现个数)ps:pta用不了gets,可以改用cin.getline#include<bit原创 2021-04-20 02:58:03 · 807 阅读 · 0 评论 -
二分算法入门
二分算法入门一、基本知识本质:找区间边界,通过满足特定的条件最终找到相应区间,也可以用来找边界(找左右边界时有区别)优点:相比于遍历每个数据的时间复杂度O(n),二分算法可以达到O(logn)的时间复杂度二、模板以HDU 2578 为例题意: 给定n个正整数和一个整数k。计算方程x+y=k有多少个不同的解。x和y必须在给定的n个整数中。两种解决方案是不同的。输入: 第一行包含一个整数T,然后是T行。每种情况以两个整数n(2<=n<=100000)和k(0<=k<2原创 2021-01-23 14:41:01 · 460 阅读 · 1 评论 -
bfs和dfs搜索入门
图:1、有向图:相当于马路的单行线,只能单向通过无向图:相当于一条普通的马路,既能来也能去,是双向均可实现的2、每条边可以标记数值,代表权值的意义,可以用来求最短路问题之类的带权的图叫做网3、两个顶点之间有路径则称二者是连通的,若图中任意两个顶点之间都连通,则称这张图为连通图4、建边:对于一张图最重要的是建边,首先要把边建好才能知道当前节点能够到达哪些节点做题时顶点数目是巨大的,如果用map矩阵存图如下:int mp[n][n];eg.x->y 表示x到y有一条边/原创 2021-01-25 11:23:12 · 250 阅读 · 0 评论 -
2020 ICPC 沈阳站 - I题 - Rise of Shadows (数论 | 同余+剩余系)
传送门:I题题意: 一个时钟,时针走一圈就是一天,现在给定时针走一圈要H小时,分针走一圈要M分钟,设 α=2πAHMα=\frac{2πA}{HM}α=HM2πA ,求一天中时针和分针夹角小于等于α的时刻有几次。这题首先有如下几个注意点:①分针是按照刻度一格一格走的,因此不能将小数的分钟算入,必须是整的(即不能按照角度来求)。②两者成角度会有两种情况,分针在时针左边成角度 or 在时针右边成角度![请添加图片描述](https://img-blog.csdnimg.cn/ba8608be97c原创 2021-07-29 10:25:52 · 2572 阅读 · 8 评论 -
线段树
一、基础知识1.为什么叫线段树(图源:hznu_acm上课课件)2.适用于什么问题(图源:hznu_acm上课课件)3.区间结合律满足: 区间加法、区间乘法、区间最值、区间异或和、区间gcd(最大公因数)…不满足: 区间众数、取模运算、部分函数运算(eg.f(x)=1x\frac{1}{x}x1)…线段树维护信息依赖于区间结合律4.线段树是什么(图源:hznu_acm上课课件)5.基本思路以区间和为例:如何实现:push up已知叶节点信息,通过区间结合律向上运算,求原创 2021-02-01 02:23:55 · 118 阅读 · 0 评论 -
c++理论知识点
第二章2.2decltype(x) y; //声明y变量的数据类型与x相同声明命名常量时必须赋初始转义字符(见下表)bool型变量的输出如果直接输出,显示结果为1或0;bool b=true;cout<<b<<endl; //显示结果为1如果要输出true或false,可使用操纵符boolalpha;bool b=true;cout<<boolalpha<<b<<endl; //显示内容为true类型定原创 2021-06-15 02:07:12 · 480 阅读 · 5 评论 -
Hash入门
Hash(哈希)一、概述1、HashHash其实是一种散列技术,散列技术是指在记录的存储位置 和它的关键字 之间建立一个确定的对应关系f ,使每一个关键字都对应一个存储位置 。即:存储位置=f(关键字)。这样,在查找的过程中,只需要通过 这个对应关系f 找到 给定值key 的映射f(key) 。只要集合中存在关键字和key相等 的记录,则必在存储位置f(key)处 。我们把这种对应关系f 称为散列函数或哈希函数。注: 关键字可以是很多形式,可以是字符串、数字、多项式、图形等等。2、Hash冲突原创 2021-02-01 20:58:28 · 263 阅读 · 0 评论 -
并查集
并查集一、概念英文:Disjoint Set,即“不相交集合”将编号分别为1…N的N个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在集合。常见两种操作:**合并:**把两个不相交的集合合并为一个集合**查询:**查询某个元素的根节点,可以判断两个元素的根节点是否相等判断两个元素是否在一个并查集中并查集针对的目标是集合,用于合并并查询不相关集合。天梯赛中出现得比较多,所以也得好好掌握。并查集多用于解决路线问题、亲戚问题等等二、优化1.路径压缩**理解:**简而言之就是通过原创 2021-01-22 22:55:46 · 279 阅读 · 0 评论 -
STL(初阶)
STL(初阶)一、介绍`stl:c++标准模板库容器:string vector queue stack set map list函数:sort reverse next_permutation二、容器<一>string1、定义头文件:#include<cstring>string s;string s="abc";string s("abc");string s(5,'a'); //填充5个astring s("123456",3);原创 2021-01-21 22:43:34 · 1012 阅读 · 4 评论