传送门
A. Nastya Is Reading a Book
:暴力枚举
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int le[maxn],ri[maxn],n,id;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d%d",le+i,ri+i);
scanf("%d",&id);
for(int i=1;i<=n;++i){
if(id>=le[i] && id<=ri[i]){
cout<<n-i+1<<endl;
return 0;
}
}
return 0;
}
B. Nastya Is Playing Computer Games
:每在一个井盖旁就将硬币拿走,走的过程中将石子放到已经拿走硬币的井盖上就行了,除了最开始的两个,将一个搬到另一个上,后面还要将这两个搬到拿走的那个井盖,其他的都只需要搬一次石子就可以了。然后计算一下行走的路径即可。
#include<bits/stdc++.h>
using namespace std;
int n,k;
int main(){
scanf("%d%d",&n,&k);
int ans=n+3;
ans+=n-1+min(k-1,n-k);
ans+=(n-2);
cout<<ans<<endl;
return 0;
}
C. Nastya Is Transposing Matrices
:一道思维题,矩阵转置会交换反对角线上的数,所以只要同一根反对角线上的出现的数没有改变,那就能把他转回去。
#include<bits/stdc++.h>
using namespace std;
const int maxn=505;
int a[maxn][maxn],n,m;
map<int,int> num[maxn<<1];
int main(){
std::ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cin>>a[i][j];
num[i+j-1][a[i][j]]++;
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cin>>a[i][j];
if(num[i+j-1][a[i][j]]<=0){
cout<<"NO"<<endl;
return 0;
}
else num[i+j-1][a[i][j]]--;
}
}
cout<<"YES"<<endl;
return 0;
}