bzoj 3498
统计三元环
很多代码在bzoj都T诶
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string> #define gc getchar()
inline int read() {int x = , f = ; char c = gc; while(c < '' || c > '') {if(c == '-') f = -; c = gc;}
while(c >= '' && c <= '') x = x * + c - '', c = gc; return x;}
#undef gc using namespace std;
const int N = 1e5 + , M = 2e5 + 5e4 + ; int n, m;
int A[M], B[M], W[N];
int du[N];
int vis[N];
int cnt, head[N];
struct Node {int v, nxt;} G[M]; inline void Add(int u, int v) {G[++ cnt].v = v, G[cnt].nxt = head[u], head[u] = cnt;}
inline int Max(int a, int b) {if(a > b) return a; return b;} int main() {
n = read(), m = read();
for(int i = ; i <= n; i ++) W[i] = read();
for(int i = ; i <= m; i ++) {
A[i] = read(), B[i] = read();
du[A[i]] ++, du[B[i]] ++;
}
for(int i = ; i <= n; i ++) head[i] = -;
for(int i = ; i <= m; i ++) {
if(du[A[i]] > du[B[i]] || (du[A[i]] == du[B[i]] && A[i] > B[i])) swap(A[i], B[i]);
Add(A[i], B[i]);
}
long long Answer = ;
for(int k = ; k <= m; k ++) {
for(int i = head[A[k]]; ~ i; i = G[i].nxt) {
vis[G[i].v] = k;
}
for(int i = head[B[k]]; ~ i; i = G[i].nxt) {
if(G[i].v != A[k] && vis[G[i].v] == k) {
Answer += Max(Max(W[A[k]], W[B[k]]), W[G[i].v]);
}
}
}
printf("%lld", Answer);
return ;
}
bzoj 3498的更多相关文章
- BZOJ 3498: PA2009 Cakes 一类经典的三元环计数问题
首先引入一个最常见的经典三元环问题. #include <bits/stdc++.h> using namespace std; const int maxn = 100005; vect ...
- BZOJ 3498 PA2009 Cakes(三元环处理)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3498 [题目大意] N个点m条边,每个点有一个点权a. 对于任意一个三元环(j,j,k ...
- BZOJ 3498 PA2009 Cakes
本题BZOJ权限题,但在bzojch上可以看题面. 题意: N个点m条无向边,每个点有一个点权a. 对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求 ...
- [BZOJ 3498] [PA 2009] Cakes
Description \(n\) 个点 \(m\) 条边,每个点有一个点权 \(a_i\). 对于任意一个三元环 \((i,j,k)(i<j<k)\),它的贡献为 \(\max(a_i, ...
- BZOJ.3498.[PA2009]Cakes(三元环 枚举)
题目链接 感觉我可能学的假的(复杂度没问题,但是常数巨大). 一个比较真的说明见这儿:https://czyhe.me/blog/algorithm/3-mem-ring/3-mem-ring/. \ ...
- Bzoj 3498 Cakes(三元环)
题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可. #include <cstdio> #include <cstring> #include <vecto ...
- bzoj 3498: PA2009 Cakes【瞎搞】
参考:https://www.cnblogs.com/spfa/p/7495438.html 为什么邻接表会TTTTTTTLE啊...只能用vector? 把点按照点权从大到小排序,把无向边变成排名靠 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
随机推荐
- 用Onenote写博客日志
进入OneNote,选中要发布博客的分区,然后点击菜单栏中的[文件]->[发送]->[发送至博客] 这时候会启动word程序弹出下面的对话框(如果你从未设置过),点击[立即 ...
- Angular 学习笔记 (Angular 9 & ivy)
refer : https://blog.angularindepth.com/all-you-need-to-know-about-ivy-the-new-angular-engine-9cde47 ...
- 2.Excel VBA术语
Excel VBA名词术语 在这一章中,让我们了解常用的Excel VBA术语.这些术语将在进一步模块学习中使用,因此理解它们是非常关键的. 模块 1.模块是其中代码被写入的区域.这是一个新的工作簿, ...
- Informix从一个表更新多选数据到另一个表
功能如题, Informix从一个表更新多选数据到另一个表 例如, 要更新tab01的几个字段数据, 这些数据来自tab02, tab01和tab02之间通过id关联 参考语句: update tab ...
- 3.asp.net core 关键概念
1. StartUp类 在Startup.ConfigureServices方法里配置或注册服务 在Startup.Configure方法里配置请求处理管道.请求处理管道由一系列中间件组建构成,每个中 ...
- 命令“regsvr32 /s /n /i:user "XXXXXX"”已退出,代码为 3
问题:命令“regsvr32 /s /n /i:user "F:\XXXXXXXXXXXXXXXXX\Release\One.ocx"”已退出,代码为 3 解决方法: The is ...
- vue 分组左右选择
<el-col :span="12"> <div style="text-align: left" class="transferd ...
- Integer和int踩过的坑
在做SSM项目时发现一个有趣的bug,在这里记录一下. 数据库表如下: 实体类:grade字段初始设定为int类型 在用mybatis对第三条数据进行修改时,希望赋值的更改,未赋值的不更改,测试运行 ...
- 四、DDL常见操作汇总
DDL: Data Define Language 数据定义语言,主要用来对数据库.表进行一些管理操作.如:建库.删库.建表.修改表.删除表.对列的增删改等. 一.库的管理 1.创建库 create ...
- 如何在github上提交pr
如何在github上提交pr 1.fork开源的代码到自己的远程仓库 2.clone自己的仓库到本地电脑 3.与源代码的github仓库建立新的连接 git remote add upstream h ...