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 买礼物 题解的更多相关文章

  1. 洛谷 P1194 买礼物

    洛谷 P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第II样东西,再买第J样,那么 ...

  2. 洛谷——P1194 买礼物

    P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只 ...

  3. 洛谷P5364 [SNOI2017]礼物 题解

    传送门 /* 热情好客的小猴子请森林中的朋友们吃饭,他的朋友被编号为 1∼N,每个到来的朋友都会带给他一些礼物:大香蕉.其中,第一个朋友会带给他 11 个大香蕉,之后,每一个朋友到来以后,都会带给他之 ...

  4. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  5. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  6. P1194 买礼物(建模)

    P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只 ...

  7. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  8. 洛谷P1577 切绳子题解

    洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...

  9. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

随机推荐

  1. mysql_重置密码

    # 修改编码 ```pythonshow variables like '%char%'; #查看当前使用的编码 1.打开配置文件: vim /etc/mysql/my.cnf 2.在[client] ...

  2. Java JDK1.8源码学习之路 2 String

    写在最前 String 作为我们最常使用的一个Java类,注意,它是一个引用类型,不是基本类型,并且是一个不可变对象,一旦定义 不再改变 经常会定义一段代码: String temp = " ...

  3. EasyARM-iMX283 安装NFS

    1. 安装NFS软件包在 ubuntu 上请输入下面命令:[chenxibing@localhost ~]$ sudo apt-get install nfs-kernel-server[chenxi ...

  4. vue 自定义image组件

    介绍 1:当图片加载失败时,给出错误提示. 2:当图片加载中时,给出加载提示. 3:图片处理模式:等比缩放/裁剪/填充/... 1.图片加载状态处理 通过给图片绑定load事件与error事件处理函数 ...

  5. js合并多个array

    Array.prototype.concat.call(array1, array2, array3, ...)

  6. Java 解决Emoji表情过滤问题(转载)

    本文作者 我是周洲 原文链接 https://blog.csdn.net/u012904383/article/details/79376707 本人使用的是第三种引入jar的方法 问题: Emoji ...

  7. JavaScript:将key和value不带双引号的JSON字符串转换成JSON对象的方法

    遇到相关的问题,花了两天的时间来解决,深感来之不易,所以做如下的总结,希望遇到此问题的码农能更快的找到解决办法! var jsonArr= [{col:TO_CHAR(HZRQ,'YYYYMM'),t ...

  8. WIN7U X64环境下的SQL SERVER 2008R2的防火墙配置

    测试需要,备忘. CMD下运行,可以把sql server 要用的端口都开好. netsh advfirewall firewall add rule name = SQLPort dir = in ...

  9. 利用.bat脚本使得可运行jar开机自动运行

    1.利用Elipse到处可运行的jar包 2.写.bat脚本[点此下载],相应目录自己根据需要修改即可 3.将此脚本放在"启动"文件夹中

  10. tp5 修改配置参数 view_replace_str 无效

    原因: 缓存问题 找到  thinkphp\library\think\Template.php 找到  public function fetch($template, $vars = [], $c ...