链接:https://www.nowcoder.com/acm/contest/133/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

现在有一棵被Samsara-Karma染了k种颜色的树,每种颜色有着不同的价值

Applese觉得Samsara-Karma染的太难看了,于是打算把整棵树重新染成同一种颜色

但是,由于一些奥妙重重的原因,每一次染色Applese可以选择两个有边相连的点,将其中一个染成另一个的颜色。而进行一次这样的操作需要付出两种颜色价值和的代价

现在,Applese的钱要用来买书(game),所以他想要最小化代价

输入描述:

输入包括若干行
第一行包括一个数n,表示这棵树有n个节点
第二行包括n个数,第i个数表示第i个节点的颜色coli
**注意:一个颜色的标号即价值

接下来的n - 1行,每行包括两个数u, v,表示u节点与v节点之间有一条无向边

n ≤ 100000, 1 ≤ coli ≤ 1e9,数据保证是一棵树

输出描述:

输出包括一行
第一行包括一个数,表示最小代价

示例1

输入

4
2 3 4 3
1 2
2 3
3 4

输出

12

最开始暴力过去的,数据比较弱。强行枚举所有颜色的花费。时间复杂度O(n^2)

#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int a[MAXN];
map<int, int >ma;
set<int>se;
int x[MAXN],y[MAXN];
int main()
{int n;scanf("%d",&n);for (int i = 1; i <=n ; ++i) {scanf("%d",&a[i]);se.insert(a[i]);}for (int i = 1; i <n ; ++i) {scanf("%d%d",&x[i],&y[i]);}long long ans=1e14,sum=0;set<int>::iterator it;for (it=se.begin(); it !=se.end() ; ++it) {sum=0;for (int j = 1; j <=n ; ++j) {if((*it)!=a[j]) sum+=((*it)+a[j]);}ans=min(sum,ans);}printf("%lld\n",ans);return 0;
}

思维:时间复杂度O(n)

#include<bits/stdc++.h>
using namespace std;
#define LL long longconst int MAXN = 1e5+10;
const int INF = 0x3f3f3f3f;
int n,u,v;
int a[MAXN];
map<int,LL>mp,cost;
int main(){while(scanf("%d",&n)!=EOF){LL sum = 0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);mp[a[i]] += a[i];sum += a[i];}for(int i=1;i<n;i++){scanf("%d%d",&u,&v);}LL ans = 1LL<<60;map<int,LL>::iterator it;for(it=mp.begin();it!=mp.end();it++){ans = min(ans,sum - it->second + (n - it->second / it->first) * it->first);}cout<<ans<<endl;}return 0;
}

Wannafly挑战赛20 A 染色(暴力/思维)相关推荐

  1. Wannfly挑战赛20 A 染色

    链接:https://www.nowcoder.com/acm/contest/133/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  2. 牛客网 Wannafly挑战赛20 A-染色

    链接:https://www.nowcoder.com/acm/contest/133/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  3. Wannafly挑战赛2 B.Travel【思维+SPFA】

    题目描述 精灵王国有N座美丽的城市,它们以一个环形排列在Bzeroth的大陆上.其中第i座城市到第i+1座城市花费的时间为d[i].特别地,第N座城市到第1座城市花费的时间为d[N].这些道路都是双向 ...

  4. Wannafly挑战赛24

    Wannafly挑战赛24 题目连接 https://www.nowcoder.com/acm/contest/186#question A.石子游戏 题解 注意到当石子个数为偶数的时候,每回合都会减 ...

  5. Wannafly挑战赛18

    Wannafly挑战赛18 A. 序列 先考虑暴力,相邻两个树之间乘上给定的三种数,递推出下一个位置填什么,然后再check一下,最后一位是否为1即可.这样时间显然不行,但是给我们一种思路,就是中间的 ...

  6. Wannafly挑战赛26-B 冥土追魂

    地址:https://www.nowcoder.com/acm/contest/212/B 思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如 2 2 2 7 8 1 9 ...

  7. Wannafly挑战赛22游记

    Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...

  8. [Wannafly挑战赛2D-Delete]最短路

    [Wannafly挑战赛2D-Delete]最短路 题目描述 给定一张 n 个点,m 条边的带权有向无环图,同时给定起点 S 和终点 T ,一共有 q 个询问,每次询问删掉某个点和所有与它相连的边之后 ...

  9. Wannafly挑战赛19

    Wannafly挑战赛19 A. 队列Q 需要支持把一个元素移到队首,把一个元素移到队尾,移到队首就直接放到队首前面那个位置,原位置标为0,队尾同理. #include <bits/stdc++ ...

最新文章

  1. vim中设置python代码缩进为4个空格
  2. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
  3. 1 access中iif函数中的_JavaScript中的高阶函数
  4. The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
  5. Spring异步调用原理及SpringAop拦截器链原理
  6. 基于Ext Core的包含校验功能的表单提交扩展Ext.ux.submit
  7. Linux文件浏览命令
  8. IE如何兼容placeholder属性
  9. java中max的意义_[Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析
  10. Linux学习笔记B站狂神说(自己总结方便复习)
  11. 杨辉三角形Python实现
  12. 微信公众号网页登录开发测试步骤详解
  13. elasticsearch使用中文分词器和拼音分词器,自定义分词器
  14. 计算机图形学设计线宽代码,计算机图形学画圆并改变线宽.pdf
  15. 中文维基百科数据处理
  16. java -- Big Endian and Little Endian 大端和小端概念讲解及如何转换
  17. Hex Fiend——mac 下 WinHex的完美替代
  18. 案例:Java多态实现饮料购买咖啡、可乐、矿泉水2.0
  19. 青软再助力!廊坊企业数字化转型专题培训会圆满完成
  20. java基于springboot+vue的企业公司员工人事管理系统 nodejs 前后端分离

热门文章

  1. Solidworks异型孔打孔失败原因分析
  2. AtCoder Grand Contest 012 E - Camel and Oases 状压dp
  3. indexedDB简易封装
  4. 电信号、模拟型号、图像声音储存原理及傅里叶转换的粗浅理解
  5. 我的2013年总结--北京 深圳
  6. 计算机设置了密码后不能打印了,win7系统共享打印机设置密码后无法连接如何解决...
  7. L2-4 彩虹瓶 (25 分)-2019天梯赛全国总决赛
  8. XSL 和 XSLT的区别
  9. 复合效应 达伦哈迪_哈迪·哈里里(Hadi Hariri):“我们需要研究新事物”
  10. Final Cut Pro 导出视频教程「上」