SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* G题 危险路径

10、犹豫双模糊TOPSIS算法:原理与实例解析 本文介绍了犹豫双模糊TOPSIS算法的基本原理与应用步骤,结合中国四家纺织公司的案例,详细解析了从构建犹豫双模糊决策矩阵、归一化处理、专家信息聚合,到确定正负理想解、计算距离与相对贴近度系数的完整决策流程。该方法有效应对决策者在评价过程中的犹豫性,适用于财务评估、项目选择等复杂多属性决策场景,具有较强的实用性和推广价值。 阅读详情

题目链接.

弱鸡选手表示只会做这种水题了。

首先mst。

之后问题转化为在一棵树上,求每个点到其它点的路径的最大值的和。

当然可以点剖什么的,也可以换根+线段树合并什么的,常数有点小炸。

我的想法是用启发式并查集。

mst要合并两个并查集时,设它们的根为x,y

siz[x] > siz[y], 将把y的父亲设为x。

显然未合并前的x的整个子树答案+z(当前边权)*siz[y],而y的子树答案+z*siz[x]。

处理一下x的标记,y的标记减去x的标记再加上自己应有的那一部分。

这样的话,最后就按照并查集的顺序从上到下遍历一遍传个标记就好了。

时间复杂度 O((n+m) log n)

Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define ul unsigned long long
#define fo(i, x, y) for(ll i = x; i <= y; i ++)
using namespace std;

const ll N = 1e6 + 5;

ll T, n, m, x, y;
ll f[N];
ll sum[N], ans, siz[N];

ll find(ll x) {return f[x] == x ? x : find(f[x]);}

struct edge {
    ll x, y, z;
} e[N];

bool cmp(edge a, edge b) {
    return a.z < b.z;
}

ll final[N], to[N], nxt[N], tot;

void link(ll x, ll y) {
    nxt[++ tot] = final[x], to[tot] = y, final[x] = tot;
}

ll d[N];

int main() {
    ll num = 1;
    for(scanf("%lld", &T); T; T --, num ++) {
        scanf("%lld %lld", &n, &m);
        fo(i, 1, n) f[i] = i, siz[i] = 1, sum[i] = 0, final[i] = 0;
        fo(i, 1, tot) nxt[i] = to[i] = 0; tot = 0;
        fo(i, 1, m) scanf("%lld %lld %lld", &e[i].x, &e[i].y, &e[i].z);
        sort(e + 1, e + m + 1, cmp);
        fo(i, 1, m) {
            ll x = e[i].x, y = e[i].y, z = e[i].z;
            if(find(x) != find(y)) {
                x = find(x), y = find(y);
                if(siz[x] < siz[y]) swap(x, y);
                sum[x] += z * siz[y];
                sum[y] -= sum[x] -  z * siz[x];
                f[y] = x; siz[x] += siz[y];
                link(x, y);
            }
        }
        ll g = find(1); ul ss = 0;
        d[d[0] = 1] = g;
        fo(i, 1, d[0]) {
            ll x = d[i]; ss ^= (ul) sum[x] * x;
            for(ll j = final[x]; j; j = nxt[j])
                sum[to[j]] += sum[x], d[++ d[0]] = to[j];
        }
        printf("Case #%lld: %llu\n", num, ss);
    }
}
Devexpress16.2.6破解工具 Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具 立即下载

相关推荐

IEEE Transaction期刊模板使用注意事项

本文将总结使用IEEE Transactions系列期刊的投稿模板时的一些注意事项,包括模板本身的使用规范、参考文献的正确格式等其他内容。

weixin_39529207的博客 2万+

2018 SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 总结

ACM赛制让我癫狂。第一场:做了的人都知道第一场的题全部都有问题。具体过程的话可以去知乎上看看。我来讲一下我的做题过程。首先点开了第一题。错把欧氏距离看成了曼哈顿距离,于是像个SB一样开打,过了10mins我发现我怎么样都过不了样例,才发现是欧氏距离。咦,这不是个模拟退火裸题吗?但是巧了,当时联赛推专题时,整个dp、贪心专题我就一道模拟退火的题没做。但是我记得模拟退火的进度很小,所以10^-6还没有

Cold_Chair的博客 946

ESXi 6.7升级17700523补丁全流程:从下载到验证的保姆级教程

本文提供ESXi 6.7升级17700523补丁的完整流程指南,涵盖从下载、上传到验证的详细步骤。通过SSH命令和vSphere Client操作,确保系统管理员能够安全高效地完成补丁升级,提升虚拟化环境的安全性和稳定性。

linux6sysadmin的博客 839

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛-白色相簿

