链接:https://witacm.com/problemset.php?p=11

A : 过了几天

写时间或者日期内的题目时先把单位统一化成低级单位,计算完成后再化成标准单位。

# include <iostream>struct date {int year;int month;int day;
};int mon[20] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool isLeap(int year) {return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}int cnt(date a) {int y = a.year;int m = a.month;int d = a.day;int sum = 0;for (int i = 1; i < y; i++) {if (isLeap(i)) {sum += 366;} else {sum += 365;}}for (int i = 1; i < m; i++) {if (i == 2) {if (isLeap(y)) {sum += 29;} else {sum += 28;}} else {sum += mon[i];}}sum += d - 1;return sum;
}void solve() {date d1, d2;char c;std::cin >> d1.year >> c >> d1.month >> c >> d1.day>> d2.year >> c >> d2.month >> c >> d2.day;int num1 = cnt(d1);int num2 = cnt(d2);std::cout << num2 - num1 + 1 << "\n";
}int main() {int T;std::cin >> T;while (T--) {solve();}return 0;
}

B. 排列数字

# include <iostream>
# include <algorithm>bool cmp(int a, int b) {return a > b;
}int main() {int a[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};int n, k;std::cin >> n >> k;int cnt = 0;do {cnt++;if (cnt == k) {break;}} while (std::next_permutation(a + 10 - n, a + 10, cmp));for (int i = 10 - n; i < 10; i++) {std::cout << a[i] << " ";}return 0;
}
# include <iostream>
# include <algorithm>int main() {int a[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};int n, k;std::cin >> n >> k;int cnt = 0;do {cnt++;if (cnt == k) {break;}} while (std::next_permutation(a + 10 - n, a + 10, std::greater<int>()));for (int i = 10 - n; i < 10; i++) {std::cout << a[i] << " ";}return 0;
}
# include <iostream>
# include <algorithm>struct d{int num;bool operator < (d rhs) {return this->num > rhs.num;}
};int main() {d a[10];for (int i = 0; i < 10; i++) {a[i].num = 10 - i;}int n, k;std::cin >> n >> k;int cnt = 0;do {cnt++;if (cnt == k) {break;}} while (std::next_permutation(a + 10 - n, a + 10));for (int i = 10 - n; i < 10; i++) {std::cout << a[i].num << " ";}return 0;
}
#include <iostream>
#include <algorithm>int a[15] = {0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int choose[15];
bool vis[15];int n, k;
int cnt = 0;void dfs(int step) {if (cnt > k) {return;} if (step == n + 1) {cnt++;if (cnt == k) {for (int i = 1; i <= n; i++) {std::cout << choose[i] << " ";}return;}return;}for (int i = n; i >= 1; i--) {if (!vis[i]) {vis[i] = true;choose[step] = a[10 - i + 1];dfs(step + 1);vis[i] = false;}}
}int main() {std::cin >> n >> k;dfs(1);return 0;
}

C. Simple in Naive

三关键字排序
1.

# include <iostream>
# include <set>
# include <algorithm>
# include <cstdio>struct person {int id;char c;int num;bool operator < (person rhs) {if (c != rhs.c) {return c < rhs.c;} else {if (num != rhs.num) {return num > rhs.num;               }return id < rhs.id;}}
};const int maxn = 1e5 + 5;
person p[maxn];
std::set<int> st;void solve1() {int Q;scanf("%d", &Q);int t;while (Q--) {scanf("%d", &t);puts("YES");}
}int main()  {int n, T;std::cin >> n >> T;for (int i = 1; i <= n; i++) {scanf(" %c%d", &p[i].c, &p[i].num);p[i].id = i;}if (T >= n) {solve1();return 0;}std::sort(p +  1, p + n + 1);for (int i = 1; i <= T; i++) {st.insert(p[i].id);}int Q;std::cin >> Q;while (Q--) {int t;scanf("%d", &t);if (st.find(t) != st.end()) {puts("YES");} else {puts("NO");}}return 0;
}
# include <iostream>
# include <algorithm>
# include <cstdio>struct person {int id;char c;int num;bool operator < (person rhs) {if (c != rhs.c) {return c < rhs.c;} else {if (num != rhs.num) {return num > rhs.num;               }return id < rhs.id;}}
};const int maxn = 1e5 + 5;
person p[maxn];
bool vis[maxn];void solve1() {int Q;scanf("%d", &Q);int t;while (Q--) {scanf("%d", &t);puts("YES");}
}int main()  {int n, T;std::cin >> n >> T;for (int i = 1; i <= n; i++) {scanf(" %c%d", &p[i].c, &p[i].num);p[i].id = i;}if (T >= n) {solve1();return 0;}std::sort(p +  1, p + n + 1);for (int i = 1; i <= T; i++) {vis[p[i].id] = true;}int Q;std::cin >> Q;while (Q--) {int t;scanf("%d", &t);if (vis[t]) {puts("YES");} else {puts("NO");}}return 0;
}

