How Many Answers Are Wrong hdu3038

2024-08-24 12:48
文章标签 many wrong answers hdu3038

本文主要是介绍How Many Answers Are Wrong hdu3038,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rank[x] 表示从x结点到根节点的值。

首先我们可以把问题稍微转化一下,就是如果已知[3,6],[7,10]俩个区间内各自所有数的和,那么就可以[3,10]内所有数的和,可是,这俩个区间根本就不衔接,所有要稍微处理一下,将左区间值减1,就变成了[2,6],[6,10],这样就方便处理了。

具体注释见代码。

/************************************************ Author: fisty* Created Time: 2015/2/27 12:57:32* File Name   : D.cpp*********************************************** */
#include <iostream>
#include <cstring>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <algorithm>
using namespace std;
#define Debug(x) cout << #x << " " << x <<endl
#define Memset(x, a) memset(x, a, sizeof(x))
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef pair<int, int> P;
#define FOR(i, a, b) for(int i = a;i < b; i++)
#define MAX_N 200050
int n, m;
int par[MAX_N], rank[MAX_N];
void init(){for(int i = 0;i < MAX_N; i++){par[i] = i;rank[i] = 0;}
}
int find(int x){if(x == par[x]) return x;int tmp = par[x]; par[x] = find(par[x]);//当递归到某一层时,x还未接到根节点上,//所以rank[x]表示的是x到par[x]的距离,但par[x]已经接到根节点上了,所以rank[par[x]]表示的是父节点到根节点的距离//所以x到根节点的距离就直接等于rank[x]+r[par[x]]rank[x] += rank[tmp];return par[x];
}
bool unio(int x, int y, int c){int fx = find(x);int fy = find(y);if(fx == fy){if(rank[x] + c != rank[y]) return false;return true;}par[fy] = fx;//rank[x] 为 x 到 fx的距离//rank[y] 为 y 到 fy的距离//c 为 y 到 x的距离//所以fy到fx的距离为 c + rank[x] - rank[y]rank[fy] = rank[x] + c - rank[y] ;        return true;
}
int main() {//freopen("in.cpp", "r", stdin);cin.tie(0);ios::sync_with_stdio(false);while(cin >> n >> m){int cnt = 0;init();FOR(i, 0, m){int u, v, c;cin >> u >> v >> c;if(!unio(u-1, v, c))++cnt;}cout << cnt << endl;}return 0;
}


这篇关于How Many Answers Are Wrong hdu3038的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102526

相关文章

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

ural 1026. Questions and Answers 查询

1026. Questions and Answers Time limit: 2.0 second Memory limit: 64 MB Background The database of the Pentagon contains a top-secret information. We don’t know what the information is — you

【HDU】How Many Answers Are Wrong(带权并查集)

num[i]代表i到根节点的值 这道题一开始竟然以为是线段树= =!后来发现线段树无法进行子区间的维护 #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 222222;int fa[maxn],num[maxn];int find_father(int

kubernetes Pod failed to create fsnotify watcher: too many open files

fs.nr_open: 控制单个进程可以打开的文件描述符的最大数量。单个进程的文件描述符限制可以通过 ulimit 命令来设置。 /proc/sys/fs/nr_open 是一个系统级别的全局参数,表示系统中单个进程能够打开的文件描述符总数的限制。/proc/sys/fs/file-max 系统级别,当前系统可打开的最大数量/etc/security/limits.conf 用户级别,指定用户

for 出错 ValueError: too many values to unpack (expected 2) 遍历多个变量

贼简单的代码示例 for [i,j] in [range(3),range(3)]:print(i,j) 输出: ValueError: too many values to unpack (expected 2) 正确示例 for i,j in zip(range(3),range(3)):print(i,j) 输出: 0 0 1 1 2 2 原因:后面zip()包装了两个lis

Host '10.10.120.174' is blocked beacuse of many connection errors;

Host '10.10.120.174' is blocked beacuse of many connection errors;unblock with 'mysqldamin flush-hosts' #使用清楚缓存的方法,这样就会把计数清理掉,进入mysql控制台,执行:flush hosts; /usr/bin/mysqladmin  -u jiaobo -puukkgg  flus

SOMEIP_ETS_076: Wrong_Method_ID

测试目的: 验证当设备(DUT)接收到一个包含错误方法ID的SOME/IP请求时,是否能够返回错误消息或忽略该请求。 描述 本测试用例旨在检查DUT在处理一个echoUINT8方法的SOME/IP消息时,如果消息中包含的方法ID不正确,DUT是否能够返回错误消息(UNKNOWN_METHOD)或者忽略该请求。 测试拓扑: 具体步骤: TESTER:使用echoUINT8方法发送带有

nginx 出错:socket() failed (24: Too many open files) while connecting to upstream

1. 错误描述 通过nginx负载两个节点的rabbitmq 当用java代码创建超过500个连接时(我的机器默认只能创建这么多),出现错误: com.rabbitmq.client.ShutdownSignalException: connection errorjava.net.SocketException: Software caused connection abort: recv

【并查集】 HDU 1213 How Many Tables

HDU 1213 How Many Tables 纯粹的并查集 #include <iostream>#include <string>#include <algorithm>#include <math.h>#include <stdio.h>#include <stdlib.h>using namespace std;int father[1111];int get_fa(

es集群重新分片报错Too many open files解决

现象 查看es集群状态 后面所有操作均在开发工具中操作, 命令行是 curl -XGET -uelastic:password http://ip:9200/_cluster/health GET _cluster/health 查看解释 GET /_cluster/allocation/explain 查看es日志 [WARN ][o.e.c.r.a.AllocationS