洛谷 P1194 买礼物 题解
P1194 买礼物
题目描述
又到了一年一度的明明生日了,明明想要买\(B\)样东西,巧的是,这\(B\)样东西价格都是\(A\)元。
但是,商店老板说最近有促销活动,也就是:
如果你买了第II样东西,再买第JJ样,那么就可以只花\(K_{I,J}\)元,更巧的是,\(K_{I,J}\)竟然等于\(K_{J,I}\)。
现在明明想知道,他最少要花多少钱。
输入格式
第一行两个整数,\(A,B\)。
接下来\(B\)行,每行\(B\)个数,第\(I\)行第\(J\)个为\(K_{I,J}\)。
我们保证\(K_{I,J}=K_{J,I}\)并且\(K_{I,I}=0\)。
特别的,如果K_{I,J}=0KI,J=0,那么表示这两样东西之间不会导致优惠。
输出格式
一个整数,为最小要花的钱数。
输入输出样例
输入 #1
1 1
0
输出 #1
1
输入 #2
3 3
0 2 4
2 0 2
4 2 0
输出 #2
7
说明/提示
样例解释\(2\)
先买第\(2\)样东西,花费\(3\)元,接下来因为优惠,买\(1,3\)样都只要\(2\)元,共\(7\)元。
(同时满足多个“优惠”的时候,聪明的明明当然不会选择用\(4\)元买剩下那件,而选择用\(2\)元。)
数据规模
对于\(30\%\)的数据,\(1 \le B \le 10\)。
对于\(100\%\)的数据,\(1 \le B \le 500,0 \le A,K_{I,J} \le 1000\)。
2018.7.25新添数据一组
【思路】
最小生成树(克鲁斯卡尔) + 并查集
很有意思
在买了一个东西之后买另一个东西会有不同的价格
这就可以看成建立一颗最小生成树
然后跑就可以了
不过这道题显然没有那么简单的
不然就真成为了一道克鲁斯卡尔板子题了
还需要考虑一个东西
不需要很大的思维了只是要细心
第一个买的东西是不是需要钱?
这是必然需要的
所以ans可以一开始就赋值为aa的价格
注意:
输入0就表示输入的原价购买没有优惠!
【完整代码】
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int Max = 505;
struct node
{
int x,y;
int w;
}a[Max * Max];
int father[Max << 1];
bool cmp(const node x,const node y)
{
return x.w < y.w;
}
int find(int x)
{
if(father[x] != x)father[x] = find(father[x]);
return father[x];
}
void hebing(int x,int y)
{
x = find(x);
y = find(y);
father[x] = y;
}
int main()
{
int aa,b;
cin >> aa >> b;
int js = 0;
int jj = 0;
for(register int i = 1;i <= b;++ i)
father[i] = i;
for(register int i = 1;i <= b;++ i)
for(register int j = 1;j <= b;++ j)
{
cin >> a[++ jj].w,a[jj].x = i,a[jj].y = j;
if(a[jj].w == 0)a[jj].w = aa;
}
sort(a + 1,a + 1 + jj,cmp);
int ans = aa;
for(register int i = 1;i <= jj;++ i)
{
if(find(a[i].x) != find(a[i].y))
hebing(a[i].x,a[i].y),js ++,ans += a[i].w;
}
cout << ans << endl;
return 0;
}
洛谷 P1194 买礼物 题解的更多相关文章
- 洛谷 P1194 买礼物
洛谷 P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第II样东西,再买第J样,那么 ...
- 洛谷——P1194 买礼物
P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只 ...
- 洛谷P5364 [SNOI2017]礼物 题解
传送门 /* 热情好客的小猴子请森林中的朋友们吃饭,他的朋友被编号为 1∼N,每个到来的朋友都会带给他一些礼物:大香蕉.其中,第一个朋友会带给他 11 个大香蕉,之后,每一个朋友到来以后,都会带给他之 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
- P1194 买礼物(建模)
P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷P1577 切绳子题解
洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
随机推荐
- DataGrip License server
之前用 Resharper 使用 http://xidea.online 来激活 今天下载一个DataGrip 发现不能使用这个地址,不知道是被封杀了还是不能跟 Resharper 的共用 在网上找到 ...
- HTML知识整理
以下是自己对以前所学的部分HTML相关知识进行的简单的梳理,水平有限,若有问题的地方,还请见谅. 1. 常用的浏览器及浏览器内核分别是什么? IE:Trident 内核 Firefox:gecko 内 ...
- apache的虚拟域名rewrite配置以及.htaccess的使用。
在web服务器领域,Apache基本上是一统天下的,虽然现在越来越多的人转向nginx的,但是仍然由于apache的高性能以及强大的功能,还是大多数服务器在使用Apache. apache的安装就先不 ...
- centos没有service命令的恢复方法(-bash: service: command not found)
转载自:https://blog.csdn.net/u014175572/article/details/53375049?utm_source=itdadao&utm_medium=refe ...
- Github的fork进行同步
最近项目要求每个开发人员都有自己fork,需要在自己的fork下进行开发.这样就涉及的到fork和原仓库的同步问题. 在网上查找到fork和原仓库同步的方法,如下转载自网上查找的内容,使用终端命令行进 ...
- docker发展历程
docker发展历程 docker本身不是容器,它只是一个更加易用的前端管理器. 最早期的容器技术概念是用chroot来实现隔离,但是chroot只是提供了对进程文件目录虚拟化的功能,不能防止进程恶意 ...
- SVN提交错误及使用技巧
错误1: Some of selected resources were not added to version control. Some of selected resources were n ...
- js节点的创建添加删除
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机
摘要:本文主要向大家介绍了Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机,通过具体的内容向大家展现,希望对大家学习Windows运维有所帮助. 本 ...
- mysql 用户创建,授权
关于mysql的用户管理,笔记 1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost id ...