题意: 给定无向图,n个点,m条边,判断图中是否存在三元环。(n 思路: 计数三元环的复杂度是mlogm,在这里1s跑不过。尝试通过bitset记录每个点的连边状态,再通过任意相连两点进行 & 操作判断,内存会爆掉。 可以通过一次bfs,给遍历的到的每个点确定一个父亲节点,画图可知,三元环中任意一点作为父节点,都可以给其余两个点标上相同的父节点。然后遍历所有边,判断两个端点是否有共同的父

yo_bc的博客 521

周志华《机器学习》课程系列笔记——目录导航页

最近自学机器学习课程,注意到了南京大学周志华老师的课程。我是在学堂在线平台观看的,注意到b站上也有相应视频,但b站上并未获得授权,随时有消失的可能。周志华老师的网络教学视频中,与其西瓜书相比确实少了一些内容。但幸运的是,缺失的内容实际上对于初学者来说并不会产生太大影响。目前这一笔记也遵循视频内容,相比西瓜书中也会有一些缺失,敬请谅解。可能以后如果有机会和时间,我会再阅读周志华老师的书籍将缺失内容补全。一切内容敬请关注我的个人Page页面。

Sinocifengs的博客 1687

CAPL实战:从零构建HEX文件解析器,赋能UDS刷写

本文详细介绍了如何使用CAPL从零构建HEX文件解析器,以支持UDS刷写操作。通过解析HEX文件格式、设计状态机、优化数据结构与算法,实现高效准确的固件数据处理,并提供了与UDS刷写流程对接的工程化实践建议。

weixin_28726391的博客 443

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*A:双人取数(DP)

有一款双人游戏,游戏的地图是一张 n×m 的平面,其中玩家 A 从地图的左上角出发,通过向右和向下走的方式走到右下角,玩家 B 从右上角出发,通过向左和向下的方式走到左下角(每次只能走到上下左右相邻的至多四个格子)。每个格子有一个分数,玩家走到格子上就会获得这个分数,当一个玩家得到这个分数后,格子的分数就会自动变为 0。游戏最后的得分是两个人获得分数的总和。即使两个人同时进入一个格子,这个格子上的...

Mitsuha_的博客 484

FunASR语音识别服务在Win11上的Docker部署避坑指南:模型配置与热词优化

本文详细介绍了在Windows 11系统上通过Docker部署FunASR语音识别服务的完整流程,包括环境准备、模型配置、热词优化及常见问题解决方案。特别针对Win11环境下的特殊配置和性能调优提供了实用指南,帮助开发者高效搭建高性能语音识别服务。

e3f4g5的博客 222

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*(抽球游戏-fwt开立方)

Anthony 手中有 nnn 个依次标着整数 a1a1a_1, a2a2a_2, ⋯⋯\cdots, anana_n (0≤a1≤a2≤⋯≤an≤630≤a1≤a2≤⋯≤an≤630 \leq a_1 \leq a_2 \leq \cdots \leq a_n \leq 63) 的球,现在 Ben 会等概率随机抽出一个球,记录球上的数字并放回,重复该过程三次,最终三次记录下的数字的异或和就是 B...

nike0good |Oier&ACMer | 熟能生巧 413

TypeScript的安装与使用

TypeScript的安装与使用

qq_51589308的博客 600

前端实现微信扫一扫的思路

本篇文章的关键点就是讲解了我在实现处理多张二维码的场景时的思路,利用canvas遮挡识别过的二维码这个思路是pbk-bin大佬最先想到的,在实现这个需求以后还是很感叹这个思路的巧妙。👏pbk-bin🎁~如果文章对你有帮助,不妨赠人玫瑰,手有余香,预计将会在下篇更新较为完整的微信扫一扫界面和功能。

fang_my的博客 2488

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*

A.双人取数 预处理四个角,枚举重叠段,发现可以前缀max 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int INF = 1e9; 4 int G[1111][1111], lu[1111][1111], ru[1111][1111], ld[1111][1111], rd[11...

weixin_30455661的博客 128

【DRAM存储器六十四】DDR5介绍--preamble、postamble、interamble、刷新、power down、MPSM

简述DDR5 reamble、postamble、interamble、刷新、power down、MPSM的功能定义

highman110的博客 337

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 G.危险路径

https://nanti.jisuanke.com/t/26021 给定一个 nn 个点 mm 条边的连通无向图,其中点从 11 到 nn 标号,而每条边有一个危险值。 对于任意一条路径,定义路径上危险值的最大值为这条路径的危险值。 对于任意不同的两点 uu 和 vv,定义 d(u, v)d(u,v) 为所有从 uu 到 vv 的路径的危险值最小值。 对于每个点 uu,定义 f_u = ...

c6376315qqso的专栏 288

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Codechef 2017 March Challenge 简要题解

在比赛进行到一半的时候才参加,,导致challenge没法搞得很好       写一个简要题解吧,,challenge太差了就不放了 Xenny and Alternating Tasks:直接按照题意模拟即可。 Bear and Extra Number:首先处理重复;否则一定是极值。 Bandwidth of a matrix:二分答案,然后贪心多放1,判断是否能合

lych的博客 1615

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

商汤2017笔试编程题——绘制函数图像

商汤2017年笔试编程题,绘制某不等式在某区域内的图像。

csdnqixiaoxin的博客 1364

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌似不可以 方法:离散化 + 每个位置的所有的值排序(上升)[避免采用树状数组时误算] + 树状数组统计之前比x大的数目( F(max_index) - F(x) ) 话说: 1.1...

weixin_30341735的博客 148

2017商汤科技春招实习笔试题总结

本人申请的岗位是见习算法研究员,笔试1个小时,20道选择填空题,3道编程题。时间略紧。涉及面也非常广,数学,智力,概率统计,线代矩阵,图形学,机器学习,神经网络,C++,均有涉及。 一、选择填空题(部分): 1. S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?  (概率题,考查贝叶斯公式

smallplum123的博客 1万+

2018商汤笔试题

摘苹果 有N堆苹果,每堆苹果有x,y,w三个属性,每次能够进行的操作是:把一堆苹果移动到另一堆苹果中,移动苹果所需要花费的力气为$w \times (|x_1-x_2|+|y_1-y_2|$ ,问最少需要花费多少力气才能把这些苹果移动到一堆去? 暴力解法复杂度为$O(n^2)$,问题等价于寻找一个中心点。 这个问题关键在于距离的定义比较特殊。如果距离定义为欧式距离,这个问题就变得非常艰难...

295

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星 bitset

B. 我觉得海星 题意: 一个无向图,判断是否含有五元环。T 组数据,n 个点。 T<=100, n<=200 。 tags: 一开始想 dfs,发现搞不出来。赛后听大佬们bb,原来可以 bitset 水过去 。 bitset<1000> bit[i][j] 存 i -> { k1,k2... } -> j ,也就是点 i 经过一个点可以点 j 的集合。 然后枚...

weixin_30563319的博客 152

【NOI2018模拟4.2】program

Description:题解:做法真的很巧。假设在开头加了无数个‘>’。一直走,直到出了右边界。记录f,g分别表示第一次从i-1到i的时间,和第一次i到i-1的时间。这样对于一个区间[l..r]就可以求出进来的时间和出去的时间,相减就是答案。f很好求 ,g可能还需要一个链表或者用线段树去求。Code:#include<cstdio> #include<cstring> #define fo(i, x

Cold_Chair的博客 411

ICPCCamp 2016 Day1 ftiasch's Contest #4(Around the world-树,构造)

已知一个有n个点(4<=n<=500)连通无向图,边权均为1。点的编号为1,2,...,n1,2,...,n,现在你需要给出一条环(v1,v2,…,vn),满足: v1,v2,...,vnv_1,v_2,...,v_n 是不同的点 对2≤i≤n2 \le i \le n ,有dis(vi,vi+1)≤kdis( v_i , v_{i+1} ) \le k #include<cstdio> #inc

nike0good |Oier&ACMer | 熟能生巧 901

商汤科技 2019校园招聘笔试编程题-2018.09.07

本来阿里和商汤冲突了,就放弃了阿里的劝退型笔试,结果,商汤也劝退,只发一下题目做参考吧!知道题解的同学可以在评论区粘上链接,我会随时更新并加以感谢的。 ...

whl_program的博客 6019

JZOJ 3648【GDOI2014】beyond

给出两个长度为n的字符串a,b,求最大的L,使得a[1..L]和b[1..L]是循环同构的(展开后是一个同一个环)。 1 <= n <= 2000000

Cold_Chair的博客 691

【清华集训2017模拟】ces

Description: 1<=n<=1e5,1<=q<=m<=2e5题解:首先把用tajan把桥边全部找出来,桥边会把图分成若干个双联通分量。 把每个双联通分量并成一个点,桥边作为边,这会构成一棵树。显然,对于每个询问加k条边最多能去掉多少条桥边,就是用k条简单路径去覆盖这棵树,最多能覆盖多少条边。有一个很优的贪心,把k按1-q做,每次找到树的直径,答案加上直径的长度,把直径压成一个点,继续做

Cold_Chair的博客 687

【GDOI2018模拟9.23】动态图

Description: 1<=n<=10^6,1<=q<=200000题解:暴力可以用按秩合并并查集,这个数据结构支持删除。对于正解,我们需要把l->r条边一次加进并查集,对于每一条边,它有贡献,就是加入它的时候,它会合并两个不同的集合。 反过来,它没有贡献,就是它所连着的两端本来就在一个集合里。假设我们按1->r的顺序加入每一条边,当加入一条边时,设它是x,y,设z为x到y的路径上编号最小的

Cold_Chair的博客 680
上一篇: 【NOI2018模拟4.7】power(扩展欧拉定理)
下一篇: 【NOI2013模拟】梦醒
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值