蓝桥杯刷题计划-洛谷-持续更新

2024-03-29 16:04

本文主要是介绍蓝桥杯刷题计划-洛谷-持续更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

P8598 [蓝桥杯 2013 省 AB] 错误票据

题目

#include <bits/stdc++.h>
#define endl '\n'
#define int long long 
#define INF 0x3f3f3f3f3f
const int N = 1000010;
using namespace std;
int arr[N];
signed main()
{int N;cin>>N;int idx;while(cin>>arr[++idx]){}//排序sort(arr+1,arr+idx+1);int ans1,ans2;for(int i = 1; i <= idx; i++){if(arr[i+1] - arr[i] == 2)ans1 = arr[i]+1;if(arr[i+1] == arr[i])ans2 = arr[i];}cout<<ans1<<' '<<ans2;return 0;
}

P8752 [蓝桥杯 2021 省 B2] 特殊年份

题目

#include<bits/stdc++.h>
#define ll longlong using namespace std;int a[100010];
int main(){int n = 5;string s;int ans = 0;for(int i = 0; i < n;i++ ){cin>>s;if(s[0] == s[2]&& s[3] - s[1] == 1)ans++;}cout<<ans;return 0;
}

P8753 [蓝桥杯 2021 省 AB2] 小平方

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin>>n;int cnt= 0 ;for(int i = 1; i<= n-1; i++){int x = i*i;if((x % n) < n/2.0){cnt++;}}cout<<cnt;return 0;
}

P8780 [蓝桥杯 2022 省 B] 刷题统计

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int a,b,n;cin>>a>>b>>n;int sum = 0;int cnt = 1;while(sum<n){if(cnt % 7>=1&& cnt%7<=5)sum+=a;elsesum+=b;cnt++;}cout<<cnt-1;return 0;
}

P8706 [蓝桥杯 2020 省 AB1] 解码

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);string s;cin>>s;for(int i = 0;i < s.size();i++){if(s[i]>='1'&& s[i]<='9')for(int j = 0 ; j < s[i]-'1';j++)cout<<s[i-1];elsecout<<s[i];}return 0;
}

P8717 [蓝桥杯 2020 省 AB2] 成绩分析

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;int a[N];cin>>n;for(int i = 0 ;i < n;i++){cin>>a[i];}sort(a,a+n);double sum = 0;for(int i = 0 ; i < n;i++)sum+= a[i];double ans = sum/n*1.0;cout<<a[n-1]<<endl<<a[0]<<endl;printf("%.2lf",ans);return 0;
}

P8711 [蓝桥杯 2020 省 B1] 整除序列

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n ;cin>>n;while(n>0){cout<<n<<" ";n = n>>1;}return 0;
}

P8722 [蓝桥杯 2020 省 AB3] 日期识别

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;unordered_map<string,int> mp{//创立哈希表,建立字符到整形的映射{"Jan",1},{"Feb",2},{"Mar",3},{"Apr",4},{"May",5},{"Jun",6},{"Jul",7},{"Aug",8},{"Sep",9},{"Oct",10},{"Nov",11},{"Dec",12}
};
const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);string s;cin>>s;string s1 = s.substr(0,3);string s2 = s.substr(3);cout<<mp[s1]<<" ";if(s2[0] != '0')cout<<s2[0];cout<<s2[1];return 0;
}

P8680 [蓝桥杯 2019 省 B] 特别数的和

题目

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;int ans = 0;cin>>n;for(int i = 1;i<=n;i++){string s = to_string(i);for(int j =0; j <s.size();j++){if(s[j] == '0' || s[j] =='1'||s[j] =='2'||s[j] == '9'){	ans+=i;break;}}}cout<<ans;return 0;
}

P9240 [蓝桥杯 2023 省 B] 冶炼金属

题目

  • 思路 贪心
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;const int N = 100010;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin>>n;int a,b;int ans_min = 0,ans_max = 1e9;for(int i= 0; i< n;i++){cin>>a>>b;ans_min = max(ans_min,a/(b+1)+1);ans_max = min(ans_max,a/b);}cout<<ans_min<<" "<<ans_max;return 0;
}

P8597 [蓝桥杯 2013 省 B] 翻硬币

题目

  • 思路 模拟
  • 遇到不同的就反转
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f3f
using namespace std;
const int N = 100010;
int arr[N];signed main(){string a,b;cin>>a>>b;int cnt = 0;for(int i = 0 ; i < a.size();i++){if(a[i]!=b[i]){a[i] = a[i] == 'o'?'*':'o';a[i+1] = a[i+1] =='o'?'*':'o';cnt++;}}cout<<cnt;return 0;
}

P8647 [蓝桥杯 2017 省 AB] 分巧克力

  • 思路 打暴力超时 题干字眼——输出切出的正方形巧克力最大可能的边长 二分答案
  • 对于第 i 块巧克力,当边长为 x 时,可以分出 ⌊(ai÷x)×(bi÷x)⌋ 块巧克力。

题目

