- 25育新暑期+秋季班笔记
第九周笔记提交(10.1-10.7)
- @ 2025-10-1 21:24:31
第九周笔记提交(10.1-10.7)
9 comments
-
王皓翔 LV 6 @ 2025-10-8 18:23:49Edited
点积运算(dot)
输入一下b1,b2,a1,a2,抄一下公式就可以了。注意开long long。
代码:
#include<bits/stdc++.h> using namespace std; int main(){ long long a1,a2,b1,b2; cin>>a1>>a2>>b1>>b2; long long s=a1*b1+a2*b2; cout<<s; return 0; }成绩统计(score)
(自己的写法) 定义max1[505](储存每个数),max2[505](计数每个数出现的次数),max3=0(最大分数),min1=1e9(最小分数),max4=0(人数最多的分数次数),s=0(p到q的人数),a(分数),n,p,q。先输入n和每个人的分数,每次让max1[a]=a,max2[a]++并找最大分数和最小分数。再输入p,q,循环从min1到max3。每次让max4和max2[i]作对比,比哪个大,这样可以找出人数最多的分数次数。然后要输出最小分数和人数cout<<min1<<" "<<max2[min1](因为之前是在每个数的位置++的,所以下标就是min1)<<endl;输出最大分数和人数同理cout<<max3<<" "<<max2[max3]<<endl;接着要输出人数最多的分数,如果有人数同样多的分数则按分数从小到大的顺序输出。那么还是可以用循环从min1到max3,这样就完成了分数从小到大。每次循环都判断max2[i]是否等于max4。等于的话就输出cout<<max1[i]<<" "<<max4<<endl;最后还要输出p分数到q分数之间的人数。可以循环从p到q,每次让s+max2[i]。循环完后输出s。
代码:
using namespace std; int max1[505],max2[505],max3=0,min1=1e9,max4=0,s=0; int main(){ int a,n,p,q; cin>>n; for(int i=1;i<=n;i++){ cin>>a; max1[a]=a; max2[a]++; max3=max(max3,a); min1=min(min1,a); } cin>>p>>q; for(int i=min1;i<=max3;i++){ max4=max(max2[i],max4); } cout<<min1<<" "<<max2[min1]<<endl; cout<<max3<<" "<<max2[max3]<<endl; for(int i=min1;i<=max3;i++){ if(max2[i]==max4){ cout<<max1[i]<<" "<<max4<<" "; } } for(int i=p;i<=q;i++){ s+=max2[i]; } cout<<endl<<s; return 0; }数字排列(number)
这一题首先要考虑怎么样会不可能完成,那么当这一组数出现两次前一个数比后一个数大或出现一次前一个数比后一个数大并且最后一个数比第一个数大时就不可能完成。如果能完成就要判断这组数有几次前一个数比后一个数大,如果有0次就输出0,否则输出n-i,i可以用一个变量储存(pos)。
代码:

栈道(wav)
画板、代码:

马拉松(marathon)
画板,代码:

-
@ 2025-10-8 14:51:30
-
@ 2025-10-8 14:51:17
-
@ 2025-10-7 11:12:02

-
@ 2025-10-7 11:11:47

-
@ 2025-10-6 19:23:00

-
@ 2025-10-6 11:16:51
-
@ 2025-10-6 10:10:20
-
@ 2025-10-6 9:57:46

- 1
Information
- ID
- 1085
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 2
- Accepted
- 0
- Uploaded By