维生素C吃多了会上火-个人CSDN博文目录
2022蓝桥杯

目录

  • 第一讲 递归与递推
    • 1.递归实现指数型枚举
    • 2.递归实现排列型枚举
    • 3.简单斐波那契
    • 4.费解的开关
    • 5.递归实现组合型枚举
    • 6.带分数
    • 7.飞行员兄弟
    • 8.翻硬币
    • 9.总结
  • 第二讲 二分与前缀和
    • 1.数的范围
    • 2.数的三次方根
    • 3.机器人跳跃问题
    • 4.分巧克力
    • 5. 四平方和
    • 6.总结
  • 第三讲 数学与简单DP
    • 1.买不到的数目
    • 2.蚂蚁感冒
    • 3.

第一讲 递归与递推

1.递归实现指数型枚举

#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> v;
void dfs(int u){//随机多少个if(u==n+1){for(int i=0;i<v.size();i++) cout<<v[i]<<" ";cout<<endl;return;}dfs(u+1);v.push_back(u);dfs(u+1);v.pop_back();
}
int main(){cin>>n;dfs(1);return 0;
}

2.递归实现排列型枚举

#include<bits/stdc++.h>
using namespace std;
int n;int vis[100];
int a[100];void dfs(int u){if(u==n+1){for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;return;}for(int i=1;i<=n;i++){if(vis[i]==1) continue;a[u]=i;vis[i]=1;dfs(u+1);vis[i]=0;}
}
int main(){cin>>n;dfs(1);return 0;
}

3.简单斐波那契

#include<bits/stdc++.h>
using namespace std;
int a[100];
int f(int n){if(a[n]) return a[n];if(n==0) return 0;if(n==1||n==2) return 1;a[n]=f(n-1)+f(n-2);return a[n];
}
int main(){int n;cin>>n;a[0]=0,a[1]=1,a[2]=1;f(n-1);for(int i=0;i<=n-1;i++){cout<<a[i]<<" ";}return 0;
}

4.费解的开关

#include<bits/stdc++.h>
using namespace std;
char mp[505][505];
int c[5][2]={{-1,0},{1,0},{0,1},{0,-1},{0,0}};
void turn(int x,int y){for(int i=0;i<5;i++){int xx = x+c[i][0];int yy = y+c[i][1];if(xx>=0&&x<5&&yy>=0&&yy<5){mp[xx][yy]^=1;}}
}
int dfs(){int minn=30;for(int i=0;i<1<<5;i++){ //i=32种按法int cnt=0;char mem[505][505];memcpy(mem,mp,sizeof(mp));for(int j=0;j<5;j++){if(i>>j&1){ //如果为1表示要按turn(0,j);cnt++;}}for(int i=1;i<5;i++){for(int j=0;j<5;j++){if(mp[i-1][j]=='0'){turn(i,j);cnt++;}}}int k;for(k=0;k<5;k++){if(mp[4][k]=='0'){break;}}if(k==5){minn = min(cnt,minn);}memcpy(mp,mem,sizeof(mem));}return minn>6?-1:minn;}
int main(){int n;cin>>n;for(int i=0;i<n;i++){for(int j=0;j<5;j++) cin>>mp[j];int status = dfs();cout<<status<<endl;}return 0;
}

5.递归实现组合型枚举

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v;
void dfs(int u){if(v.size()==m){for(int i=0;i<v.size();i++){cout<<v[i]<<" ";}cout<<endl;return;}if(u==n+1){return;}v.push_back(u);dfs(u+1);v.pop_back();dfs(u+1);
}
int main(){cin>>n>>m;dfs(1);return 0;
}

6.带分数

#include<bits/stdc++.h>
using namespace std;
int vis[10];
int a[10];
int cnt=0;
int n;
int num(int x,int y){int sum=0;for(int i=x;i<=y;i++){sum=sum*10+a[i];}return sum;
}
void judge(){for(int i=0;i<9;i++){for(int j=i+1;j<9;j++){int a=num(0,i);int b=num(i+1,j);int c=num(j+1,8);if(n*c==a*c+b){cnt++;}}}return;
}
void dfs(int u){if(u==9){judge();return;}for(int i=1;i<=9;i++){if(vis[i]) continue;vis[i]=1;a[u]=i;dfs(u+1);vis[i]=0;}
}
int main(){cin>>n;dfs(0);cout<<cnt<<endl;return 0;
}

7.飞行员兄弟

#include<bits/stdc++.h>
using namespace std;
char a[5][5];
struct node{int x,y;
};
queue<node> que,que2;
void turn(int x,int y){if(a[x][y]=='-') a[x][y]='+';else a[x][y]='-';for(int i=0;i<4;i++){if(a[i][y]=='-') a[i][y]='+';else a[i][y]='-';if(a[x][i]=='-') a[x][i]='+';else a[x][i]='-';}return;
}
void dfs(){int minn=30;for(int i=0;i<1<<16;i++){int cnt=0;char b[5][5];memcpy(b,a,sizeof(a));for(int c=0;c<4;c++){for(int r=0;r<4;r++){if(i>>(c*4+r)&1){turn(c,r);cnt++;que.push({c,r});}}}bool flag=true;for(int c=0;c<4;c++){for(int r=0;r<4;r++){if(a[c][r]=='+'){flag=false;}}}if(flag){minn = min(minn,cnt);que2=que;} while (!que.empty()) que.pop();memcpy(a,b,sizeof(b));}cout<<minn<<endl;int size = que2.size();for(int i=0;i<size;i++){cout<<que2.front().x+1<<" ";cout<<que2.front().y+1<<endl;que2.pop();}
}
int main(){for(int i=0;i<4;i++) scanf("%s",a[i]);dfs();return 0;
}

8.翻硬币

#include<bits/stdc++.h>
using namespace std;
string s,t;
void turn(int x){if(s[x]=='*') s[x]='o',s[x-1]='o';else s[x]='*',s[x-1]='*';return;
}
void dfs(){int cnt=0;int n=s.length();for(int i=1;i<n;i++){if(s[i-1]!=t[i-1]){turn(i);cnt++;}}cout<<cnt<<endl;return;
}
int main(){cin>>s>>t;dfs();return 0;
}

9.总结

费解的开关,翻硬币:前面的状态决定了就不会改变,所以由后面的可以改变前面的

飞行员兄弟:前面的状态会受到后面的影响,所以要遍历所有状态

第二讲 二分与前缀和

1.数的范围

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){int n,q;cin>>n>>q;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<q;i++){int x;cin>>x;int l=0,r=n-1;while(l<r){int mid=l+r>>1;if(a[mid]>=x) r=mid;else l=mid+1;}if(a[l]!=x) cout<<"-1 -1"<<endl;else{cout<<l<<" ";l=0,r=n-1;while(l<r){int mid=r+l+1>>1;if(a[mid]<=x) l=mid;else r=mid-1;}cout<<l<<endl;}}return 0;
}
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){int n,q;cin>>n>>q;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<q;i++){int x;cin>>x;int l = lower_bound(a,a+n,x)-a;int r = upper_bound(a,a+n,x)-a;if(l>=n||a[l]!=x) cout<<-1<<" "<<-1<<endl;else cout<<l<<" "<<r-1<<endl;}return 0;
}

