算法
“小技巧”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
-
1160 队列安排
所谓的插入左右实质上什么,其实没有什么含义,比如i要插到k左面,其实i就是在k的前面。首先对于前后其实就是左右的关系。同样的i在k的右面就当成后面。这个题不是我想的这么简单。原创 2022-08-02 22:17:47 · 264 阅读 · 0 评论 -
1147 连续自然数和
好像还可以用前缀和,其实都是一样的。很简单的暴力,没有什么难的。原创 2022-08-02 16:50:35 · 155 阅读 · 1 评论 -
1100 高低位交换(二进制常识)
给定一个数,将其转为32位二进制,然后分成前16和后16位。将前16和后16进行一个交换,得出来一个新数,将其转化成十进制。进行前十六后十六的交换,左移16位,剩下的就是后16位。右移十六位就是前面的16;两者相加就是最后的数了。前后就已经进行一个交换了。因为二进制涉及到一个窗口。...原创 2022-07-31 22:50:50 · 799 阅读 · 0 评论 -
1105 平台(空间)
那么如果球从最上面的平台i,球从左边掉下来,只要判断它下一个(需要我们自己模拟)j的左沿是否小于等于最上面的左沿。也就是这种情况,我们之分析了一个,也就是左边的,再分析一下右边就好了,同理的一个。j的右沿是否大于等于1的左沿,如果是如此,就找到答案,输出即可。同样,要使从最上面的右边掉下来,一样,只不过反过来了。那j的左小于i的左,可是j的右不大于i的左呢?这是一个区间性的问题,我很害怕这样的问题,这样,j的左小于i的左,j的右边大于i的左。就是一个很简单的模拟,两个线段的输出而已。这样肯定就肯定调不到。.原创 2022-07-31 19:38:30 · 119 阅读 · 0 评论 -
1088 火星人(next_permutation函数)
题意其实很简单,给定一个数12345然后加上一个整数312344=1+3=4。·函数next_permutation下一个排列组合。所以这个题其实是一个模拟,很简单的模拟。这种排列顺序其实和排列组合有点类似。124534(手动模拟)所以我们该输出12453。...原创 2022-07-20 20:54:34 · 172 阅读 · 0 评论 -
1079 密码(二进制常识)
输入的是密匙也就是加密的规则,最后的是需要加密的密文,然后让你破解一下。然后我们需要补充一个二进制常识;所以无论是大写字母还是小写字母x。只是一个很简单的模拟,类似于这样密码加密我之前也接触过。x&31(11111B)的值就是x在字母表里的顺序。然偶有一个不好弄得就是超位现象需要特殊处理。所以我们首先要先弄明白往前或往后的位数。我记得之前做的时候对于密码这个很好弄。然后就是往前搞,按照位子来就好了。...原创 2022-07-18 17:17:48 · 1081 阅读 · 0 评论 -
1061 JAM的计数法 *
首先判断第n个位置的字母后继能不能填如果不能填,那在看看第n-1位置的字母后继能不能填,如果还不能,那在看看第n-2位置的字母后继能不能填……以此类推,也就是类似于退步,一个一个来,直到可以填了为止。你的任务是对于从文件读入的一个Jam数字,按顺序输出紧接在后面的55个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。其中s为所使用的最小的字母的序号,t为所使用的最大的字母的序号,w为位数。那么每一个位置上的字母就是前一个位置上字母的后继字母。这个题貌似很复杂的样子。......原创 2022-07-17 22:00:44 · 93 阅读 · 0 评论 -
1045 麦森数
还记不记得10的幂的特性,位数和指数有着一种特殊的关系;这个题其实和质数不质数其实没什么关系。所以我们可以直接求2。只是很简单的一个快速幂吗。这个题,可以分成两个部分。这个题的第一问就求出来了。就是一个裸的高精快速幂。快速幂不用我再详细说了。然后最后的那所有位数。......原创 2022-07-17 20:34:57 · 105 阅读 · 0 评论 -
1042 乒乓球
几乎就是那些增长我自信值得题目。没啥好说得,就是一个单纯得模拟。这个题算是比较经典了。原创 2022-07-16 19:46:58 · 93 阅读 · 0 评论 -
1022 计算器的改良
方程中并没有括号,也没有除号,方程中的字母表示未知数。就是普通的算法,纯模拟。就是解一元一次方程呗。原创 2022-07-16 13:04:40 · 275 阅读 · 0 评论 -
1024 一元三次方程
记f(x)=0存在x1x2且x1原创 2022-07-16 12:55:33 · 151 阅读 · 0 评论 -
1008 三连击
然后将所有的a加起来如果是9说明每一个数都用了,也就是1~9都可以了,那就满足了。题意让我们求每一个三连击的数,不如我们直接按照三连击条件筛选数,然后输出就好了。这个题很简单,没有什么难理解的,就是这里需要用到一个算法。这个就是一个逆向思维的。...原创 2022-07-15 17:07:46 · 96 阅读 · 0 评论 -
1003 铺地毯
题意首先一个平面,看成一个平面直角坐标系的象限,然后有什么地毯(也就是一个矩形),然后这些个矩形编号1~n,将这些个地毯会有重合覆盖,给定一个查询的点,问这个点最上面的地毯是什么。因为我们最后要输出的是一个序号,这个序号肯定是有序的,那么我们从后往前找,只要找到的一个覆盖我们要查询的地毯,那么这个地毯肯定就是最大的,没有必要从头开始找一个最大的。另外就是覆盖的条件判断很好搞,只需要判断查询的点的坐标在不在此地毯的一个点的横坐标为起点,横坐标加此地毯长为终点的范围内;同理,纵坐标也是这样判断。...原创 2022-07-15 16:26:11 · 99 阅读 · 0 评论 -
2104 二进制
2104 二进制原创 2022-07-14 22:34:11 · 118 阅读 · 0 评论 -
1076 寻宝
1076 寻宝原创 2022-07-08 16:05:02 · 147 阅读 · 0 评论 -
8254 王国比赛
8254 王国比赛原创 2022-07-08 15:32:16 · 195 阅读 · 0 评论 -
手写max,min,abs函数
手写max,min,abs函数在信息学奥赛中,一定要手写函数,这样时间更快在考场上,时间复杂度是真的很重要的东西int maxx(int a,int b){ if(a>b) return a; else return b;}int minn(int a,int b){ if(a<b) return a; else return b;}int abss(int a,int b){ if(a-b<0) return -(a-b); else return a-b原创 2021-10-16 19:00:45 · 1270 阅读 · 0 评论 -
1094 纪念品分组
1094 纪念品分组那些个橙色的题目,基本上都是我在巅峰时候做过的唉,距离考试,快要开始了,下周五就是了,加油啊,周天是妈妈的生日 ,加油好好为妈妈献上生日礼物感觉目前做完这几个题之后,再去做做排序和递推吧,还有就是用搜索来肝爆动态规划,弄完就去学whk#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int w,n;int ans;int tou,wei;原创 2021-10-16 17:11:33 · 121 阅读 · 0 评论 -
1308 统计单词数量
1308 统计单词数量给定两个字符串,求第一个字符串再第二个字符串中出现的次数没啥难得#include <stdio.h>#include <string.h>int main() { char a[11], b[1000001]; gets(a); gets(b); strcat(a," "); strcat(b," ");//在ab后各加一个" ",减小配对的难度 int i, s, n=0, l, j, ss=0,原创 2021-10-16 16:20:53 · 105 阅读 · 0 评论 -
1981 表达式求值
1981 表达式求值一个模拟题,很水貌似也没有这么水这个题还算是简单的了,只有两个运算乘积和求和所以还算比较和谐吧,其实当前输入的运算符需要到下一个来操作大概是如此好像py的代码一句话就好了,我真是服气了#include<cmath>#include<iostream>#include<cstdio>#include<cstring> //ch存储上一个运算符,xg为新读入的运算符//记得sum初始值赋为0;cj为其中一段运算(即一段连原创 2021-10-16 15:01:30 · 94 阅读 · 0 评论 -
2239 螺旋数组
2239 螺旋数组这个题的又名蛇形矩阵,是二维数组的经典例题这个题就是模拟了本题好像很水的样子#include<bits/stdc++.h>using namespace std;int a[100][100];int n,m,r1,r2,c1,c2;int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>原创 2021-10-16 14:27:15 · 103 阅读 · 0 评论 -
2141 珠心算测验
2141 珠心算测验哇哦哇哦哇哦哇哦其实这个题我做过类似的,很简单,好像用枚举是可以的吧,大概时间是O(n2)或者可以用hash来标记这个题不是和A-B差不多吗其实就是一个暴力枚举的算法首先,我们需要开一个数组,用来存储输入的数然后再将每一个数的和,标记再一个新的数组里面最后判断两个是不是都有就好了好简单啊#include<iostream>#include<cstdio>using namespace std;int t[200005],g[200005]原创 2021-10-16 14:01:04 · 136 阅读 · 0 评论 -
2118 比例化简
2118 比例化简如题,这个题就是让求一个化简比例啊哈,想起来这个题的考点了,叫做交叉相乘法,还记得这个题我当年是在半夜做的好像这个题也可以用枚举的方法来做a/c=b/d等价于ad=bc所以我们如果想让现分子和现分母的比大于A和B的比值,就可以将式子化简成现分子B<=现分母A接下来呢?#include<cstdio>#include<cstdio>#include<algorithm> using namespace std;int gcd(i原创 2021-10-16 13:40:04 · 218 阅读 · 0 评论 -
2058 海港
2058 海港这个题可以说给我的印象很深刻,因为这个题我是在五一假期在ljr老师家做的,当时还是阴天下雨貌似这个题很简单,我基本上都忘了我是怎么做的了,好像就是一个很简单的统计吧貌似这个并没有我想象的这么简单啊好像有很多的小细节需要解决首先,一开始的统计很好统计,接下来的需要特殊判断的是时间有没有超24小时的,超了24小时就不该算了,需要将统计的个数减去一个1,如果此时为0了,就不能统计上不同国籍了好像理解了#include<iostream>#include<cstdio原创 2021-10-16 12:26:41 · 108 阅读 · 0 评论 -
2010 回文日期
2010 回文日期这个题是2017年的模拟题啊,貌似有一个叫做买铅笔的,就先忽略掉吧,一开始那一个还以为是背包呢,其实就是很简单的小模拟啊这个题真的好水,不就是一个枚举吗,预计时间是8*8,这真是水…但是好像,用暴力枚举的方法是AC不了的,只有天60分,所以我们需要用一种更快的方法直接判断的话,这个题是可以得到60分的这个题的思路就是说将所有的回文数构造出来,如果在两个范围内,就可以加一个答案了#include<iostream>#include<cstdio>#in原创 2021-10-16 11:52:20 · 104 阅读 · 0 评论 -
3955 图书管理员
3955 图书管理员貌似这个题就是用暴力枚举的方式?是的,普及组的题,永远不会有什么算法,只是一些简单的暴力或者模拟这个题的思路就是用每一个数组和编码进行匹配,看看是否可以匹配成功,预计时间是O(n2)但是这个题的难点就是如何比较,用一个位数数组,类似于保存10的倍数#include<iostream>#include<cstring>#include<string>#include<algorithm>using namespace std原创 2021-10-14 21:53:19 · 120 阅读 · 0 评论 -
5016 龙虎斗
5016 龙虎斗从今天开始一个一个做每一年的题目,只做前两道就好了其实每一年的前两个我都做过了,看他的第一眼,我还以为是一个动态规划这个题貌似就是一个模拟好吧?似乎并没有什么难的首先,我们需要记录一下每一个工兵个数然后更新那个天降神兵的营,最后以m为分界线,维护他们的实力和,最后每一个营都没句一下气势,比较差异的最小记录一下就好了#include<iostream>#include<cstdio>using namespace std;inline long long原创 2021-10-13 21:54:02 · 128 阅读 · 0 评论 -
对拍
对拍对拍是考场上解题的关键必须得会神么是对拍?对拍,主要是用于在考试或者比赛时的验证,可以通过自己针对性的数据找出程序的错误之处。可以将你打的程序与写的暴力程序比较,验证自己算法或猜想的正确性,也可以在做题时放后台运行,用于检测代码是否存在错误比如你在做一道题,你会写暴力,也会写正解,你正解的答案不一定是对的,但是你确定暴力的答案一定是对的,这个时候你就可以打一个对拍程序,用对拍程序验证你写的正解的正确性质这就是对拍啊,明白了不过怎么对拍呢,各位大犇也有用bat来做的,不过,我不会,也懒得学了原创 2021-10-10 10:00:44 · 177 阅读 · 0 评论 -
1105 平台
1105 平台好像之前和ksy一起做过,做了45分最烦做这种的平面题了所以这个题就是一个模拟?我连题意还没有读懂啊其实呢,这个题就是一个很简单的模拟,首先,我们先画一个图(其实也不用画,题目中就有)那么如果球从最上面的左边掉下来,只要判断它下一个的左沿是否小于等于最上面的左沿,2的右沿是否大于等于1的左沿,如果是如此,就找到答案,输出即可同样,要使从最上面的右边掉下来,同理,只不过反过来了#include<iostream>#include<cstdio>#i原创 2021-10-02 14:14:54 · 102 阅读 · 0 评论 -
1241 括号序列
1241 括号序列对于这种题,实在是经常的见唉,24 48 55 100分,终于做出来了挺简单的,就是一个很简单的模拟,只不过我害怕这样的题不会干所以,干了干#include<iostream>#include<cstdio>#include<algorithm>#include<string>using namespace std;string s;int i,j;int a[105];//标记数组 int main(){ ci原创 2021-10-02 11:46:09 · 74 阅读 · 0 评论 -
1309 瑞士轮
1309 瑞士轮2011年普及组的题目,国庆七天文章破300,这几天狂练练题目,然后剩下的几天只需要将所有做过的题再看一遍貌似这个题是一个排序的题目,练习排序是一个好题首先,这个题,和去年的那个直播获奖挺像的每组比赛的胜者:赛前,总分是按降序排的;获胜后都得1分,仍是降序;每组比赛的负者:赛前,总分是按降序排的;不得分,仍是降序。先按初始分数排序,然后按分数高低两人一组比赛;胜者入队A,负者入队B。这样A、B自身仍是有序的;只需进行合并操作即可,合并操作的复杂度是O(n),而如果用快排其复杂原创 2021-10-02 11:14:09 · 2070 阅读 · 0 评论 -
5661 公交换乘
5661 公交换乘貌似这个题是一个阅读理解题,比较变态啊模拟,定义橙色题有点草率了,这个题一直没做过貌似这个题,是贪心?是模拟其实这个题并不难,就是一个很简单的模拟,按照他说的来,按照他说的做,其实蛮简单的这个题我拖了两年了#include<iostream>#include<cstdio>#include<algorithm>#include<string>using namespace std;const int SIZE=1e5+原创 2021-10-02 10:43:08 · 109 阅读 · 0 评论 -
5682 次大值
5682 次大值囧囧ing这个题用暴力肯定能拿40分#include <iostream>#include <algorithm>#include <cstring>#define N 300000using namespace std;int n;int a[N+5];int main(){ cin >> n;//定义n for(int i = 1;i <= n;i ++){ cin >&g原创 2021-10-01 16:21:49 · 114 阅读 · 0 评论 -
7072 直播获奖
7072 直播获奖emmm这个题也是非常的简单的,也很好理解,我不知道为什么去年的题这么简单有手就能那200,而我却爆了个0?这个题目的意思就是输入一个数列表示成绩,然后每次限制一个分数线,输出刚刚达到分数线的人所以,我们很好的想到了sortn*n log n的时间复杂度,阿这,真的好吗所以看到数据范围只有600的时候,为什么不用用桶?!?!?!?!?!?!?!?!呜呼…#include<iostream>#include<cstdio>#include<a原创 2021-10-01 14:50:41 · 134 阅读 · 0 评论 -
7071 优秀的拆分
7071 优秀的拆分这是老子的第一年参赛的第一道题,这么多年了,已经2年了,不过我还是死在了之前,这道题是我考场上打表,回家在马桶上想起来的题目其实这道题并不难理解,也不难,不知道我这个大傻逼为什么在考场上非要打表。。。这个题和一个叫做幂次方的很像幂次方 博客所以,这个题,真的不难首先对于一个n,先用一个循环分解他的最大的幂,然后因为循环会多算一次,就再除以一个2,用一个辅助数组存储,再用总的减去接着循环,直到边界n为1或者为0最后还得判断,n为0说明是一个优秀拆分,直接输出,否则输出-1多原创 2021-10-01 14:35:06 · 350 阅读 · 0 评论 -
(娱乐)铠甲勇士
(娱乐)铠甲勇士炎龙侠:烈焰刀,烈焰镖,烈焰弓,封魔帖:封魔斩,必杀帖:火焰拳烈焰刀之封魔斩帖:斩邪除怪,溶于烈焰,消于晨曦风鹰侠:风鹰剑,风鹰弩 ,风鹰环,封魔帖:穿风刺,必杀帖:风鹰腿风鹰剑之穿风刺帖:降妖化兽,破于疾风,止于瞬间黑犀侠:流星枪,水甲盾,封魔帖:狂瀑扎,必杀帖:狂瀑顶流星枪之狂瀑扎帖:碎魔伏暴,灭于狂瀑,平如镜水地虎侠:裂地爪,裂地刀,封魔帖:裂地劈,必杀帖:裂地掌裂地爪之劈狱驱暗:毁于怒土,复始大地雪獒侠:震雷斧,震雷棍,封魔帖:霹雳削,必杀帖:震雷拳震雷斧之震累削原创 2021-09-11 10:37:51 · 158 阅读 · 0 评论 -
终极时间复杂度
终极时间复杂度时间复杂度,简称TC,是无论你学习到什么境界都会涉及到的一个东西计算机能快速完成运算处理,实际上,它需要根据消耗一些处理器的资源,要想让算法高效运行时间复杂度,评估执行程序所需的时间,可以估算处理器的使用程度空间复杂度,评估执行程序所需的存储空间,可以估算出内存的使用程度时间频度一个算法执行所消耗的时间,从理论上是不能算出来的,必须运行测试才能知道,但我们不可能也不需要对每一个算法都上机测试,只需要知道那个算法花费的时间多,哪个花费的少就行了,一个算法的语句的执行次数就是语句频度或原创 2021-08-30 19:29:12 · 110 阅读 · 0 评论 -
栈表达式
栈表达式栈的用处就是用来求前缀,中缀,后缀的表达式三种方法中缀,就是符号在中间的算式前缀,就是符号在前面的算式后缀,就是符号在后面的算式一:后缀表达式进行求值1.首先我们建立一个栈,用来存数,注意进行扫描表达式中的元素。2.如果遇到一个数,就把他入栈。3.如果遇到符号,就取出栈顶两个元素,求值然后入栈。(符号要进行枚举,枚举±*/)4.直至最后当栈里只剩下一个元素,就是这个表达式的值我们再来了解一个函数,叫做stoi,是一个字符串转整形的函数,但是不能随便用二:中缀转后缀1.建立一个原创 2021-05-17 22:03:58 · 347 阅读 · 0 评论 -
1019 单词接龙
1019 单词接龙其实感觉这道题和 拼数 很像这一道题必须得进行去重这道题又是一道水题,因为数据不过是20,通过枚举加去重因该可以过首先我们要分几个版块:1.搜索函数,这个函数首先我们要枚举这n个单词,人后再对每一个单词循环枚举它的一个接龙长度,进行判断能否拼接接龙,然后做拼接操作,进行标记操作,然后递归回溯,这里记得每一次都要存最长长度保存答案2.判断函数,这个函数比较寒碜,其实就是将两个字符串进行当前枚举的长度k,将两个字符串的前k个和后k个进行循环比较3.拼接函数,这个函数运用了字符原创 2021-05-02 20:58:18 · 118 阅读 · 0 评论 -
排序算法
插入排序 O(n1~2)插入排序,之前张老师讲过,今天重新进行一个整理插入排序的思想就是每次取出一个数然后从有序序列的最后一个开始比较,(其具体情况就看是升序还是降序,这里用升序来举例子)如果最后一个元素大于这个新的元素,说明这个新的元素不能放在这里,应该往前循环比较,直至碰见比自己小了,那说明后面比自己大,前面的自己小,就将这个新数插进去还有一点需要声明就是说,我们得将一个基准数比较,意思就是说第一个数不需要排序,我们后面的数根据它来比较,即最后一个元素...//输入处理for(int i=1;原创 2021-05-09 18:50:30 · 140 阅读 · 0 评论