D. 千禧之数

改编自武汉工程大学计算机科学与工程学院第二届程序设计新生赛(预选赛)的D题

#include <iostream>typedef long long ll;int main()
{int n;std::cin >> n;ll sum = 0;for (int j = 2; j <= n / j; j++){if (n % j == 0){sum += j;while (n % j == 0){n /= j;}}}if (n > 1) {sum += n;}if (sum >= 2000){std::cout << "Yes";}else{std::cout << "No";}return 0;
}

E. 喜新厌旧

改编自 武汉工程大学计算机科学与工程学院第二届程序设计新生赛的J题

#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>std::string t;
std::string s;int main()
{std::cin >> t >> s;std::sort(t.begin(), t.end());int j = 0;for (int i = 0; i < s.size(); i++){if (s[i] <= t[j]){putchar(s[i]);continue;}else{putchar(t[j++]);}}return 0;
}

F. 探亲

改编自武汉工程大学第一届程序设计女生赛的C题
邀请码 2020wfinal
两个bfs

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;typedef pair<int,int> PII; const int N=1010;
int  m,n;
queue<PII> q;
char g[N][N];
int d[N][N];int bfs(int x1,int y1,int x2,int y2){memset(d,-1,sizeof d);while (q.size()) {q.pop();}q.push({x1,y1});d[x1][y1]=0;while(q.size()){PII t=q.front();q.pop();if(t.first==x2 && t.second==y2) return d[x2][y2];int dx[]={-1,0,1,0};int dy[]={0,-1,0,1};for(int i=0;i<4;i++){int x=t.first+dx[i];int y=t.second+dy[i];if(x>0 && x<=n && y>0 && y<=m && g[x][y]=='.' && d[x][y]==-1){d[x][y]=d[t.first][t.second]+1;q.push({x,y});}}}return d[x2][y2];
}int main(){int T;cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>g[i][j];int x1,y1,x2,y2,x3,y3;cin>>x1>>y1>>x2>>y2>>x3>>y3;int res1=bfs(x1,y1,x2,y2);int res2=bfs(x2,y2,x3,y3);//cout<<res1<<" "<<res2<<" ";if(res1==-1 || res2== -1) cout<<"-1"<<endl;else cout<<res1+res2<<endl;}return 0;
}

G. 计算器

搬运自2019年武汉科技大学菜鸟杯
模拟即可

#include<stdio.h>
#include<string.h>
const int MAXN=1e6+5;
char s[MAXN];
char ss[MAXN];
int a,n;
int main()
{scanf("%s%d",s+1,&n);int len=strlen(s+1);for(int i=1;i<=len;i++)a=a*10+s[i]-'0';for(int i=1;i<=n;i++){scanf("%s",ss+1);for(int j=1;j<=9;j++){int flag=1;for(int k=1;k<=len;k++){int x=s[k]-'0',y=ss[k]-'0';if(x*j%10!=y){flag=0;break;}}if(flag){a*=j;break;}}strcpy(s+1,ss+1);}printf("%d",a);
}

H. ZZZ的银河女装传说

搬运自2019年武汉科技大学菜鸟杯

题意可以转化成求最少变换次数让字符串变为左边一串连续的’.‘序列,右边一串连续的’#‘序列,或者全变为’.‘序列或者’#‘序列。
我们可以预处理出’.‘和’#‘的前缀和,a[i]代表前i个字符里有a[i]个’.’, b[i]代表前i个字符里有b[i]个’#’,那么可以直接遍历字符串,枚举每个点为’.‘和’#‘序列的分界点(’.‘的最后一个点)时的情况。要想让衣柜是整齐的,那么只需要把分界点前的’#‘全部变为’.’ (贡献为b[i]),将分界点后的’.‘全部变为’#’ (贡献为a[n]-a[i])。每一次枚举计算答案是O(1)的,所以总复杂度为O(n)。
ans=min(ans,b[i]+a[n]−a[i])ans=min(ans,b[i]+a[n]-a[i])ans=min(ans,b[i]+a[n]−a[i])

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define rg register
#define ll long long
#define CL(a,b) memset(a,b,sizeof a)
const int N=2e5+7,inf=0x3f3f3f3f;
char s[N];
int a[N];
int black[N],white[N];
int main()
{int n;scanf("%d",&n);scanf("%s",s);for(int i=0;i<n;i++)if(s[i]=='.')a[i+1]=0;else a[i+1]=1;int ans=inf;for(int i=1;i<=n;i++)if(a[i]==0){white[i]=white[i-1]+1;black[i]=black[i-1];}else{black[i]=black[i-1]+1;white[i]=white[i-1];}for(int i=0;i<=n;i++)ans=min(black[i]+white[n]-white[i],ans);cout<<ans<<endl;return 0;
}

论往届题目的重要性

