![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝桥杯刷题
文章平均质量分 54
iuk11
我想去更远的地方看看,现在还缺少载具。
展开
-
【蓝桥杯国赛】奇偶覆盖
a原创 2022-05-31 21:58:54 · 539 阅读 · 1 评论 -
【蓝桥杯国赛】游园安排
最长上升子序列 LIS 优化 二分与贪心 单调队列数据范围 1e6,如果用普通的LIS会超时。现在介绍优化版本:在单调队列中,保证所有字符串按照字典序单增。首先对题目进行字符串处理,按照顺序依次入队。入队满足两个条件:当前元素比队尾元素大,直接入队;当前元素比队尾元素小,二分找到第一个大于等于该元素的元素,替换它。最终的队列长度一定是该序列的最长子序列长度。(结论1)在每一次入队操作时,同时更新len序列(表示以第i个元素结尾的序列的最长子序列的长度):当前元素比队尾元素大,长度为队列原创 2022-05-14 14:32:40 · 359 阅读 · 2 评论 -
蓝桥杯国赛CB组 DP 总结
本质上升子序列题意: 给定一个长度为200的字符串,问当中有多少个本质不同的上升子序列。本质不同:子序列的字符串唯一。上升:字典序升序。tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtnip原创 2021-06-02 16:21:31 · 205 阅读 · 0 评论 -
十一届蓝桥杯国赛 CB组(持续更新)
自己放松了几天,今天开始找状态,先从简单题入手。试题A答案:563#include<bits/stdc++.h>using namespace std;int main(){ int res=0; for(int i=1;i<=2020;i++){ int n=i; while(n){ int t=n%10; if(t==2){ res++;原创 2021-05-19 16:57:15 · 337 阅读 · 1 评论 -
蓝桥杯赛前一天——STL类库+各种函数调用+熟悉板子 总结
质数筛板子(埃氏筛)#include<bits/stdc++.h>using namespace std;const int maxn=1e5+100;int prime[maxn];int vis[maxn];int Prim(int n){ int p=0; memset(vis,0,sizeof(vis)); vis[0]=vis[1]=1; for(int i=2;i<=n;i++){ if(!vis[i]){ prime[p++]=i; for原创 2021-05-08 18:00:11 · 363 阅读 · 2 评论 -
蓝桥杯真题训练 五一 5/5
A8位二进制=1字节1024字节=1KB1024KB=1MB25610241024*8/32=67108864B#include<bits/stdc++.h>using namespace std;int a[10];int main(){ for(int i=1;i<=100000000;i++){ for(int j=0;j<=9;j++){ if(a[j]>=2021){ cout<<i-1<<endl;原创 2021-05-05 18:13:02 · 126 阅读 · 0 评论 -
蓝桥杯真题训练 五一 4/5
1217 垒骰子矩阵快速幂op[i]表示的是与i的对面的数。如果有面互斥,就在矩阵中标记为零,否则标记为4,代表顶和底确定的时候可以有四种情况。(矩阵乘法)就是快速幂里面的乘法变成了矩阵乘法。#include<bits/stdc++.h>using namespace std;const int mod=1e9+7;typedef long long ll;const int maxn=6;ll n,m;int a,b;int vis[7][7];int op[]={3原创 2021-05-04 22:39:59 · 168 阅读 · 0 评论 -
蓝桥杯真题训练 五一 3/5
1215 小朋友排队题目被喂了一下,知道是求逆序对的题目,一开始也想到了排序,看题解有人用归并排序做。树状数组以前学过,忘记了,看了一手代码,又会了。二进制表示下最低位1及其后面的0构成的数值:lowbit(x) —> x & -x —> x & (~x+1) 取反加一。有些地方都写在注释里了。那再说一下思路:为什么做两遍树状数组,因为一个数的逆序对数,就是在它之前比它大的数,加上在它之后比它小的数。有了这个关系我们可以知道,一遍是为了求比在i之前,比当前(第i个)数大的原创 2021-05-03 12:49:31 · 72 阅读 · 0 评论 -
蓝桥杯真题训练 五一 2/5
1212 地宫取宝可真是醉了。这是记忆化搜索的题目,为了弄懂,又花了不少时间。记忆化搜索=深搜+动态规划题目要求的只能向下或者向右,所有只用了两个坐标。其实取模每次都应该取的,但是居然只在结果取模没爆,就没改。解题步骤:题目要求取k个物品,且每次取都不能比之前取过的所有物品的最大值小,可以在路径上选择取或者不取。设方程:dp[x][y][num][val] =n — 表示(x,y)位置下取了num个物品,当前最大物品的价值为val的情况下,共有n种情况。(1)考虑到不取也是一种情况,相当于原创 2021-05-02 22:10:23 · 91 阅读 · 0 评论 -
蓝桥杯真题训练 五一 1/5
题目均来自acwing1204#include<bits/stdc++.h>using namespace std;const int maxn=105;const int N=1e5+10;int a[maxn];int b[N];int change(string s){ int ans=0; for(int i=0;i<s.size();i++){ ans=ans*10+s[i]-'0'; } return ans;}原创 2021-05-01 13:45:06 · 145 阅读 · 1 评论 -
acwing 1204 剪格子
本来想手写一个hash的,发现自己写的运行时间直接爆了。没处理好,学完再补一个。用了unordered_set,看y总代码学了一手。代码分了四部分:读入部分读入值的同时也要累加,用于判断一半的值是多少。可以观察到要想两部分数值和相等,一定是这个累加值是个偶数,所以奇数的情况直接输出0,因为不可能被平均分成两份。然后初始化一下标记数组(vis)与点集数组§,进去深搜。深搜部分我一开始没想明白为啥要用深搜,我一想深搜是搜一条路径呀,但是题目要求的是一个连通区域呀。就比如这种图在左上角深搜肯定原创 2021-04-28 22:35:41 · 73 阅读 · 0 评论 -
第十一届蓝桥杯b组省赛第二场c++
F#include <iostream>#include<cstdio> using namespace std;const int maxn=1e4+10;int a[maxn];int main(){ double n; cin>>n; double you=0,ji=0; for(int i=0;i<n;i++){ cin>>a[i]; if(a[i]>=60) ji++; if(a[原创 2021-03-10 17:30:08 · 94 阅读 · 0 评论 -
第十一届蓝桥杯b组省赛第二场c++(填空部分)
A直接拆,计数。#include<bits/stdc++.h>using namespace std;int main(){ int ans=0; for(int i=2;i<=2020;i++){ int n=i; while(n){ if(n%10==2) ans++; n/=10; } } cout<<ans; return 0;} Bgcd(i,j)==1表示i和j互质,也就是题目所说的既约分数,把i当成分子,j当成分母原创 2021-02-26 02:21:14 · 163 阅读 · 0 评论 -
蓝桥杯备战——刷题(2019)
答案在最下方A这题是个简单的暴力,注意每一个编号只能选择一次,不能直接全选最大。直接枚举出20^5种可能,维护一个最大数出来即可。当然也可以直接拿眼看,因为数据范围非常小。#include<bits/stdc++.h>using namespace std;int a[21],b[21],c[21],d[21],e[21];int main(){ int ans,res=-1; for(int i=1;i<=20;i++){ for(int j=1;j<=20原创 2021-02-24 01:07:04 · 177 阅读 · 0 评论