【题解】A18537.我心中珍藏的游戏
思路:
题目问最多可以获得的额外伤害,其实就是询问在这些技能中,如何怎样选取一个最优的发动技能顺序使得攻击加成最大。我们可以把每一个技能看作成一个图的顶点,把每一个攻击加成看作图的边,权制为\(Ei,j\)。由于\(Ei,j\)与\(Ej,i\)相等,则可以将这个图视为无向图。 可以样样例抽象成下图:
3
0 3 5
3 0 10
5 10 0

考虑使用贪心的思想来解决本题,每次在图中找到权值最大的一条边选择即可,但图中不能出现环。因为是无向图,在考虑的时候可以忽略技能使用的顺序。接下来就是找一个最大生成树即可。
时间复杂度分析:本道题可以使用最小生成树Kruskal算法来实现,将题目的模型抽象化后可以被看作为一个最多有\(\frac{(1+n)*n}{2} - n\)条边的无向图(化简后可得\(\frac{n^2 - n}{2}\))。注意一开始需要对每一条边进行排序。本道题的时间复杂度约为\(O(2\times n^2 \log_2{n})\)。
参考代码:
#include <iostream>
#include <algorithm>
using namespace std;
int n, cnt, ans;
int f[805];
struct edge{
int x, y, z;
} edges[700005];
bool cmp(edge a, edge b){
return a.z > b.z;
}
int getf(int x){
if (f[x] == x) return x;
return f[x] = getf(f[x]);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for (int i=1; i<=n; i++){
f[i] = i;
for (int j=1; j<=n; j++){
int t; cin >> t;
if (i == j || t == 0) continue;
edges[++cnt] = (edge){i, j, t};
}
}
sort(edges+1, edges+1+cnt, cmp);
for (int i=1; i<=cnt; i++){
int u = edges[i].x;
int v = edges[i].y;
int U = getf(u), V = getf(v);
if (U != V){
f[U] = V;
ans += edges[i].z;
}
}
cout << ans << endl;
return 0;
}
【题解】A18537.我心中珍藏的游戏的更多相关文章
- 【题解】P5589 小猪佩奇玩游戏(期望)
[题解]P5589 小猪佩奇玩游戏(期望) 假设一个点有\(x\)个点(包括自己)可以到达他,他就对答案有\(1/x\)的贡献.这是因为这个点必须被删掉而通过删掉这个点本身删掉这个点的概率是\(1/x ...
- 【题解】洛谷 P1080 国王游戏
目录 题目 思路 \(Code\) 题目 P1080 国王游戏 思路 贪心+高精度.按\(a \times b\)从小到大排序就可以了. \(Code\) #include<bits/stdc+ ...
- 【题解】 [GZOI2017]小z玩游戏
题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到 ...
- 【题解】Luogu P4436 [HNOI/AHOI2018]游戏
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...
- 【题解】 bzoj3105: [cqoi2013]新Nim游戏 (线性基+贪心)
bzoj3105,懒得复制 Solution: 首先你要有一个前置技能:如果每堆石子异或和为\(0\),则先手比输 这题我们怎么做呢,因为我们没人要先取掉几堆,为了赢对方一定会使剩下的异或和为\(0\ ...
- 【题解】洛谷P1070 道路游戏(线性DP)
次元传送门:洛谷P1070 思路 一开始以为要用什么玄学优化 没想到O3就可以过了 我们只需要设f[i]为到时间i时的最多金币 需要倒着推回去 即当前值可以从某个点来 那么状态转移方程为: f[i]= ...
- 题解【luogu2045 方格取数游戏加强版】
Description 给出一个 \(n*n\) 的矩阵,每一格有一个非负整数 \(A_{i,j}\) ,(\(A_{i,j} <= 1000\))现在从 \((1,1)\) 出发,可以往右或者 ...
- 题解 洛谷 P3825 【[NOI2017]游戏】
从题面中四元组\((i,h_i,j,h_j)\)限制选择车子型号,不难想到这题要用\(2-SAT\)解决. 考虑转化为\(2-SAT\)模型,发现除地图\(x\)外,其他地图都只有两种车子型号可以参加 ...
- JXOI 2018 简要题解
目录 「JXOI2018」游戏 题意 题解 代码 「JXOI2018」守卫 题意 题解 代码 「JXOI2018」排序问题 题意 题解 代码 总结 「JXOI2018」游戏 题意 可怜公司有 \(n\ ...
- noip做题记录+挑战一句话题解?
因为灵巧实在太弱辽不得不做点noip续下命QQAQQQ 2018 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...
随机推荐
- Response下载文件
Response下载文件的主要步骤有七个: 1.要获取下载文件的路径 String realPath = "F:\\JavaWeb\\WorkSpace\\JavaWeb-Servlet\\ ...
- HDD成都站·暨HMS Core 6.0产品交流会报名开启
HUAWEI Developer Day(以下简称HDD)如期而至,将在9月10日和盟友们相聚成都,开启一场属于开发者的交流盛会.本次沙龙活动由上.下半场组成,诚挚地邀请各位开发者参加. 精彩预告 0 ...
- CentOS GNOME桌面下安装截图工具gnome-screenshot
CentOS GNOME桌面下安装截图工具gnome-screenshot 1.光盘安装 (1).把镜像光盘放进电脑 (2).切换到 Packages (3).[root@localhost Pack ...
- c# apollo订阅与发布(一)(迁)
前言 apollo 翻译过来是阿波罗的意思,准确的说是:apache apollo,看了apache基本可以放心,因为它不像微软. 安装 下面我以windows 为例. https://activem ...
- linux 忘记密码怎么破?
前言 适合硬件在自己旁边的,不适合云服务器,云服务器很方便的,可以直接重置密码,因为云服务器都是虚拟机. 正文 1.步骤 进入到可以看到节目的视图,按下esc键进入下面的视图! 2.接着进入下面的界面 ...
- 力扣603(MySQL)-连续空余座位(简单)
题目: 几个朋友来到电影院的售票处,准备预约连续空余座位. 你能利用表 cinema ,帮他们写一个查询语句,获取所有空余座位,并将它们按照 seat_id 排序后返回吗? 对于如上样例,你的查询语句 ...
- Go原生插件使用问题全解析
简介: 本人在设计和落地基于Go原生插件机制的扩展开发产品时踩到了很多坑,由于这方面相关资料很少,因而借此机会做一个非常粗浅的总结,希望能对大家有所帮助.本文只说问题和解决方案,不读代码. 作者 | ...
- [Caddy2] Caddyfile 指令
以下是 Caddyfile 的标准指令. acme_server An embedded ACME server basicauth Enforces HTTP Basic Authenticatio ...
- WPF 使用 Dispatcher 的 InvokeAsync 和 BeginInvoke 的异常处理差别
一般认为 WPF 的 Dispatcher 的 InvokeAsync 方法是 BeginInvoke 方法的平替方法和升级版,接近在任何情况下都应该在业务层使用 InvokeAsync 方法代替 B ...
- 2019-2-21-PowerShell-通过-WMI-获取补丁
title author date CreateTime categories PowerShell 通过 WMI 获取补丁 lindexi 2019-02-21 20:39:51 +0800 201 ...