1 条题解
-
0
自动搬运
来自洛谷,原作者为

Naro_Ahgnay
值得就喜欢。搬运于
2025-08-24 22:35:23,当前版本为作者最后更新于2022-01-22 14:28:59,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
现有一个包含 行 列的数据库,然后询问 次,每次有 个数,当 为 时可以将 变成任意数。求出数据库中有几行数可以由这 个数变化而来。
思路
既然当 为 时可以变成任何数,那么我们只需要考虑当 时和数据库的匹配情况。
对于输入的 ,我们可以枚举第 行第 列上的数是否与 相等。用数组 保存每一行是否与这 个数有不同,则当 时将 赋值为 1。最后检查 到 中的 有多少个仍然为 0,即为这次询问的答案。
code
#include<bits/stdc++.h> using namespace std; int n,m,ans,b,q; int a[1001][1001]; bool vis[1001]; int main() { // freopen("P8038.in","r",stdin); // freopen("P8038.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); scanf("%d",&q); while(q--) { memset(vis,0,sizeof(vis)); ans=0; for(int j=1;j<=m;j++) { scanf("%d",&b); if(b!=-1) { for(int i=1;i<=n;i++) if(a[i][j]!=b) vis[i]=1; } } for(int i=1;i<=n;i++) if(!vis[i]) ans++; printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 7380
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者