2.数的三次方根

#include<bits/stdc++.h>
using namespace std;
int main(){double n;cin>>n;double l=-22,r=22;const double eps=1e-8;while(r-l>eps){double mid=(l+r)/2;if(mid*mid*mid>n) r=mid;else l=mid;}printf("%.6lf\n",l);return 0;
}

3.机器人跳跃问题

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005];
int n;
int maxx=0,minn=1e5+1;
bool check(int xx){ll x=xx;for(int i=0;i<n;i++){if(x>a[i]) x=x+(x-a[i]);else x=x-(a[i]-x);if(x<0) return false;if(x>maxx) return true;}return true;
}
int main(){cin>>n;for(int i=0;i<n;i++){cin>>a[i];maxx=max(maxx,a[i]);minn=min(minn,a[i]);}int l=1,r=maxx;while(l<r){int mid=l+r>>1;if(check(mid)) r=mid;else l=mid+1;}cout<<l<<endl;return 0;
}

4.分巧克力

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{int x,y;
}a[100005];
int n,k;
bool check(int l){int sum=0;for(int i=0;i<n;i++){sum+=(a[i].x/l)*(a[i].y/l);}if(sum<k) return false;else return true;
}
int main(){cin>>n>>k;int l=1,r=1e5;for(int i=0;i<n;i++){cin>>a[i].x>>a[i].y;}while(l<r){int mid=l+r+1>>1;if(check(mid)) l=mid;else r=mid-1;}cout<<l<<endl;return 0;
}

5. 四平方和

在这里插入代码片

6.总结

在确定l , r时候最好就是题目给定的范围

第三讲 数学与简单DP

1.买不到的数目

#include<bits/stdc++.h>
using namespace std;
int main(){int x,y;cin>>x>>y;int a = (x-1)*(y-1)-1;cout<<a<<endl;return 0;
}

2.蚂蚁感冒

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[60];
int main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int x=a[0];int num=1;bool flag=false;int cnt=0;if(x<0){for(int i=1;i<n;i++){if(a[i]>0&&a[i]<abs(x)){num++;flag=true;}if(a[i]<0&&abs(a[i])>abs(x)){cnt++;}}if(flag) num+=cnt;}else{for(int i=1;i<n;i++){if(a[i]<0&&abs(a[i])>x){num++;flag=true;}if(a[i]>0&&a[i]<x){cnt++;}}if(flag) num+=cnt;}cout<<num<<endl;return 0;
}

3.

