zoj 2316 Matrix Multiplication 解题报告
2024-09-08 01:52:49
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2316
题目意思:有 N 个 点,M 条 边。需要构造一个N * M 大小的矩阵A。对于 (i, j) 这个坐标点它表示,对编号为 i 这个点编号为 j 的 点与它相连,此时标记(i, j) 为1,如果坐标点没有跟这条 j 的边相连,就标记为0。构造完这个矩阵A之后,需要求出它的转置矩阵AT,算出 ATA 的和。
新学期第一场比赛!刚开始真是打算直接做的,但是数据太大了, 2 <= N <= 10 000, 1 <= M <= 100 000,只能通过观察来简化,最后做了3个多小时,终于想出来了= =!大感动!专门补了下矩阵的知识......
规律真的需要手动算下才能发现的!!!后来还犯了个低级错误,忘记清空了。每个Test 都需要啦。最后就是格式问题。每个output之间输出一个空行。
贴个代码纪念下。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; typedef long long LL;
const int N = + ; LL A[N], ans; int main()
{
int T, n, m, v1, v2;
while (scanf("%d", &T) != EOF)
{
while (T--)
{
int maxi = -;
scanf("%d%d", &n, &m);
memset(A, , sizeof(A));
for (int i = ; i <= m; i++)
{
scanf("%d%d", &v1, &v2);
A[v1]++; // 算出每个点连着多少条边
A[v2]++;
int tm = max(v1, v2);
maxi = max(maxi, tm); // 求出最大那个点的编号
}
ans = ;
for (int i = ; i <= maxi; i++)
{
if (A[i])
ans += A[i] * A[i];
}
printf("%lld\n", ans);
if (T)
puts("");
}
}
return ;
}
最新文章
- IIS 8:IIS 入门
- Flavors
- OpenXml入门---word里面插入图片
- VS2013使用EF6连接MySql
- 左偏树(DP)问题
- go exec: ";gcc";: executable file not found in %PATH%
- 【转】JSON简介以及用法代码汇总
- mono for android工具下载
- SpringBoot下配置FreeMarker配置远程模版
- Python爬虫下载美女图片(不同网站不同方法)
- kibana-Request Timeout after 30000ms故障解决
- Java线程基础(一)
- CentOS 7.4 初次手记:第三章 CentOS基础了解
- P2865 [USACO06NOV]路障Roadblocks
- P3374 【模板】树状数组 1(cdq)
- 给定任意字符串,计算一共能组合成多少个单词bing
- 【转】python+django+vue搭建前后端分离项目
- ATK系列库介绍
- 「个人训练」Can you solve this equation?(HDU-2199)
- VisualSVN的安装使用
热门文章
- Ubuntu 16.04中的Dock的应用顺序调整
- 如何模拟alert/confirm/prompt实现阻断程序运行
- Pixhawk之姿态解算篇(1)_入门篇(DCM Nomalize)
- c# Dictionary拓展2个key得到1个value
- 菜鸟调错(十)——启动Tomcat报错“Unsupported major.minor version xxx ”
- (全然背包)小P寻宝记——好基友一起走
- HMM MEMM CRF 差别 联系
- kubernetes之计算机资源管理
- Ionic + AngularJS angular-translate 国际化本地化解决方案
- 08 comet反向ajax