蓝桥杯每日5题
问题一 班级活动
1.班级活动 - 蓝桥云课
问题描述
小明的老师准备组织一次班级活动。班上一共有 nn 名 (nn 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 nn 以内的正整数作为 idid,第 ii 名同学的 idid 为 aia**i。
老师希望通过更改若干名同学的 idid 使得对于任意一名同学 ii,有且仅有另一名同学 jj 的 idid 与其相同 (ai=aja**i=a**j)。请问老师最少需要更改多少名同学的 idid?
输入格式
输入共 22 行。
第一行为一个正整数 nn。
第二行为 nn 个由空格隔开的整数 a1,a2,…,ana1,a2,…,a**n。
输出格式
输出共 11 行,一个整数。
样例输入
4
1 2 2 3
样例输出
1
样例说明
仅需要把 a1a1 改为 33 或者把 a3a3 改为 11 即可。
评测用例规模与约定
对于 20%20% 的数据,保证 n≤103n≤103。
对于 100%100% 的数据,保证 n≤105n≤105。
解答1
#include<bits/stdc++.h>
using namespace std;
int arr[100001];
int main(){int m,k,p=0,q=0;cin>>m;for(int i=0;i<m;i++){cin>>k;arr[k]++;}for(int i=0;i<=m;i++){
// 寻找只有一个的if(arr[i]==1)q++;
// 两个够了,多的那些必须变if(arr[i]>2)p=p+arr[i]-2;}
// 如果最后出现一次的数字比较多,则p都变,然后q剩下的除以2计科if(q>=p)cout<<p+(q-p)/2;elsecout<<p;
// 如果剩余重复的比较多则都得变return 0;
}
问题2
5.ASC - 蓝桥云课
ASC
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?
解答2
#include<bits/stdc++.h>
using namespace std;
int main(){int a='L';cout<<a;return 0;
}
问题3
3.裁纸刀 - 蓝桥云课
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。
小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。
在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。
如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次?
解答3
#include<bits/stdc++.h>
using namespace std;
int main(){int ans=20*22+3;cout<<ans;return 0;
}
问题4
12.答疑 - 蓝桥云课
题目描述
有 nn 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。
老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下:
- 首先进入办公室,编号为 ii 的同学需要 sis**i 毫秒的时间。
- 然后同学问问题老师解答,编号为 ii 的同学需要 aia**i 毫秒的时间。
- 答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可 以忽略。
- 最后同学收拾东西离开办公室,需要 eie**i 毫秒的时间。一般需要 1010 秒、2020 秒或 3030 秒,即 eie**i 取值为 1000010000,2000020000 或 3000030000。
一位同学离开办公室后,紧接着下一位同学就可以进入办公室了。
答疑从 00 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群 里面发消息的时刻之和最小。
输入描述
输入第一行包含一个整数 nn,表示同学的数量。
接下来 nn 行,描述每位同学的时间。其中第 ii 行包含三个整数 sis**i, aia**i, eie**i,意义如上所述。
其中有 ,1≤n≤1000,1≤si≤60000,1≤ai≤106,ei∈10000,20000,300001≤n≤1000,1≤s**i≤60000,1≤a**i≤106,e**i∈10000,20000,30000,即 eie**i 一定是 10000、20000、3000010000、20000、30000 之一。
输出描述
输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。
输入输出样例
示例
输入
3
10000 10000 10000
20000 50000 20000
30000 20000 30000
输出
280000
解答4
问题5
问题描述
小蓝组织了一场算法交流会议,总共有 5050 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 77 个人,这 77 人彼此之间没有进行握手 (但这 77 人与除这 77 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?
注意 AA 和 BB 握手的同时也意味着 BB 和 AA 握手了,所以算作是一次握手。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解答5
一道典型填空题
第一个人握49次手
以此类推
最后7人不握手
由于我们把他们排在后面他们握过的手已经算在前面了,所以就直接不用算,故直接是前43个人分别去和他们后面的人握手,最后输出和即可
#include <iostream>
using namespace std;
int main()
{int sum=0;for(int i=49;i>=7;i--)sum+=i;cout<<sum;return 0;
}