acwing蓝桥杯刷题相关推荐

  1. 蓝桥杯刷题日记 更新到2022/2/5

    蓝桥杯刷题日记 文章目录 蓝桥杯刷题日记 DAY1 1.递归实现指数型枚举 2.递归实现组合型枚举 3.递归实现排列型枚举 Day2 1.八皇后问题 *2.费解的开关 3.带分数 Day3 1.飞行员 ...

  2. ACMoi蓝桥杯刷题网站推荐

    ACM oi 蓝桥杯 刷题网站推荐 ACM刷题oj oi刷题 蓝桥杯刷题oj 刷题网站推荐 刷题的oj越来越多 肯定都有他们自己的特点 今天给各位朋友推荐一下一些网站 新手(中文题) 1.洛谷容易的题 ...

  3. 【蓝桥杯刷题冲刺辅导】掌握递归·DFS解题套路,这一文足以?

    大家好,我是安然无虞. 目录 一.刷题前和铁汁们唠一唠 1.刷题前须知 2.刷题时套路 <1>套路 <2>背下列常用数 ​ <3>投机取巧:根据数据范围确定算法 ​ ...

  4. 蓝桥杯刷题之分享或许会迟到,但绝不会缺席

    不好意思大家.今晚因为需要学习java 所以博客写的有点晚了,但我中午就把这三道题准备好了!!! 第三天的蓝桥杯刷题 回文串 挖掘机技术哪家强 说反话 回文串 大家看这个题目.或许会想到回文数之前,但 ...

  5. 【蓝桥杯刷题篇】acwing每日一题【二】数圈圈

  6. 蓝桥杯刷题以及算法解析的网址

    蓝桥杯题目算法解析参考博客:https://blog.csdn.net/qq_38648587 做题目的网站,有实时模拟比赛:https://oj.ahstu.cc/JudgeOnline/probl ...

  7. 小白要努力之为了蓝桥杯刷题!!!超简单哦!!!

    分享一个歌词直接让我笑喷的歌词----之前我不听歌的,毕竟第一次听到.学习的目的就是找工作,或者创业,但就是一个字"挣钱" 下面直接开始正题吧 首先科普一些知识,全局变量定义的时候 ...

  8. 蓝桥杯刷题007——七段码

    七段码 七段码2020年第十一届蓝桥杯省赛,填空题,lanqiao0J题号595 [问题描述] 七段数码管,一共有7个发光二极管,问能表示多少种不同的字符,要求发光的二极管是相连的. 七段数码管,一共 ...

  9. 蓝桥杯刷题026——蓝桥骑士(二分法)

    蓝桥骑士lanqi ao0J题号1188 题目描述 小明是蓝桥王国的骑士,他喜欢不断突破自我.这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a1​,a2​,...,an​,且按顺序阻挡在小明 ...

  10. C语言蓝桥杯刷题:数字三角形

    题目链接 解题思路: 该题是一道经典的动态规划,对于这样的数字三角形, 我们用一个数组arr存储各个位置的数字,再用另一个数组brr来记录到该位置的最大路径 对于图中的7,我们用数组保存就是arr[0 ...

最新文章

  1. 谷歌又有手机黑科技:进入办公室就变静音,遇车祸自动报警
  2. serverless 框架_Malaguv1.4.1支持Serverless的微服务框架
  3. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。
  4. P8U8 最中听的话,不要做每件事都考虑太多。
  5. oracle11g 查看表,oracle11g查看,添加表空间
  6. ashx 使用Session
  7. visio2007安装教程_Office Visio 2007如何安装-Microsoft Office Visio 2007安装步骤
  8. Windows科研工具
  9. 毕业设计,人脸识别系统
  10. Racket 的诞生与发展
  11. 华为设备配置SEP多实例
  12. QQ群反向昵称、恶搞昵称的原理
  13. java基础—java由来
  14. 《Adaptive Unfolding Total Variation Network for Low-Light Image Enhancement》2021ICCV 弱光增强
  15. 数据挖掘实验:使用 Hadoop 实现 WordCount 应用
  16. 研究生计算机学校,研究生计算机专业的学校排名
  17. 查询某一天内所有数据(SQL)
  18. ST17H66 低功耗蓝牙SOC开发(3)—— OSAL系统简介
  19. JAVA对接短信通知接口
  20. 使用 IDEA 几分钟就重构了同事800 行又臭又长 的类!真香!

热门文章

  1. 三维建模的基础知识:SolidWorks /CATIA 简介
  2. Maven使用本地jar包(三种方式)
  3. IAR MCS-51 v7.51A 软件注册机下载
  4. OpenCore 启动菜单界面美化增加gui界面
  5. 7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S)
  6. 如何输入多组字符串c语言,求教大侠:如何输入一组字符串
  7. InTouch蜂鸣器报警提示方法
  8. QT+VS开发界面入门(qt界面在VS2022实现自动生成槽函数)
  9. javaFX系列之web组件:史上最简单的javaFX浏览器实现(web component组件)
  10. 开始学习ruby,对此语言的简介