cxl班笔记(cxl万岁)
2025-08-28 17:08:01
发布于:广东
观前提示:本文无人受伤!!
1.
A国家有 n 种面值的货币,现在你有机会从 n 种货币中选 m 张钱(每种面值的货币最多选一张),请你求出拿了 m 张币纸之后,最多能拿到的钱是多少?
输入格式
两行,第一行两个整数 n 和 m(0<m≤n≤500)
第二行 n 个整数,表示 A 国家的 n 种货币的面值。
输出格式
一个整数,表示最大能拿到的钱。
样例组
输入#1
5 3
100 50 10 5 20
输出#1
170
提示说明
从 5 张货币里面拿 3 张,保证拿的钱最多,拿的方案是:100,50,20,总共 170
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n,m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1;a+n+1);
int sum=0;
for(int i=1;i<=m)
{
s+=a[n-i+1];
}
cout<<sum;
}
2.
小码君所在的市区刚刚考完试了,小码君已经把全市的考试成绩从小到大排序了(有些同学的成绩可能是一样的)。
小码君想要在这个成绩序列中查找第一个大于等于成绩 x 的元素对应的编号(编号从 0 开始),为成绩 x 找到“第一个平手”。
题目保证:所有整数均在 int 的表示范围内,尝试用二分去解决。
输入格式
**输入有 3 行。第 1 行输入 n(0<n≤10 6 )。
第 2 行输入 n 个整数,即升序的成绩序列。
第 3 行输入整数 x,即待查找的成绩。**
输出格式
输出该序列第一个大于等于成绩 x 的元素对应的编号(编号从 0 开始)。
样例组
输入#1
6
67 72 72 72 78 90
72
输出#1
1
输入#2
6
67 72 72 72 78 90
73
输出#2
4
提示说明
题目保证一定存在大于等于 x 的位置。
样例1解释:
6 个数,分别为 67 72 72 72 78 90 ,查找第一个大于等于 72 的位置为下标为 1 的位置。
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n,m;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>m;
int k=lower_bound(a,a+n,m)-a;
cout<<k;
}
3.
求出斐波那契数列的第 n 项的值。由于答案可能很大,你需要将结果模上 1e9+7 输出。
任意一个数模上 p 的值在 0∼(p−1) 之间。
模运算有如下性质:(a + b) % p = (a % p + b % p) % p
输入格式
一个整数 n(1≤n≤1e6)。
输出格式
输出斐波那契数列第 n 项的值模上 1e9+7 的结果。
样例组
输入#1
2
输出#1
1
输入#2
100
输出#2
687995182
提示说明
样例说明1:
斐波那契数列的第一项和第二项都为 1。
#include<bits/stdc++.h>
using namespace std;
int a[100006];
int main(){
a[1]=1,a[2]=1;
int n,m;
cin>>n;
for(int i=3;i<=n;i++)
{
a[i]=(a[i-1]+a[i-2])%1000000007;
}
cout<<a[n]<<endl;
}
4.
模拟队列的操作。初始时队列为空,有 n 次操作,每次操作可以是入队或出队操作。在 n 次操作结束后,请输出队列中所有元素。
输入格式
第一行包含一个整数 n(1≤n≤100),表示总共有 n 次操作。
接下来的 n 行,每行包含一个操作,操作可以是以下两种之一:
push x:将整数 x 入队(−10 9 ≤x≤10 9)。
pop:执行出队操作,如果队列为空则忽略此操作。
输出格式
按照从队首到队尾的顺序,输出队列中的所有元素,用一个空格隔开。
样例组
输入#1
6
push 1
push 2
push 3
pop
push 4
pop
输出#1
3 4
提示说明
样例说明:
6 次操作,起初队列为空。
第一次 push 1,将 1 入队,队列里面的元素为 1
第二次 push 2,将 2 入队,队列里面的元素为 1 2
第三次 push 3,将 3 入队,队列里面的元素为 1 2 3
第四次 pop,出队,队列里面的元素为 2 3
第五次 push 4,将 4 入队,队列里面的元素为 2 3 4
第六次 pop,出队,队列里面的元素为 3 4
#include<bits/stdc++.h>
using namespace std;
int a[100006];
int main(){
int n;
cin>>n;
queue<int> q;
while(n--)
{
string s;
cin>>s;
if(s=="push")
{
int x;cin>>x;
q.push(x);
}
else{
q.pop();
}
}
while (q.size()){
cout<<q.front()<<" ";
q.pop();
}
}
cxl神人
这里空空如也
有帮助,赞一个