#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f3f
using namespace std;
const int N = 100010;
int a[N],b[N];//长宽
int n,k;bool check(int mid){int cnt =0 ;for(int i = 1 ; i <= n ;i++){cnt+=(a[i]/mid)*(b[i]/mid);}if(cnt>=k)return true;else return false;
}signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>k;for(int i = 1; i <= n;i++){cin>>a[i]>>b[i];}int l = 0;int r = 10010;while(l+1<r){int mid = (l+r)>>1;if(check(mid))l = mid;elser = mid;}if(check(r)) cout<<r;else cout<<l;return 0;
}

P8772 [蓝桥杯 2022 省 A] 求和

题目

  • 思路 前缀和 注意数据范围!
  • S=a1⋅a2+a1⋅a3+⋯+a1⋅an+a2⋅a3+⋯+an−2⋅an−1+an−2⋅an+an−1⋅an

=(a2+a3+⋯+an)⋅a1+(a3+a4+⋯+an)⋅a2+⋯+anan−1

#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f3f
using namespace std;
const int N = 200010;
int arr[N],sum[N];
int n;
int ans;
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i = 1 ; i<=n;i++){cin>>arr[i];sum[i] = sum[i-1] + arr[i];}for(int i =1 ;i <=n-1 ;i++){ans += arr[i]*(sum[n]-sum[i]); }cout<<ans;return 0;
}

P8665 [蓝桥杯 2018 省 A] 航班时间

题目

  • 前置知识
    • 去程时间 =飞行时间 + 时差;回程时间 = 飞行时间 − 时差
    • 由此可知 飞行时间 = (去+回)/ 2
  1. 用 scanf 输入前面的时间:
scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
  1. 每一行后面不一定有额外的天数。如果有,则中间一定有空格,所以判断下一个字符是否为空格即可。
  2. 为方便计算,不妨把时间都转换成以秒为单位 t=86400⋅d+3600⋅h+60⋅m+s
  3. h = ans/3600 min = ans%3600/60 s = ans%60
#include <bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f3f
const int N = 1000010;
using namespace std;int get()
{int h1,m1,s1,h2,m2,s2,day=0;scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);if(getchar()==' ')scanf("(+%d)",&day);return (day*86400+h2*3600+m2*60+s2)-(h1*3600+m1*60+s1);
}
signed main()
{int T;scanf("%d",&T);while(T--){int ans=(get()+get())/2;printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);}return 0;
}

P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值

题目

  • 思路 模拟
  • 完全二叉树的性质

设深度为 dep,根节点的深度为 1。则有第 dep 层的节点为 2dep,每层开头的节点编号为 2dep−1,末尾的节点编号为 2dep−1(以上结论叶子节点除外)。

  • 注意上面加粗黑体字 第一次没考虑到 错了两个点 叶子节点需要额外特判
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 100010;
int arr[N];
int n;
int dep = 1,sum = 0,Max = -1,a,ans;
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i = 1; i <= n; i++){cin>>a;sum+=a;if(i == (1<<dep)-1){//判断当前位置是否是该dep的最后一个节点?结算:go on if(sum>Max){Max = sum;ans = dep;}dep++;	sum = 0;}}if(sum>Max){//叶子节点特判Max = sum;ans = dep;}cout<<ans;return 0;
}

P9231 [蓝桥杯 2023 省 A] 平方差

题目

  • 思路 找规律
  • 参考题解
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 100010;
int arr[N];
int n;
int f(int x) {//小于等于x的奇数个数 if (!x) return 0;return (x + 1) / 2;
}
int g(int x) {//小于等于x的4的倍数个数 return x / 4;
}
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int l, r; cin >> l >> r;cout << f(r) - f(l - 1) + g(r) - g(l - 1);return 0;
}

P9230 [蓝桥杯 2023 省 A] 填空问题

题目

  • 思路
  • problem A 填空题 本地暴力枚举
  • 把数字转成字符串去处理
  • 答案为 4430091
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e8;
bool check(string s){int ans1 = 0 ,ans2 = 0;for(int i = 0; i < s.size();i++){if(i<s.size()/2)ans1 += s[i]-'0';elseans2 += s[i]-'0';}return ans1 == ans2;
}
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;int ans = 0;for(int i = 1 ; i<= N;i++){s= to_string(i);if(s.size()%2 == 1)continue;//奇数if(check(s)) {ans++;}}cout<<ans;return 0;
}
  • problem B DFS 本地暴搜
  • 答案为 4165637
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e8;
int arr[N];
int ans;
void dfs(int score,int cnt){if(cnt>30||score == 100)return;if(cnt == 30 && score == 70)ans++;dfs(score+10,cnt+1);dfs(0,cnt+1);
}signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//表示0分 0题dfs(0,0); cout<<ans;return 0;
}

P8649 [蓝桥杯 2017 省 B] k 倍区间

题目

题解参考

  • 思路 看到”连续子序列求和”这一要求时,我们果断选择前缀和解答
