- 博客(23)
- 收藏
- 关注
原创 蓝桥杯16-14
生日蜡烛等差数列求和:等比数列求和:方格填数全排列的思想题目代码快速排序快速排序的变体:单指针,双指针,三指针题目代码去除尾1x&(x+1):去除后面连续的1X&(x-1):从右到左第一个和其后面的都变0输出二进制数字:题目代码寒假作业还是全排列题目代码剪邮票因为走不了T型,所以枚举所有5个格子的组合,再判断是否连通。还是全排列:全排列的话和那个寒假作业的区别在于避免重复,就是在for里面每一步都要弄一个if(i>0&&a[
2021-04-16 00:16:11
322
原创 蓝桥杯17
跳蚱蜢题目标题:跳蚱蜢如图 p1.png 所示:有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,…),至少要经过多少次跳跃?注意:要求提交的是一个整数,请不要填写任何多余内容或说明文字。代码#include<bits/stdc++.h&g
2021-04-13 00:25:15
211
原创 bfs:最短路径,传送门
题目原题传送分析简单的bfs模板,注意bfs的判断都放在first之后和扩展之前。代码#include<bits/stdc++.h>#define MAX 305using namespace std;int n,m;char gra[MAX][MAX]={0};int vis[MAX][MAX]={0};int dx[]={-1,1,0,0};int dy[]={0,0,-1,1};//右左下上int sx,sy;struct point{ int x,y
2021-04-11 00:30:37
631
原创 洛谷P2404-整数拆分
题目输入一个整数7输出1+1+1+1+1+1+11+1+1+1+1+21+1+1+1+31+1+1+2+21+1+1+41+1+2+31+1+51+2+2+21+2+41+3+31+62+2+32+53+4代码#include<bits/stdc++.h>#define MAX 9using namespace std;int n;int a[MAX]= {1}; //第i个数用了几次void dfs(int cnt,int sum){
2021-04-10 01:08:43
394
原创 洛谷P1101-单方向搜索特定序列
题目原题传送门输入8qyizhonggydthkjynwidghjiorbzsfgzhhgrhwthzzzzzozoiwdfrgngyyyygggg给定n的方阵,搜索里面按照八个方向中的任意一个方向的制定字符串“yizhong”。输出就是除了找到的东西其余的都输出为“*”。输出yizhonggy*****ni*****oz***hh***zo**i*****ny****g分析首先是指定方向的dfs,那就将方向也放入参数。然后在main函数中设置参数的for循环
2021-04-09 23:33:22
177
原创 洛谷P1019-求一堆单词能拼起来最长
题目原题传送输入:5 //一共5个单词attouchcheatchoosetacta //给定的开头输出:23按照这个给定的开头每个单词最多使用两次,最长能拼接成多长的字符串。分析首先:拼接后的字符串最长——那就需要拼接的两个单词是拥有最少重叠部分的。所以一个重点就是求指定俩个单词(首单词,尾单词)的最少重叠部分。倒着来可以保证重叠最小。我们从首单词的尾巴开始。因此首先需要一层循环控制现在从首单词的第i个位置(i:n -> 1)开始去找和尾单词是否重合。之后里面要判断是
2021-04-09 00:47:40
162
原创 余数再加回去:蓝桥饮料换购
题目传送代码#include<bits/stdc++.h>#define MAX 19001using namespace std;int n;int yushu=0;int sum=0;int gai=0;int main(){ ios::sync_with_stdio(false); cin>>n; sum=n; while(n>=3){ yushu=n%3; n/=3;
2021-04-04 21:03:33
111
原创 DFS:蓝桥杯-数字三角形
题目原题传送门代码#include<bits/stdc++.h>#define MAX 101using namespace std;int n;int a[MAX][MAX]={0};int res=-1;void dfs(int hang,int lie,int left,int right,int sum){ if(hang<1||lie<1||hang>n||lie>n||lie>hang||abs(left-right)>
2021-04-04 20:32:41
272
1
原创 dp:0-1背包,扩展例题
dp方法模板洛谷#include<bits/stdc++.h>using namespace std;int len[5]={0};int homework[25]={0};int a[25][2000]={0};int total=0;int main(){ ios::sync_with_stdio(false); for(int i=1;i<=4;i++){ cin>>len[i]; } for(int
2021-04-03 20:56:25
119
原创 状态dp——吃奶酪
题目原题传送门分析题目大致就是现在给定了n个点的坐标,从原点出发,求遍历这些点所需的最短距离。是旅行商问题。状态dp能够解决最大20的问题。这个题目最大是15,所以用状态dp。其中状态k(001101)表示的是共6个点,其中点1,3,4被走过了,在这个路径中。判断点i有没有在路径中:k&(1<<(i-1))==1表示i在路径k中要从路径k中删除点i,回到点i之前的点j:dp[j][k-(1<<(i-1))]大致框架//一大堆初始化://把dp中的每一
2021-04-02 23:23:14
205
原创 全排列——next_permutation
不同类型的全排列next_permutation(a,a+n)就是把a的前n个按照全排列的顺序找到下一个排列,将a改成那个。 如果还有就返回true,否则返回false。一个全排列的最后一个的next_permutation虽然返回false,但是a还是会被改变成一个全排列的第一个。与之对应的还有prev_permutation。还能够自定义比较方法,和sort一样。int类型int a[]={1,3,2};int main(){ do{ for(int i=0;
2021-03-19 13:36:30
243
原创 P1157 组合的输出,还是n个数选k个问题
题目原题思路其实还是深搜,要输出的话那就需要一个数组来保存每一位选择好的数字。最终当index>r的时候,输出数组的前a个的值。代码#include <bits/stdc++.h>using namespace std;int n,r;//n为总数,r是要选几个数int a[25];//记录index位的数字,index最大为rint vis[25];//记录数字i有没有被用过,i最大为nvoid dfs(int index){ if(index>r){
2021-03-15 23:07:09
133
原创 洛谷P1036-深搜
题目原题目总结给定n个数字里面选择k个数字进行操作,使用递归操作。也类似于深搜。代码#include <bits/stdc++.h>using namespace std;int ans=0, n, k, a[25];bool prime(int x) {//判断素数的 int i; for (i = 2; i <= floor(sqrt(x)); i++) { if (x%i == 0) { return false; } } return tr
2021-03-15 22:09:20
179
原创 三连击
题目代码最开始的思路,九个数字,那就分别对每一位从1-9都试一遍,所以是九个for循环,其中保证前面用过的数字后面不用的方法就是在for里面设置条件让i2!=i1啥的,代码如下,但是不完全正确。#include<bits/stdc++.h>using namespace std;int main(){ int xx,yy,zz;// int a[10]={0,1,2,3,4,5,6,7,8,9};// int mark[10]={0};// mark
2021-03-15 15:39:07
167
原创 统计方形
题目给定n*m的正方形,求其中能够容纳的正方形和长方形的数量。原题思路暴力枚举nm的大矩形中能够容纳(n-i+1)(m-j+1)个小的长i,宽j的矩形。具体原因why,其中i==j时就是正方形。代码#include<bits/stdc++.h>using namespace std;int main(){ int n,m; long long total=0; long long zheng=0; cin>>n>>m;
2021-03-14 22:30:56
294
原创 十六进制,八进制,二进制,十进制之间转换
cin, cout#include<bits/stdc++.h>using namespace std;int main(){ long long a; cin>>a;//按照十进制读入 cout<<setiosflags(ios::uppercase)<<hex<<a;//按照十六进制输出,其中setiosflag是为了将输出中的字母转化为大写的 cin>>oct>>a;//按照八
2021-03-14 21:44:59
163
原创 DFS——全排列+寒假作业(都是一维数组填数字)
DFS模板void dfs(参数) //参数就是需要变化的数字,像这俩道题就是指第index个数字{ if(达到最终状态){ 目的语句; //类似ans++或者输入什么东西。像全排列就是输出从1-n的全排列 } if(不被允许的状态){ return; } if(特殊条件){ //用来剪枝,就像寒假作业这个题就是当index到第4位时,前三个有没有满足1+2=3.没有的话就return return; } //进行扩展 for(扩展方式){ //这俩题就是设置i从1开始,作为
2021-03-11 22:00:12
165
原创 (bfs/bfs)连通块+最短路径
读入大量字符:快读配置将cin,cout和scanf和printf解除绑定,提高效率。之后只能用cin,coutstd::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);在输入是很多字符时,需要吃掉换行符cin>>N; char next; cin.get(next); while(next!='\n') cin.get(next);例如在读入一个N*N的地图时://读入地图
2021-03-11 11:27:16
505
原创 暴力枚举——三体问题+快读模板
题目描述:三体人将对地球发起攻击。为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体。其中,第 i 层第 j 行第 k 列的战舰(记为战舰 (i, j, k))的生命值为 d(i, j, k)。三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 t 轮攻击用 7 个参数 lat, rat, lbt, rbt, lct, rct, ht 描述;所有满足 i ∈ [lat, rat],j ∈ [
2021-03-10 16:10:55
229
原创 时间问题+scanf读取+出现闪退问题
时间读取使用sscanf()sscanf(time,"%d:%d:%d (+%d)",&h,&m,&s,&d);将读取内容换算成秒之后再次转换为时间:带天数:printf("第%d天的%02d:%02d:%02d\n",totalSec/(3600*24),totalSec/3600%24,totalSec/60%60,totalSec%60);不带天数:printf("%02d:%02d:%02d\n",totalSec/3600,totalSec
2021-03-09 22:40:52
335
原创 生成法+set+upper_bound
素数,丑数解决方案:试除法素数为例:从2除到根号n生成法素数为例:最开始的素数是2.3.5,所以在后面可以去掉2的倍数,3的倍数,5的倍数丑数为例:只有2,3,5为因子是丑数。所以所有的丑数都由这三个乘起来形成的。所以后面的是22,23,25,33,3*5,。。。 所以后面的数其实是:一个队列的头部乘以2,3,5.然后插入到原始队列中。其中的重点是排序和去重。这俩个可以用set来实现。set.insert(t)默认是去重的,且排序。例题(2018年蓝桥杯:第几个幸运数)大致意思:求
2021-03-09 21:44:29
377
原创 快速幂+素数判断+最大公因子+回文数
快速幂+素数判断+最大公因子快速幂思路:简单说就是降幂,比如说a的b次方,如果b是偶数,该数就可以表示为(a2)(b/2),如果b是奇数,可以 另写一个数保存此时的底数然后幂数减1,又可以继续降幂了,知道最后。优化代码。注意__int64输入防止爆int代码:int quickpow(__int64 n,__int64 m,__int64 mod)//n是底数,m是幂数,mod是取余数{ __int64 ans=1,base=n; while(m) {
2021-03-06 17:21:42
212
原创 快速幂取模+字符串数字转换
快速幂取模+字符串数字转换快速幂取模long long modexp(long long a, long long b, int mod){ long long res=1; while(b>0) { //a=a%mod;(有时候n的值太大了会超出long long的储存,所以要先取余) if(b&1)//&位运算:判断二进制最后一位是0还是1,&的运算规则为前后都是1的时候才是1; res=
2021-03-06 01:41:54
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