237A水题
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n,m=0,a,b; int f[10000]; memset(f,0,sizeof(f)); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&a,&b); f[a*60+b]++; if(f[a*60+b]>m)m=f[a*60+b]; } cout<<m<<endl; return 0; }
对于237B,其实动动脑子也不难,输入之后,遍历,对于每一个数,在他的右下方区域找到最小的和它换位置,记录下坐标,就好了,数组注意别开小
#include<iostream> #include<cstdio> using namespace std; int main() { int n,m,mx,my; int c[1000]; int a[500][500]; int xx[6005],yy[6005]; while(scanf("%d",&n)!=EOF) { int num=0; for(int i=1; i<=n; i++)scanf("%d",&c[i]); for(int i=1; i<=n; i++) { for(int j=1; j<=c[i]; j++)scanf("%d",&a[i][j]); } for(int i=1; i<=n; i++) { for(int j=1; j<=c[i]; j++) { m=a[i][j]; //cout<<i<<" "<<j<<"!!!!"<<endl; for(int x=i; x<=n; x++) { for(int y=j; y<=c[x]; y++) { //cout<<x<<" "<<y<<endl; if(a[x][y]<m) { m=a[x][y]; mx=x; my=y; } } } if(a[i][j]>m) { num++; xx[2*num-1]=i; yy[2*num-1]=j; xx[2*num]=mx; yy[2*num]=my; swap(a[i][j],a[mx][my]); } } } cout<<num<<endl; for(int i=1; i<=num; i++) { cout<<xx[2*i-1]<<" "<<yy[2*i-1]<<" "<<xx[2*i]<<" "<<yy[2*i]<<endl; } } return 0; }