2021蓝桥杯预选赛题解相关推荐

  1. 九宫重排 蓝桥杯c++ 题解 字符串hash+bfs

    九宫重排 蓝桥杯c++ 题解 字符串hash+bfs 题意:给出一个九宫格,你可以将与空格相邻的数字和空格进行交换,目的是得到另一个九宫格,问最少的步数. 思路:从最小步数不难看出我们可以使用广度优先 ...

  2. 杨辉三角形--2021蓝桥杯Java组

    杨辉三角形–2021蓝桥杯Java组 题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下.从左到右的顺序把所有数排成一列,可以得到如下数列:1,1,1,1,2,1,1,3,3,1,1,4,6 ...

  3. Python【2021蓝桥杯省赛编程题】

    文章目录 Python[2021蓝桥杯省赛编程题] F.时间显示 G.杨辉三角形 H.左孩子右兄弟 I.异或数列 J.括号序列 Python[2021蓝桥杯省赛编程题] F.时间显示 n = int( ...

  4. 2021蓝桥杯省赛b题解

    ​​​​​​近几年蓝桥杯再也不是暴力杯了,但是可以很好的锻炼自己的代码水平,可以以赛促学,不要老看代码,比赛后时写代码速度也很重要! 空间 计组基础题:256MB=256 * 2^20 * 8 位 所 ...

  5. 2021蓝桥杯省赛B组(C++)题解

    A:卡片 题目描述 小蓝有很多数字卡片,每张卡片上都是数字0 到9. 小蓝准备用这些卡片来拼一些数,他想从1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了. 小蓝想知道自己能从1 拼 ...

  6. 2021蓝桥杯11.27初赛编程题

    第一题:求和 时间限制: 1000MS 内存限制: 65536KB 题目描述: 给出两个整数,计算出两个整数的和. 输入描述 输入两个整数(-1000<整数<1000),整数之间一个空格隔 ...

  7. 2021蓝桥杯国赛B组C/C++个人记录

    以下为个人场上所提交答案,欢迎大家指出错误,后续会更正正确题解. 个人提交:25 说明: Mbps是M bit per second, MB是 M Byte,bit是比特,Byte是字节,1Byte= ...

  8. 2021 蓝桥杯省赛第一场 C++ 大学 B 组

    目录 A. 空间 B. 卡片 C. 直线 D. 货物摆放 E. 路径 F. 时间显示 G. 砝码称重 H. 杨辉三角形 I. 双向排序 J. 括号序列 前言 今年的省赛题型和风格大变,没了模拟和搜索码 ...

  9. 2021蓝桥杯B组C/C++解析

    试题A: 问题描述 小蓝准备用256MB的内存空间开一个数组,数组的每个元素都是 32位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB的空间可以存储多少个32位二进制整数 ...

  10. 既约分数蓝桥杯c语言,2021蓝桥杯C++第二届省赛

    负载平衡 题目描述 有 \\(n\\) 台计算机,第 \\(i\\) 台计算机的运算能力为 \\(v_i\\). 有一系列的任务被指派到各个计算机上,第 \\(i\\) 个任务在 \\(a_i\\) ...

最新文章

  1. 科学家利用耳蜗植入物来测量脑电波来优化听力
  2. 做301定向跳转对网站优化有什么帮助?
  3. 【机器视觉】 dev_set_lut算子
  4. 如何处理SAP Fiori Launchpad错误消息:Could not start the app due to a configuration problem
  5. Linux中英文命令对应
  6. sql语句基础学习(不涉及多表查询)
  7. Spring Boot细节挖掘(Redis的集成)
  8. linux下载gcc yarm,修改Yarn的全局安装和缓存位置
  9. python数据类型-字符串
  10. mysql基础之忘掉密码解决办法及恢复root最高权限办法
  11. 【HDU3336】Count the String(kmp--每个前缀出现的次数)
  12. c语言中字符常量是什么?
  13. 《有限单元法》--王勖成,习题2.12 MATLAB 程序
  14. 印前调色的基本规律及视觉效果
  15. html基本标记练习钱塘湖春行,《钱塘湖春行》练习题及答案
  16. win7访问计算机需要密码,win7访问win10系统时需要输入用户名密码解决方法
  17. “蔚来杯“2022牛客暑期多校训练营5 A:Don‘t Starve
  18. android 文件管理器 apk,Android6.0自带文件管理器无法打开apk文件
  19. Decoder原理和浅解
  20. [I.MX6UL] U-Boot移植(二)

热门文章

  1. Chrome - develop for the web
  2. 虚拟机与本机可以互ping,但是Xshell连不上虚拟机 的解决方法
  3. 正则表达式的‘前瞻后顾’
  4. 华为21级程序员月薪27万,你怎么看?
  5. 端午节,我用Python爬取屈原的诗
  6. “蔚来杯“2022牛客暑期多校训练营1 J Serval and Essay(图的启发式合并)
  7. 关于find_busiest_group函数提现出的Linux性能问题
  8. 超级表格企业版,最实用的三个功能
  9. Android dex2oat命令参数解释
  10. 用python turtle画人_家里蹲太孤单?用 Python 画一只单身狗