BZOJ 3498 PA2009 Cakes
本题BZOJ权限题,但在bzojch上可以看题面。
题意:
N个点m条无向边,每个点有一个点权a。
对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak)
求所有三元环的贡献和。
N<100000,m<250000
Solution:
本题裸的三元环计数。
无向图三元环计数的问题大致做法:
统计每个点的度数,对于一条无向边$<u,v>$,若$deg[u]==deg[v]$则从编号小的点向编号大的点连有向边,否则从$deg$较大的向较小的点连有向边。
这样无向图就变为了一个DAG模型,然后扫一下每个点$u$,对其出点$v$打标记$vis[v]=u$,再对每个出点$v$的出点$w$判断是否满足$vis[w]=u$即可。
分析一波时间复杂度:
不难发现对于每条边$u\rightarrow v$,我们需要统计的是出度个数$out_v$,那么总的贡献是$\sum_\limits{i=1}^{i\leq n}{out_i}$。
假设$out_v\leq \sqrt m$,由于$u\rightarrow v$,则$deg_u\geq deg_v$,这样$u$最多$n$个,于是此时最坏复杂度为$O(n\sqrt m)$;
假设$out_v>\sqrt m$,由于$u\rightarrow v$,则$deg_u\geq deg_v$,于是$deg_u>\sqrt m$,这样$u$最多$\sqrt m$个,于是此时最坏时间复杂度$O(m\sqrt m)$。
综上所述,$n,m$同阶时,该算法时间复杂度$O(n\sqrt m)$。
那么本题三元环计数时累加答案就好了。
代码:
/*Code by 520 -- 9.10*/
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define RE register
#define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
using namespace std;
const int N=;
int n,m,a[N],deg[N],vis[N];
int to[N],net[N],h[N],cnt;
struct node{
int u,v;
}e[N];
ll ans; int gi(){
int a=;char x=getchar();bool f=;
while((x<''||x>'')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=;
while(x>=''&&x<='')a=(a<<)+(a<<)+(x^),x=getchar();
return f?-a:a;
} il void add(int u,int v){to[++cnt]=v,net[cnt]=h[u],h[u]=cnt;} int main(){
n=gi(),m=gi();
For(i,,n) a[i]=gi();
For(i,,m) e[i].u=gi(),e[i].v=gi(),++deg[e[i].u],++deg[e[i].v];
For(i,,m) {
RE int u=e[i].u,v=e[i].v;
if(deg[u]<deg[v]||deg[u]==deg[v]&&u>v) swap(u,v);
add(u,v);
}
For(u,,n){
for(RE int i=h[u];i;i=net[i]) vis[to[i]]=u;
for(RE int i=h[u];i;i=net[i]) {
RE int v=to[i];
for(RE int j=h[v];j;j=net[j]){
RE int w=to[j];
if(vis[w]==u)ans+=max(a[u],max(a[v],a[w]));
}
}
}
cout<<ans;
return ;
}
BZOJ 3498 PA2009 Cakes的更多相关文章
- 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(三元环 枚举)
题目链接 感觉我可能学的假的(复杂度没问题,但是常数巨大). 一个比较真的说明见这儿:https://czyhe.me/blog/algorithm/3-mem-ring/3-mem-ring/. \ ...
- bzoj 3498: PA2009 Cakes【瞎搞】
参考:https://www.cnblogs.com/spfa/p/7495438.html 为什么邻接表会TTTTTTTLE啊...只能用vector? 把点按照点权从大到小排序,把无向边变成排名靠 ...
- [BZOJ 3498] [PA 2009] Cakes
Description \(n\) 个点 \(m\) 条边,每个点有一个点权 \(a_i\). 对于任意一个三元环 \((i,j,k)(i<j<k)\),它的贡献为 \(\max(a_i, ...
- Bzoj 3498 Cakes(三元环)
题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可. #include <cstdio> #include <cstring> #include <vecto ...
- bzoj 3498
统计三元环 很多代码在bzoj都T诶 #include <iostream> #include <cstdio> #include <algorithm> #inc ...
- BZOJ3498 : PA2009 Cakes
令三元环(i,j,k)中i>j>k,则每条边只需要从大点连向小点 设d[x]表示从x连出的边的条数 从1到n枚举点i,然后枚举所有与i相连的边(i,x)(x<i) 如果$d[x]\l ...
- BZOJ3498: PA2009 Cakes(三元环)
题意 题目链接 Sol 按照套路把边转成无向图,我们采取的策略是从权值大的向权值小的连边 然后从按权值从小到大枚举每个点,再枚举他们连出去的点\(v\) 如果\(v\)的度数\(\leqslant M ...
随机推荐
- C#_接口与抽象类
.Net提供了接口,这个不同于Class或者Struct的类型定义.接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类.其实不然,接口和抽象类各有长处和缺陷,因此往往在 ...
- 180918-JDK之Deflater压缩与Inflater解压
JDK 压缩与解压工具类 在实际的应用场景中,特别是对外传输数据时,将原始数据压缩之后丢出去,可以说是非常常见的一个case了,平常倒是没有直接使用JDK原生的压缩工具类,使用Protosutff和K ...
- 人脸识别-关于face_recognition库的安装
首先十分感谢博客https://blog.csdn.net/scc_722/article/details/80613933,经历过很多尝试(快要醉了),终于看了这篇博客后安装成功. face_rec ...
- JS模块化样例
var fn_pageBtn = (function(){ var m1 = function(){ alert(1); }; var m2 = function(){ alert(2); }; re ...
- Vue+webpack项目中,运行报错Cannot find module 'chalk'的处理
刚开始用vue + webpack新建项目,在github上下载了一个示例,输入npm init >>>npm run dev 后报错 Cannot find module 'cha ...
- 笨办法学Python - 习题11-12: Asking Questions & Prompting People
目录 1.习题 11: 提问 2.习题 12: 提示别人 3.总结 1.习题 11: 提问 学习目标:了解人机交互场景,熟悉raw_input 的用法. 1.在 Python2.x 中 raw_inp ...
- 10款常见MySQL高可用方案选型解读
一.概述 我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. ...
- iOS软件"一天八杯水“app开发过程
作为一个ios系统测试者和app外观设计者.我们首先要了解iOS系统的开发工具和资源.xcode和iOS sdk作为一个免费的开发环境值得我们去学习和了解.interface builder提供创建了 ...
- 2018软工实践—Beta冲刺(6)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Beta 冲鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调组内工作 最终测试文稿编写 展示GitHub当日代码/文档签入记录 ...
- Restful风格wcf调用
文章:Restful风格wcf调用 作者相当于把wcf服务改造成rest风格. Restful风格wcf调用2——增删改查 这篇文章在第一篇的基础上,进行了优化. Restful风格wcf调用3——S ...