ACM想法题
来源:互联网 发布:淘宝卖家后台 编辑:程序博客网 时间:2024/05/16 00:37
描述:中国科技大学OJ-1106矩阵乘以矩阵的逆
http://acm.hust.edu.cn/problem.php?cid=1106&pid=8
/*
题意:矩阵A为0,1矩阵,求矩阵B等于A乘以A的逆,然后求B有多少个1 思路:矩阵乘以矩阵的逆相当于A每行和所有的行相乘
。所以,比较矩阵A每列对应有多少个相等的1, 循环A的行,看第i行的每列最大有多少个数"1",
就是对应B的第i行的1的个数。但是如果用二维数组 开10000*10000会超内存,而且是1的也最多只有1000个,
所以用op数组标记,用row[i][]对应的所有 是1的列存起来,col[]为第j列有多少 个1.然后查找就可以了
*/
#include<stdio.h>
#include<string.h>
int
row[1005][1005];
int
op[100005];
int
col[100005];
int
Max(
int
a,
int
b)
{
return
a>b?a:b;
}
int
main()
{
int
n,m,T,i,x,y,t,sum,w,v;
scanf
(
"%d"
,&T);
while
(T--)
{
memset
(row,0,
sizeof
(row));
memset
(col,0,
sizeof
(col));
memset
(op,0,
sizeof
(op));
scanf
(
"%d%d"
,&n,&m);
v=1;
for
(i=1;i<=m;i++)
{
scanf
(
"%d%d"
,&x,&y);
if
(op[x])
{
w=op[x];
t=++row[w][0];
row[w][t]=y;
col[y]++;
}
else
{
op[x]=v;
row[v][1]=y;
row[v][0]=1;
col[y]++;
v++;
}
}
sum=0;
for
(i=1;i<v;i++)
{
x=col[row[i][1]];
t=2;
while
(row[i][t])
{
x=Max(x,col[row[i][t]]);
t++;
}
sum+=x;
}
printf
(
"%d\n"
,sum);
}
return
0;
}
编辑 删除
- ACM想法题
- Codeforces Round #289 (Div. 2, ACM ICPC Rules)E. Pretty Song(数学,想法题,好题)
- 北大ACM 1001,关于高精度数的一些想法:
- hdu4020简单想法题
- hdu4923(想法题)
- poj 2452 想法题
- hdu 5178想法题
- Codeforces_414C:Mashmokh_and_Reverse_Operation(想法题)
- Codeforces_509E:Pretty_Song(想法题)
- 最佳刷题 想法
- hdu6105(想法题)
- hdu6105(想法题)
- codeforces884C(暴力想法题?)
- 想法
- 想法
- 想法
- 想法!
- 想法
- .Net 多文件上传
- delphi中WebBrowser的parent改变时变成空白问题的解决
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
- c++ 多线程开发简易工具——OpenMP使用
- 讲讲C++中的volatile关键字
- ACM想法题
- openstack services port
- linux内核中的IS_ERR
- <c:forEach>
- Android跨进程通信-AIDL
- UIScrollView
- Unloading Data Using the ORACLE_DATAPUMP Access Driver【每日一译】--20121225
- Sql Server中字符转换成整型或小数位的函数用法!
- cocos2d-x创建场景Scene及三要素