1.门牌制作

暴力即可

#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,count,len;
char s[4];
count=0;
for(i=1;i<=2020;i++){
len=sprintf(s,"%d",i);
for(j=0;j<len;j++)if(s[j]=='2')count++;
}
cout<<count;
return 0;
}
//624

2.约分分数

#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,count=0;
for(i=1;i<=2020;i++){
for(j=1;j<=2020;j++){
if(__gcd(i,j)==1)count++;
}
}
cout<<count;
return 0;
}
//2481215

3.蛇形矩阵

找规律即可

俗话说的:从哪里跌倒从哪里爬起来!

1

2   3

4   5   6

7   8   9   10

11 12 13 14 15

16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31 32 33 34 35 36

37 38 39 40 41 42 43 44 45

求20行中最左边的数和最右边的数,求中位数就是结果

#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int sum1,sum2;
int i;
for(i=1;i<=38;i++)sum1+=i;
for(i=1;i<=39;i++)sum2+=i;
sum1++;
cout<<(sum1+sum2)/2;
return 0;
}
//761

4.跑步训练 

#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,k,week=5;
int sum=0,m=12;
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
for(i=2000;i<=2020;i++){
if(i%400==0||(i%4==0&&i%100!=0))a[2]=29;
else a[2]=28;
if(i==2020)m=10;
for(j=1;j<=m;j++){
if(i==2020&&j==10)a[j]=1;
for(k=1;k<=a[j];k++){
if(k==1||week==0)sum+=2;
else sum+=1;
week=(week+1)%7;
}
}
}
cout<<sum;
return 0;
}
//8879

5.七段码

大致的想法如下(并查集),仔细审题说的是必须有亮边:

构建二极管图

位运算遍历每一种组合,将每条亮的边的临亮边合并

最后判断亮的边是否根一样

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int tree[7];
int find(int x){
if(x==tree[x])return x;
return tree[x]=find(tree[x]);
}
void combine(int x,int y){
x=find(x);
y=find(y);
if(x!=y)tree[y]=x;
}
int main() {
int g[7][7]={
// a b c d e f g
{0,1,0,0,0,1,0},
{1,0,1,0,0,0,1},
{0,1,0,1,0,0,1},
{0,0,1,0,1,0,0},
{0,0,0,1,0,1,1},
{1,0,0,0,1,0,1},
{0,1,1,0,1,1,0}
};
int i,j,k,s[7];
int num,count=0,root,flag; for(i=1;i<=127;i++){
num=i,j=6;
memset(s,0,sizeof(s));
while(num){
s[j--]=num&1;
num=num>>1;
}
for(j=0;j<7;j++)tree[j]=j;
for(j=0;j<7;j++)if(s[j])for(k=0;k<7;k++)if(g[j][k]&&s[k])combine(j,k); flag=0;
for(j=0;j<7;j++){
if(s[j]){
if(!flag){
root=find(j);
flag=1;
}else if(root!=find(j))break;
}
}
if(j==7)count++;
}
cout<<count;
return 0;
}

6.成绩统计

#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int n;
int i,a,b,t;
int ans1,ans2;
cin>>n;
a=b=0;
for(i=0;i<n;i++){
cin>>t;
if(t>=60)a++;
if(t>=85)b++;
}
ans1=round((double)a/n*100);
ans2=round((double)b/n*100);
cout<<ans1<<"%"<<endl;
cout<<ans2<<"%"<<endl;
return 0;
}

7.回文日期