#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 100010;
int arr[N],sum[N];
int n,k;
map<int,int> mp;signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>k;int ans = 0;mp[0] = 1;for(int i = 1; i<=n;i++){cin>>arr[i];sum[i] = (sum[i-1]+ arr[i])%k;//记录前缀和模k的值mp[sum[i]]++;}for(int i = 0; i< n;i++){ans+=(mp[i]*(mp[i]-1))/2;}cout<<ans;return 0;
}
  • 自己的理解
  • 解释:1要和其他1组一起 满足

                0可以单独算也可以组在一起 满足

#include <bits/stdc++.h>
#define int long long 
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N = 100010;
int arr[N],sum[N];
int n,k;
map<int,int> mp;signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>k;int ans = 0;for(int i = 1; i<=n;i++){cin>>arr[i];sum[i] = (sum[i-1]+ arr[i])%k;//记录前缀和模k的值mp[sum[i]]++;}for(auto i :mp){if(i.first == 0)ans+=i.second*(i.second+1)/2;elseans+=i.second*(i.second-1)/2;}cout<<ans;return 0;
}

这篇关于蓝桥杯刷题计划-洛谷-持续更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859024

相关文章

蓝桥杯:每周一题之高斯的日记

[问题描述] 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算

蓝桥杯:每周一练之楼房最短距离问题

我的博客:https://blog.csdn.net/txb116424 学习资料和练习题目地址: http://dasai.lanqiao.cn/pages/dasai/news_detail_w.html?id=644 [问题描述] X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3… 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情

蓝桥杯:每周一题之Mineweep(扫雷)问题

我的博客:https://blog.csdn.net/txb116424 学习资料和练习题目地址: http://dasai.lanqiao.cn/pages/dasai/news_detail_w.html?id=644 [问题描述]: 扫雷游戏你一定玩过吧!现在给你若干个n×m的地雷阵,请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数,每个单元格最多有8个相邻的单元格。 0<n,m<=1

【Node.js工程师养成计划】之原生node开发web服务器

一、使用node创建http服务器 var http = require('http');// 获取到服务器实例对象var server = http.createServer()server.listen(8080, function() {console.log('http://127.0.0.1:8080');})server.on('request', function(r

蓝桥杯ctf2024 部分wp

数据分析 1. packet 密码破解 1. cc 逆向分析 1. 欢乐时光 XXTEA #include<stdio.h>#include<stdint.h>#define DELTA 0x9e3779b9#define MX (((z>>5^y<<2)+(y>>3^z<<4))^((sum^y)+(key[(p&3)^e]

2024年云仓酒庄新动态合肥北京双城开课,持续培训助力酒业发展

云仓酒庄合肥北京双城开课,持续培训助力酒业发展 随着国内酒类市场的不断繁荣与消费需求的日益增长,云仓酒庄作为行业内的稳扎稳打之一的企业,始终致力于提升服务质量和品牌影响力。近日,云仓酒庄在合肥与北京两地同时开设培训课程,旨在通过专业的讲师团队,为广大酒类从业者提供深入的学习与交流机会,共同推动酒业的发展与进步。 云仓酒庄自成立以来,便以其的经营模式和优质的服务赢得了市场的广泛认可。公司深知,在

蓝桥杯单片机省赛——第十一届“温度与电压输出”程序部分

往期回顾 第三届蓝桥杯单片机省赛 第四届蓝桥杯单片机省赛 第五届蓝桥杯单片机省赛 第六届蓝桥杯单片机省赛 第七届蓝桥杯单片机省赛 第八届蓝桥杯单片机省赛 第九届蓝桥杯单片机省赛 第十届蓝桥杯单片机省赛 文章目录 往期回顾一、前期准备二、代码详情1.基础代码蜂鸣器/继电器/led/定时器之类的代码 2.按键详解按键写法讲解 3.驱动的处理驱动写法讲解 4.温度/数码管部分处理5.总代码

Jenkins持续化集成

优质博文:IT-BLOG-CN 工作过程如下环境准备 开发人员提交代码>jenkins获取代码>调用单元测试>打包>发布 环境准备Jenkins的安装 Tomcat、Maven、Git或Svn、Jdk Jenkins的安装 1、官网下载war :http://Jenkins-ci.org/ 2、tomcat-users.xml:配置jenkins的用户,此后用户可以在jenkin

洛谷 B2123 字符串 p 型编码

字符串 p 型编码 题目描述 给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串 str ,请写出 str 的 p 型编码串。例如:字符串 122344111 可被描述为 1个1、2个2、1个3、2个4、3个1 ,因此我们说122344111 的 p 型编码串为 1122132431 ;类似的道理,编码串 101 可以用来描述 1111111111 ;0000000000

mysql使用Navicat批量更新表前缀

首先在Navicat的工具菜单里打开命令行 然后执行查询,def是现在的表前缀,abc是要修改成的表前缀 SELECTCONCAT('ALTER TABLE ',table_name,' RENAME TO abc_',substring(table_name, 5),';') sqlsFROMinformation_schema.tables Where table_name LIKE 'd