- 王晨逸 的博客
7.15
- @ 2025-7-15 19:58:08
A. 矩阵转置
#include<bits/stdc++.h>
using namespace std;
int h,w;
int main(){
cin>>h>>w;
vector<vector<int>>a(h,vector<int>(w));
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>a[i][j];
}
}
for(int j=0;j<w;j++){
for(int i=0;i<h;i++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
本题考察对二维数组的运用,考点是在普通数组的二维数组达到极限时需要使用vector数组,错误点在没有想到vector数组和没有想到vector数组
C. 暑假打工
#include <bits/stdc++.h>
using namespace std;
int n,m,sum=0,k=1;
struct w{
int a,b;
};
w s[100001];
priority_queue<w>p;
bool cmp(w a1,w b1){
return a1.a<b1.a;
}
bool operator<(w a1,w b1){
return a1.b<b1.b;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i].a>>s[i].b;
}
sort(s+1,s+1+n,cmp);
for(int i=1;i<=m;i++){
while(k<=n&&s[k].a<=i){
p.push(s[k]);
k++;
}
if(!p.empty()){
sum+=p.top().b;
p.pop();
}
}
cout<<sum;
return 0;
}
本题考察在对暴力解决超时的时候,需要使用栈来解决问题,错误点是没有想到使用栈,以及对栈的使用不熟练,需要加强训练,并且考察到了struct来存储两种信息
D. 我喜欢因式分解
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
for(int i=0;i<200;i++){
for(int j=-200;j<200;j++){
if((i*i*i*i*i)-(j*j*j*j*j)==x){
cout<<i<<" "<<j;
return 0;
}
}
}
return 0;
}
本题考察暴力算法,无知识点需整理,错误点在没有对暴力算法理解透彻,需加强练习
总结:对vector数组,栈,结构体需熟练,对暴力解需加强练习
重点:栈,结构体