洛谷div2【XR-4】模拟赛
本人水平有限,题解不到为处,请多多谅解
本蒟蒻谢谢大家观看
题目:传送门
题目大意:
我们根据样例分析一下:
输入:
6 3 7
2 3 4
2 5 7
3 5 7
1 3 5
5 6 7
1 2 3
输出:
1 2 3 1 3 1 1
样例n,m,k表示有n个人,m套题,k天有空刷题 之后n行,表示第i个人在之后第几天有空刷题
输出最大量不超过m;
我们可以发现1只在第一列出现,所以第一天只需准备1套
2在第一列和第二列均有出现,所以第二天需准备2套
3在第一列,第二列,第三列都出现,所以第三天需准备3套
……
最后统计k天各在第几列出现即可。
我们可以定义一个bool数组,表示在第j列出现了此数字
我们在统计出现的此数字在多少列数即可
code:
1 #include<bits/stdc++.h> 2 #pragma GCC optimize(3) 3 4 using namespace std; 5 int n,m,k,wz; 6 int a[1001][1001]; 7 int num[100010],tot; 8 bool flag[1001][1001]; 9 inline int read(){ 10 int x=0,f=1;char ch=getchar(); 11 while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} 12 while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} 13 return x*f; 14 } 15 inline void write(int x){ 16 char F[200]; 17 int tmp=x>0?x:-x ; 18 if(x<0)putchar('-') ; 19 int cnt=0 ; 20 while(tmp>0) 21 { 22 F[cnt++]=tmp%10+'0'; 23 tmp/=10; 24 } 25 while(cnt>0)putchar(F[--cnt]) ; 26 } 27 void solve(){ 28 for(int i=1;i<=n;i++){ 29 for(int j=1;j<=m;j++){ 30 flag[a[i][j]][j]=1; 31 } 32 } 33 for(int j=1;j<=k;j++){ 34 for(int i=1;i<=k;i++){ 35 if(flag[j][i]){ 36 num[j]++; 37 //cout<<"flag[j][i]= "<<flag[j][i]<<" j= "<<j<<" i= "<<i<<endl; 38 } 39 } 40 } 41 for(int i=1;i<=k;i++){ 42 printf("%d ",num[i]); 43 } 44 return ; 45 } 46 int main() 47 { 48 n=read(),m=read(),k=read(); 49 for(int i=1;i<=n;i++){ 50 for(int j=1;j<=m;j++){ 51 a[i][j]=read(); 52 } 53 } 54 solve(); 55 return 0; 56 }
为什们洛谷管理员不给过!!!!!