ABC282E Choose Two and Eat One

又一个图论的回顾——Kruskal最小(最大)生成树算法。

看到\(n\)的范围只有\(500\),应该没有什么特别的算法。那么我们考虑建一个*\(n\)个顶点的完全图,节点\(x\)到节点\(y\)的边权值就是\(x^y+y^x\)。然后跑一遍最大生成树,得到的和就是最大结果了。

如何证明生成树的边一定满足题目条件?因为一共要吃掉\(n-1\)个球,也就是删除图上的\(n-1\)条边,若想让这\(n-1\)条边连接\(n\)个点,必须要求这些边构成一个树。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct edge{
int u,v,w;
}edges[250010];
int n,m,a[510],fa[510],cnt;
bool cmp(edge a,edge b){return a.w>b.w;}
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int qpow(int a,int b){
int fac=1;
while(b){
if(b&1) fac=(fac*a)%m;
a=(a*a)%m,b>>=1;
}
return fac;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
edges[++cnt].u=i,edges[cnt].v=j;
edges[cnt].w=(qpow(a[i],a[j])+qpow(a[j],a[i]))%m;
}
}
sort(edges+1,edges+1+cnt,cmp);
for(int i=1;i<=n;i++) fa[i]=i;
int edgecnt=0,ans=0;
for(int i=1;i<=cnt;i++){
int u=find(edges[i].u),v=find(edges[i].v);
if(u==v) continue;
fa[u]=v;
edgecnt++;
ans+=edges[i].w;
if(edgecnt>=n-1) break;
}
cout<<ans;
return 0;
}

[题解]ABC282E Choose Two and Eat One的更多相关文章

  1. HHKB Programming Contest 2022 Winter(AtCoder Beginner Contest 282)

    前言 好久没有打 AtCoder 了.有点手生.只拿到了 \(\operatorname{rk}1510\),应该上不了多少分. 只切了 \(\texttt{A,B,C,D}\) 四题. A - Ge ...

  2. HDU 2680 Choose the best route(多起点单终点最短路问题)题解

    题意:小A要乘车到s车站,他有w个起始车站可选,问最短时间. 思路:用Floyd超时,Dijkstra遍历,但是也超时.仔细看看你会发现这道题目好像是多源点单终点问题,终点已经确定,那么我们可以直接转 ...

  3. UVA10375 选择与除法 Choose and divide 题解

    题目链接: https://www.luogu.org/problemnew/show/UVA10375 分析: 这道题可以用唯一分解定理来做. 什么是唯一分解定理?百度即可,这里也简介一下. 对于任 ...

  4. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  5. AtCoder Beginner Contest 115 题解

    题目链接:https://abc115.contest.atcoder.jp/ A Christmas Eve Eve Eve 题目: Time limit : 2sec / Memory limit ...

  6. HDU1693 Eat the Trees —— 插头DP

    题目链接:https://vjudge.net/problem/HDU-1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Others)    Mem ...

  7. AtCoder Grand Contest 021完整题解

    提示:如果公式挂了请多刷新几次,MathJex的公式渲染速度并不是那么理想. 总的来说,还是自己太弱了啊.只做了T1,还WA了两发.今天还有一场CodeForces,晚上0点qwq... 题解还是要好 ...

  8. LeetCode OJ 题解

    博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...

  9. 【HDOJ】【1693】Eat The Trees

    插头DP 插头dp模板题…… 这题比CDQ论文上的例题还要简单……因为不用区分左右插头(这题可以多回路,并不是一条哈密尔顿路) 硬枚举当前位置的状态就好了>_< 题解:http://blo ...

  10. Eat the Trees hdu 1693

    Problem DescriptionMost of us know that in the game called DotA(Defense of the Ancient), Pudge is a ...

随机推荐

  1. pytorch入门 - 微调huggingface大模型

    在自然语言处理(NLP)领域,预训练语言模型如BERT已经成为主流.HuggingFace提供的Transformers库让我们能够方便地使用这些强大的模型. 本文将详细介绍如何使用PyTorch微调 ...

  2. 钓鱼攻击(phishing)详解和实现过程

    钓鱼攻击 定义:钓鱼攻击是一种常见的网络攻击手段,攻击者通过伪装成合法的网站.邮件或信息,诱骗用户提供敏感信息,如用户名.密码.银行卡号等,从而达到非法获取用户数据或进行欺诈的目的. 网络钓鱼(phi ...

  3. 关于js中的toLocaleDateString()方法

    toLocaleDateString()方法是JavaScript Date对象的一个内建方法,它将日期转换为符合特定地区习惯的字符串格式. 基本用法: 如果没有传入任何参数,toLocaleDate ...

  4. CAN304 W3

    CAN304 W3 Message authentication code Message integrity 我们一直关注确保通信的保密性. Integrity:确保接收到的消息来自预期方,并且未被 ...

  5. ABAP中字符串相关比较

    The following table shows the relational operators for comparisons between character-like operands ( ...

  6. 开源共建 | Dinky 扩展批流统一数据集成框架 ChunJun 的实践分享

    一.前言 ChunJun(原FlinkX)是一个基于 Flink 提供易用.稳定.高效的批流统一的数据集成工具,既可以采集静态的数据,比如 MySQL,HDFS 等,也可以采集实时变化的数据,比如 b ...

  7. FFmpeg开发笔记(六十七)Windows给FFmpeg集成支持RIST协议的librist

    ​<FFmpeg开发实战:从零基础到短视频上线>一书的"10.2  FFmpeg推流和拉流"提到直播行业存在RTSP和RTMP两种常见的流媒体协议.除此以外,还有比较两 ...

  8. Model Context Protocol C# SDK v0.3.0-preview.1 版本发布

    Model Context Protocol (MCP) 是一种新兴的开放标准,旨在实现大型语言模型(LLM)与外部数据源及工具之间的无缝集成.v0.3.0-preview.1 版本是这一标准的重要更 ...

  9. Kong入门学习实践(1)基础概念快览

    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看.由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版. 什么是Kong? Ko ...

  10. R Studio操作技巧笔记

    快捷键 Ctrl+Shift+C 注释快捷键,可以添加/消除注释,也可多行注释 Ctrl + Shift + Enter 执行整个文件 Ctrl+Enter 运行当前/被选中的代码 Ctrl+L 清空 ...