- 博客(20)
- 收藏
- 关注
原创 模板:C++ sort函数
sort函数是我认为c++里超级方便的一个函数。本人不是什么大佬,本篇文章就是分享一下目前我学习sort函数的一些心得,当然还是以模板为主,帮助大家理解如何去用sort函数。
2024-04-03 12:29:37
685
1
原创 洛谷 P1088 [NOIP2004 普及组] 火星人
如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,41,2,3,4 和 55,当它们按正常顺序排列时,形成了 55 位数 1234512345,当你交换无名指和小指的位置时,会形成 55 位数 1235412354,当你把五个手指的顺序完全颠倒时,会形成 5432154321,在所有能够形成的 120120 个 55 位数中,1234512345 最小,它表示 11;你的任务是,把火星人用手指表示的数与科学家告诉你的数相加,并根据相加的结果改变火星人手指的排列顺序。
2024-04-02 13:40:47
1266
1
原创 洛谷 CF1829E The Lakes
对于这个问题呢,我们先把map都输入进去,然后再去遍历,当遍历到一个点不是0的时候,是不是就代表着我们遇到了一个湖,对不对,然后我们就以这一个点为突破,开始bfs,然后在bfs的时候呢,不断记录每个湖的深度记录下来,记录下之后呢,千万别忘了让他变成零,防止我们后续寻找下一个湖的时候找到的是同一个湖。大致给大家翻译一下,就是给你一个二维数组当做地图,地图中有诸多个湖,是湖的每一个点的数值代表着湖的这一点的深度,整个湖的深度是所有点的深度和,0代表陆地。定义一个连通块的权值为该连通块中所有数的和。
2024-04-02 13:21:10
728
1
原创 洛谷 P1025 [NOIP2001 提高组] 数的划分
大家想一下,我们在全排列的时候为什么会出现重复呢,是不是就是因为他们没有规律,每一个位的数在排列的时候都要从1枚举一遍所以会重复,那也就是说如果我们按照一定的规律去枚举是不是就会有效避免重复呢?这就是我们记录上一个点的原因,因为我们打算按照升序的顺序枚举,让排出来的数按照从小到大排列,因为题目要求排列中的元素可以重复,所以在dfs的时候我们要从last开始枚举,一直到n-sum,如果到n的话会超时,这就是为什么还要记录一下到目前所有元素的和。例如:�=7n=7,�=3k=3,下面三种分法被认为是相同的。
2024-04-02 13:00:27
282
1
原创 洛谷 P1747 好奇怪的游戏
这个游戏类似象棋,但是只有黑白马各一匹,在点 �1,�1x1,y1 和 �2,�2x2,y2 上。它们得从点 �1,�1x1,y1 和 �2,�2x2,y2 走到 (1,1)(1,1)。定义xrr yrr分别存储x和y方向,拿走日为例,如果马向右上走,那是不是x需要加一,同时y需要加一,如果往右下走呢,是不是x需要加一,y需要减一...那么一共有多少种情况呢?对于 100%100% 数据,1≤�1,�1,�2,�2≤201≤x1,y1,x2,y2≤20。
2024-04-02 12:48:18
565
1
原创 洛谷 P1219 [USACO1.5] 八皇后 Checker Challenge
ps:这里会涉及到皇后所在的列和主对角副对角怎么求的问题,我们在遍历的时候是用 i 遍历列,所以lie的话自然就是lie[ i ],但是主 副对角就比较麻烦,我们可以结合我上边给大家的图找规律,发现对主对角线zhu和i 的关系是:zhu[i-x-n] 副对角线是fu[x+i-1] (x是dfs遍历到了第几行,n是有几行几列几个皇后)一个如下的 6×66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。这只是棋子放置的一个解。
2024-04-01 21:06:35
1324
原创 YTU 1712 排列的字典序问题
好了我们看完了第一位是1,如果第一位是2,想得到比给定数列小的数是不是只能让第二位比给定的数列的数小啊,我们可以看到第二位数字是6,那么就是说第二位的数字可以是1,2,3,4,5但是我们的第一位这个时候已经是2了,(这是一个很重要的地方)所以第二位只能是1,3,4,5,OK我们可以得到答案2:4*6!再找1,后边有比他大的数吗?我们以样例给定的数列为例子 2 6 4 5 8 1 7 3,我们先看第一位,第一位是2,那么是不是所有以1开头的数都比2小啊,那以1开头的数有多少个呢,答案1:是1*7;
2024-03-31 10:21:20
1775
1
原创 YTU 3045 希尔插入排序
给你10个数,设计一个程序,实现希尔插入排序算法,并输出这个序列的希尔排序过程。1行10个数,两个数之间有空格隔开,所有数均不超过10910^9109。每个排序过程输出一行,直到排序完成。
2024-03-30 18:33:12
193
原创 YTU 1423 / 洛谷 1459 2.1.3 Sorting a Three-Valued Sequence 三值的排序
举个例子,对于下面的数列,有三个1,两个2,三个三,1 3 2 1 2 3 1 3,分别记为a[1],a[2]...a[8],你要怎么做呢,我们要换a[2]数字“3”,那么是和a[4]换呢还是和a[7]换呢,答案肯定是和a[7]换对吧,因为这样的话我们在后期就会比和a[4]换少一步,因为我们不用再去处理那个3了,他在那待着就行了对吧。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候。写一个程序计算出,给定的一个由 1,2,31,2,31,2,3 组成的数字序列,排成升序所需的最少交换次数。
2024-03-30 17:41:38
502
原创 YTU 2872 学生信息排序
定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院系,要求在随意输入 555 个学生的相关信息后,按照学号从小到大顺序输出这些学生的信息。分析:很简单的排序题目,我这里直接用了一个结构体和sort函数,如果了解过sort函数的同学我强烈建议去学一学,比自己写排序好用100倍。先输入 555 名学生的信息,按学号顺序排序输出后在输入要统计的院系名称。先按学号从小到大的顺序输出学生信息。数据输出之间有 444 个空格。
2024-03-30 10:11:43
122
原创 YTU 3090 团体操排序
本道题主要思想就是把color所有的值先赋值给pcolor,然后对pcolor进行冒泡排序,pcolor[j]+k-1指的是pcolor中第j行的字符串中第k个字符,排序的时候只需要比较这一个字符的大小,然后对整个一行字符串就是pcolor[j]整体交换排序。每班站一行,每个人在班级所在行中的位置是固定不变的,班级所在行是可以改变的。/* 按新序输出各班的颜色 *//* 按原序输出各班的颜色 *//* 在此之间完善代码 *//* 在此之间完善代码 *//* 初始化指针数组 *//* 冒泡排序 */
2024-03-30 09:59:26
420
原创 洛谷 P2712 摄像头
对于第一个问题,我们要先构建摄像头结构体vi,里边有sit是摄像头所在的位置,m是可以监视几个点,vrr指的是检视点是哪几个,sign是判断这个摄像头有没有被砸坏。while呢是先进行判断再决定要不要遍历)第 22 到 �+1n+1 行是摄像头的信息,包括:摄像头的位置 �x,以及这个摄像头可以监视到的位置数 �m,之后 �m 个数 �y 是此摄像头可以监视到的位置。为了便于砸毁摄像头,松鼠歹徒们把所有摄像头和摄像头能监视到的地方统一编号,一个摄像头能被砸毁的条件是该摄像头所在位置不被其他摄像头监视。
2024-03-29 20:18:44
365
1
原创 洛谷 P8772 [蓝桥杯 2022 省 A] 求和
我下边写了一个 typedef long long ll,其实就是为了方便把long long的功能赋给了ll,ll就有了long long同样的功能,所以我在后边定义ans和sum的时候用的ll,当然你按部就班的写long long也没问题。对于 30%30% 的数据, 1≤�≤1000,1≤��≤1001≤n≤1000,1≤ai≤100。给定 �n 个整数 �1,�2,⋯ ,��a1,a2,⋯,an, 求它们两两相乘再相加的和,即。输出一个整数 �S,表示所求的和。
2024-03-29 18:51:53
460
1
原创 洛谷 P8662 [蓝桥杯 2018 省 AB] 全球变暖
我们可以采用dfs的方法进行搜索,在搜索过程中时刻判断会不会出现上边的形式,我们 可以借助一个变量num,如果正在搜索的那块陆地的上或下或左或右是陆地,那么 num++,一旦num==4,那就说明满足了上边的形式,那我们让发现的总陆地数减去1即 可。ans是发现的新大陆的数量(在搜索的时候如果发现该大陆不会被淹没的话就直接减去1了)请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
2024-03-29 12:55:05
786
1
原创 YTU 4220: 我自横刀向天笑,去留肝胆两昆仑
对于第二种情景:橙留香先手,使用技能1与技能2,并使用普通攻击,一共造成 6 点伤害,西方求败剩余 4 生命。橙留香又被敌人抓住了,这一次是可恶的 cyt ,又名西方求败,但是 cyt 很笨,橙留香找机会挣脱了束缚,却很不巧正面碰上了 cyt,于是橙留香边喊着:我自横刀向天笑,去留肝胆两昆仑,边和 cyt 展开了殊死搏斗...橙留香的血量为 NNN 点,cyt 的血量为 MMM 点,假设橙留香和 cyt 的普通攻击都可以造成 1 点伤害(菜鸡互啄),但是橙留香有两个技能,第一个技能是“我自横刀向天笑”
2024-03-28 16:52:23
529
原创 洛谷 P1135 奇怪的电梯
该题可以当成一道bfs搜索来做,算是一道经典模板,建议吃透。bfs一般会和结构体和队列搭配使用,推荐使用queue,相当方便。该题题解的解释是针对有一些bfs基础的同学,如果对bfs一点也不清楚还是建议先了解一下bfs原理再来看题解。
2024-03-26 18:14:29
185
原创 YTU 3379
猫猫学长带着今年的预备队员参加了sdibt大学第五届趣味编程大赛,本次比赛共有九道题,编号依次为A、B、C、D、E、F、G、H和I。比赛按照每人的做题数目和累计罚时进行综合排名。(1)做题数目多的排名高于做题数目少的;(2)在做题数目相同的情况下,按照罚时的累计时间进行排序,罚时时间越少排名越高。其中罚时按照如下规则计算:如果题目没有做对过,则该题目不累计入总罚时。否则按照该题目第一次做对的时间累计入总罚时,同时累计该题的做错次数,每错一次,增加20分钟罚时。
2024-03-26 16:53:20
825
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人