模拟即可;is为判断是否回文,judge为判断是不是ABABBABA型,注意A!=B

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int is(char a[],int s,int e){
if(s>=e)return 1;
if(a[s]==a[e])return is(a,s+1,e-1);
return 0;
}
int judge(char a[]){
char A,B;
A=a[0],B=a[1];
if(A!=B&&a[0]==A&&a[1]==B&&a[2]==A&&a[3]==B&&a[4]==B&&a[5]==A&&a[6]==B&&a[7]==A)return 1;
return 0;
}
int main(){
char a[8],ans1[8],ans2[8];
int y,m,d,month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int flag1=0,flag2=0,len; cin>>a;
y=(a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+a[3]-'0',m=(a[4]-'0')*10+(a[5]-'0'),d=(a[6]-'0')*10+(a[7]-'0');
while(!flag1||!flag2){
if(y%400==0||(y%4==0&&y%100!=0))month[2]=29;
else month[2]=28;
d++;
if(d>month[m]){m++;d=1;}
if(m>12){y++;m=1;}; len=sprintf(a,"%04d%02d%02d",y,m,d);
if(!flag1&&is(a,0,len-1)){strcpy(ans1,a);flag1=1;}
if(!flag2&&judge(a)){strcpy(ans2,a);flag2=1;}
}
cout<<ans1<<endl;
cout<<ans2<<endl;
return 0;
}

8.子串分值和

分析题,考试的时候纯暴力出来的只能完成10^3内的数,之后看网友们的解题,瞬间怀疑自己

主要思想,每个字符只有第一次出现的时候才会作为一个不同的字母,所以我们找出每个字符第一次出现的所以组合,然后累加;

演示过程
ababc
01234
a:[00] [01] [02] [03] [04] //1*5就是5种[ij]就是下标i到j b:[01] [02] [03] [04]
[11] [12] [13] [14] //2*4 就是8种 a:[12] [13] [14]
[22] [23] [24] //2*3 就是6种 b:[23] [24]
[33] [34] //2*2就是4种 c:[04] [14] [24] [34] [44] //5*1就是5种 5+8+6+4+5=28

变量含义:

i是目前遍历到的下标(以0开始)

last[c-'a']是字母c上次出现的下标,

所以能得到本次的组合是[last[a[i]-'a']+1,i]*[i,strlen(a)-1]
所以得出公式count+=(i-(last[a[i]-'a']+1)+1)*(strlen-i);

发现知道这个东西很简单,但是推理过程哇太神奇,感觉十个脑子我都想不出来了,哎这个让我怀疑自我智商

#include<stdio.h>
#include<iostream>
#include<string.h>
#define N 100005
using namespace std;
int main(){
int last[26],i;
long long count=0;
char a[N];
scanf("%s",a);
for(i=0;i<26;i++)last[i]=-1;
for(i=0;i<strlen(a);i++){
count+=(i-(last[a[i]-'a']+1)+1)*(strlen(a)-i);
last[a[i]-'a']=i;
}
printf("%lld",count);
return 0;
}

蓝桥杯2020.10.17B组c++的更多相关文章

  1. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  2. 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

    2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...

  3. 2021蓝桥杯省赛B组(C/C++)E.路径【最短路DP】

    2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考 ...

  4. 第十届蓝桥杯省赛JavaB组个人题解

    前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...

  5. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...

  6. 2015第六届蓝桥杯C/C++ B组

    奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...

  7. Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛

    有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...

  8. 2016年蓝桥杯C/C++B组

    第一次參加蓝桥杯.也是有非常多感触的,时间全然不够写最后一题... 最后一题没做...还有全排序非常重要... 1. 煤球数目 有一堆煤球,堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三 ...

  9. 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结

    引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...

随机推荐

  1. Spring Boot 知识清单(一)SpringApplication

    爱生活,爱编码,微信搜一搜[架构技术专栏]关注这个喜欢分享的地方.本文 架构技术专栏 已收录,有各种JVM.多线程.源码视频.资料以及技术文章等你来拿. 一.概述 目前Spring Boot已经发展到 ...

  2. Kafka索引设计的亮点

    前言 其实这篇文章只是从Kafka索引入手,来讲述算法在工程上基于场景的灵活运用.单单是因为看源码的时候有感而写之. 索引的重要性 索引对于我们来说并不陌生,每一本书籍的目录就是索引在现实生活中的应用 ...

  3. oracle中插入一条记录后,重新登录查找不到数据

    你插入了数据,但是没有提交.其他Session也就是你再次登录后自然就看不到了(但是在当前回话可以看到插入的数据),但是你用SQLPLUS EXIT之后再次登录就可以看到插入的数据了,因为ORACLE ...

  4. Python-组织结构-目录结构、包导入、__init__文件、模块内置变量、* 导入限制

    __pycache__ .pyc文件,中间代码,提升python运行效率 目录 分档和归类 Python项目组织结构 包 模块 类 函数.变量 # 层级依次往下都是一对多关系 Python项目目录结构 ...

  5. Python-设置文件缓冲类型

    案例: 将文件内容写入到硬件设备时候,使用系统调用,这类IO操作时间长,为了减小IO操作,通常会使用缓冲区(有足够多数据才能调用). 文件缓冲行为分为:全缓冲,行缓冲,无缓冲 如何解决? open(' ...

  6. 坐标下降(Coordinate descent)

    坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行线性搜索(线性搜索是不需要求导数的),通过循环使用不同的坐标方法来达到目标函数的局部极小值.

  7. Java高级特性1_流库_初体验

    Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...

  8. Jmeter5.3源码编译

    下载源码 https://jmeter.apache.org/download_jmeter.cgi 配置网络环境(重要) 下载 Proxifier 配置上网条件 导入Idea 通过 Idea 的 O ...

  9. 阿里云服务器安装mongodb并且启动

    // 1.下载 我是直接在local里面创一个mongodb文件夹进行下载和解压 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_ ...

  10. 二进制部署Redis-5.07

    Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类 ...