[题解]ABC282E Choose Two and Eat One
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的更多相关文章
- HHKB Programming Contest 2022 Winter(AtCoder Beginner Contest 282)
前言 好久没有打 AtCoder 了.有点手生.只拿到了 \(\operatorname{rk}1510\),应该上不了多少分. 只切了 \(\texttt{A,B,C,D}\) 四题. A - Ge ...
- HDU 2680 Choose the best route(多起点单终点最短路问题)题解
题意:小A要乘车到s车站,他有w个起始车站可选,问最短时间. 思路:用Floyd超时,Dijkstra遍历,但是也超时.仔细看看你会发现这道题目好像是多源点单终点问题,终点已经确定,那么我们可以直接转 ...
- UVA10375 选择与除法 Choose and divide 题解
题目链接: https://www.luogu.org/problemnew/show/UVA10375 分析: 这道题可以用唯一分解定理来做. 什么是唯一分解定理?百度即可,这里也简介一下. 对于任 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- AtCoder Beginner Contest 115 题解
题目链接:https://abc115.contest.atcoder.jp/ A Christmas Eve Eve Eve 题目: Time limit : 2sec / Memory limit ...
- HDU1693 Eat the Trees —— 插头DP
题目链接:https://vjudge.net/problem/HDU-1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Others) Mem ...
- AtCoder Grand Contest 021完整题解
提示:如果公式挂了请多刷新几次,MathJex的公式渲染速度并不是那么理想. 总的来说,还是自己太弱了啊.只做了T1,还WA了两发.今天还有一场CodeForces,晚上0点qwq... 题解还是要好 ...
- LeetCode OJ 题解
博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...
- 【HDOJ】【1693】Eat The Trees
插头DP 插头dp模板题…… 这题比CDQ论文上的例题还要简单……因为不用区分左右插头(这题可以多回路,并不是一条哈密尔顿路) 硬枚举当前位置的状态就好了>_< 题解:http://blo ...
- Eat the Trees hdu 1693
Problem DescriptionMost of us know that in the game called DotA(Defense of the Ancient), Pudge is a ...
随机推荐
- 面试题:String,StringBuilder,StringBuffer三者的区别
摘要:总结Java中的String,StringBuilder,StringBuffer三者的区别和联系,介绍后两者的扩容机制. Java中的String,StringBuilder,String ...
- Springboot笔记<12>数据访问
springboot数据访问 springboot整合JDBC JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用.JdbcTemplate是Spring的一部分.J ...
- 数栈 × AWS EMR On EC2 适配实践:打造出海企业可落地的云上数据中台解决方案
随着袋鼠云全面推进数栈产品的出海战略,我们在服务多个头部出海客户的过程中发现,真正做好"海外可用"的数据平台,关键不仅在于部署全球化,还在于深入适配 AWS 的核心计算平台EMR, ...
- Jq 转换日期对象 /Date(1620699801000)/ 为正常时间
https://blog.csdn.net/honeycandys/article/details/80679913 function changeDateFormat(val) { i ...
- Rust修仙之道 第十三章 并行境 · 多线程、共享与消息灵道
第十三章:并行境 · 多线程.共享与消息灵道 "术者一身不可至万处,分灵影可并行化心." 顾行云于静室冥修,心观符阵延迟,渐悟:"纵术法再快,若不能并行,终受瓶颈所限.& ...
- 解决Ubuntu上使用fsck命令时遇到的“The superlock could not be read......”的问题
问题产生原因:我也不太清楚,可能是给硬盘分区的时候出的问题. 问题解决方法:依次执行以下的命令,请根据实际情况调整存储设备名称. 注意:下面的操作会清空硬盘所有数据,请根据自己的需求来判断是否需要执行 ...
- 华为机试题 Redraiment
简介 动态规划问题. 对于贪心无法解决的问题, 要第一时间想到动态规划问题的解法. 但是对于动态规划问题, 你要想的是使用dp[] 还是 dp[][] 其中每个dp元素表示的意义 这题的dp[i] 表 ...
- 生成 cone(锥体)
简介 生成 圆锥 代码 // CreateCone.cpp: 定义控制台应用程序的入口点. // #include <iostream> #include <OpenMesh/Cor ...
- 产品更新丨谷云 AI Agent 智能体版本更新
这次谷云科技AI Agent 智能体迎来了更新,此次更新聚焦于功能新增与优化,旨在提升智能体性能,深化平台交互体验,助力您在数据驱动的决策旅程中更加得心应手. 功能新增,开启智能新篇 1.MCP 服务 ...
- API开发平台,专注API高效开发平台
为什么要选择RestCloud API开发平台? API开发平台是RestCloud团队研发的基于微服务架构的专注API高效开发的专业化平台,与传统的API开发模式相比,具有更轻量级,开发速度更快,功 ...