fold的毒瘤题(easy)

题目链接:http://120.78.128.11/Problem.jsp?pid=3250

给出一幅有n(≤50)个点, m(≤500)条边的无向图. 保证任意2点间都至少存在一条路径可以连通, 每条边上都有一个权值Vi(≤500)。不幸的是, 这m条边都被损坏了。fold打算修复其中一些边让一些点连通, 不过, fold并不打算让全部的点连通, 而是选择一些编号特殊的点让它们连通.
fold有q(≤50)次询问, 对于每次询问, 他会选择所有编号在[l,r]之间, 并且编号%p=c的点(保证至少存在2个这样的点), 让这些特殊点连通(任意两个特殊点之间至少存在一条路径).
这里有很多种修复方案, 每种修复方案中都有权值最大的边, fold希望找到这么多方案中: 边权最大值最小的一个方案
你能帮助fold计算出每次询问的最小值是多少吗?
这里询问是独立的, 也就是上一个询问里的修复计划并没有付诸行动.
点的编号从1开始

Solution

暴力并查集

Code

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define fi first
#define se second
#define mst(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f;
const double eps = 1e-9;
const int Mod = 1e9 + 7;
const int MaxN = 1e5 + 5;

vector<int> G;
int n, m, q;
int fa[505];

struct Edge {
	int u, v, c;
}edge[505];

bool cmp(Edge a, Edge b) { return a.c < b.c; }

void init() {
	for(int i = 1; i <= n; i++) fa[i] = i;
	G.clear();
}

int find(int u) {
	if(fa[u] == u) return u;
	return fa[u] = find(fa[u]);
}

int main() 
{
	scanf("%d %d %d", &n, &m, &q);
	for(int i = 1; i <= m; i++) scanf("%d %d %d", &edge[i].u, &edge[i].v, &edge[i].c);
	sort(edge + 1, edge + 1 + m, cmp);
	while(q--) {
		init();
		int L, R, P, C;
		scanf("%d %d %d %d", &L, &R, &P, &C);
		int ans = 0;
		for(int i = L; i <= R; i++)
			if(i % P == C) G.push_back(i);
		bool flag = true;
		for(int i = 1; i <= m && flag; i++) {
			int u = edge[i].u, v = edge[i].v, c = edge[i].c;
			if(find(u) == find(v)) continue;
			fa[find(u)] = find(v);
			flag = false;
			for(int j = 0; j < G.size()-1; j++)
				if(find(G[j]) != find(G[j+1])) flag = true;
			ans = max(ans, c);
		}
		printf("%d\n", ans);
	}
    return 0;
}
fold change是差异表达基因分析中常用的指标之一,用于衡量基因在不同条件下的表达水平差异。fold change表示基因在两个条件之间的表达水平的相对倍数差异。它通过计算两个条件下的平均表达水平之比得出。 例如,如果一个基因在条件A中的表达水平为10,而在条件B中的表达水平为20,则该基因的fold change为20/10=2。这表示在条件B下,该基因的表达水平是在条件A下的2倍。如果fold change大于1,则表示基因在条件B中的表达水平高于条件A;如果fold change小于1,则表示基因在条件B中的表达水平低于条件A。 在差异表达基因分析中,fold change通常与p-value一起使用,以确定哪些基因在不同条件下的表达差异是否显著。p-value用于衡量差异的显著性,而fold change则用于衡量差异的大小。 总结起来,fold change是用于衡量基因在不同条件下表达水平差异的指标,它表示基因在两个条件之间的表达水平的相对倍数差异。它与p-value一起被用来确定差异是否显著。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [如何计算基因表达中的Fold Change值?](https://blog.csdn.net/u013313168/article/details/99309076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vennt:差异基因表达的动态维恩图](https://download.csdn.net/download/weixin_42109178/20258904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值