Gym - 101630 部分题解 | 待咕

CodeForces Gym 101630简要题解 Archery Tournament经过每条竖线的圆至多logC\log C个,线段树套set\texttt{set}维护。#include <bits/stdc++.h> #define xx first #define yy second #define mp make_pair #define pb push_back #define mset(x, y) memset(x, y, sizeo 阅读详情

Gym - 101630 部分题解

前言

有几题没补…但感觉这些题目都是不错的…所以…会抽时间补一下的吧???

不过大概率是咕咕咕的…

正文
Gym-101630A. Archery Tournament
  • 题意
    • 给你一些圆(都与 x x x轴相切)还有一些询问(边询问边插入圆) 问这些点是否在一个圆上…如果是则把这个圆给删除…(保证同一时刻圆不会相交)
    • − 1 e 9 ≤ x , y ≤ 1 e 9 -1e9 \leq x,y \leq 1e9 −1e9≤x,y≤1e9, n ≤ 1 e 5 n \leq 1e5 n≤1e5
  • 题解
    • 线段树!(smg)
    • 线段树维护一段区间内的圆的标号…感觉有点像那个K-Dtree…???确定了一个范围…
      • 我们可以知道被一条 x = a x=a x=a的直线切到的圆最多在 l o g log log
    • 虽然是区间修改…但是却不需要什么lazy的标记…而且也不需要区间合并操作…
    • 线段树标记永久化-原理就是: 在路过该节点的时候把修改对答案的影响加上,来省去标记下放的过程
#include <bits/stdc++.h>
#define ls x << 1
#define rs x << 1 | 1
#define ll long long
using namespace std;
const int N = 4e5 + 10;
struct data {
	int tp, x, y;
} q[N];
struct node {
	set<int> id;
} tr[N << 2];
int all[N * 3], tot, ans;

int get(int x) {
	return lower_bound(all + 1, all + 1 + tot, x) - all;
}

void upd(int x, int l, int r, int L, int R, int w) {
	if(L <= l && r <= R) {
		tr[x].id.insert(w);
		return ;
	}
	int mid = (l + r) >> 1;
	if(L <= mid) upd(ls, l, mid, L, R, w);
	if(R > mid) upd(rs, mid + 1, r, L, R, w);
}

void ers(int x, int l, int r, int L, int R, int w) {
	if(L <= l && r <= R) {
		tr[x].id.erase(w);
		return ;
	}
	int mid = (l + r) >> 1;
	if(L <= mid) ers(ls, l, mid, L, R, w);
	if(R > mid) ers(rs, mid + 1, r, L, R, w);
}

ll pf(ll x) {
	return x * x;
}

bool check(int i, int j) {
	return pf(q[i].x - q[j].x) + pf(q[i].y - q[j].y) < pf(q[i].y);
}

void get(int x, int l, int r, int L, int w) {
	set<int> :: iterator sit;
	for(sit = tr[x].id.begin(); sit != tr[x].id.end(); ++sit) {
		int pos = *sit;
		if(check(pos, w)) {
			// printf("q%d %d\n", q[pos].x, q[pos].y);
			// printf("p%d %d\n", q[w].x, q[w].y);
			ans = pos;
		}
	}
	int mid = (l + r) >> 1;
	if(l == r || ans != -1) return ;
	if(L <= mid) get(ls, l, mid, L, w);
	else get(rs, mid + 1, r, L, w);
}

int main() {
	int n, cnt = 0;
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) {
		scanf("%d%d%d", &q[i].tp, &q[i].x, &q[i].y);
		if(q[i].tp == 1) {
			all[++cnt] = q[i].x - q[i].y, all[++cnt] = q[i].x + q[i].y; 
		} else {
			all[++cnt] = q[i].x;
		}
	}
	sort(all + 1, all + 1 + cnt);
	tot = unique(all + 1, all + 1 + cnt) - all - 1;
	for(int i = 1; i <= n; ++i) {
		if(q[i].tp == 1) {
			int l = get(q[i].x - q[i].y);
			int r = get(q[i].x + q[i].y);
			upd(1, 1, tot, l, r, i);
		} else {
			int x = get(q[i].x);
			ans = -1;
			get(1, 1, tot, x, i);
			printf("%d\n", ans);
			if(ans != -1) {
				int l = get(q[ans].x - q[ans].y);
				int r = get(q[ans].x + q[ans].y);
				ers(1, 1, tot, l, r, ans);
			}
		}
	}
	return 0;
}

Gym-101630I. Journey from Petersburg to Moscow
  • 题意

    • 求 1 − n 1-n 1−n的最短路…最短路定义为前 k k k大边权的和
    • n ≤ 3000 n \leq 3000 n≤3000
  • 题解

    神仙题!…看上去现场也没有什么人过的样子…其实这道题也挺可做的呀…qwq

    首先我们需要知道一点…这样定义的最短路一定会比我们原来的最短路要小

    • 如果我们找到了一条路径…它的边数 ≤ k \leq k ≤k 那么这个路径的价值就是所有权值和也就是最短路

    • 如果$k \leq 边 数 , 对 于 这 种 情 况 . 我 们 就 枚 举 这 个 第 k 大 的 边 权 边数,对于这种情况.我们就枚举这个第k大的边权 边数,对于这种情况.我们就枚举这个第k大的边权c . . 所 有 小 于 ..所有小于 ..所有小于c$的边权变为 0 0 0,大于 c c c的边权变为 w − c w-c w−c

      跑一遍最短路…用 d i s [ n ] + c ∗ k dis[n]+c*k dis[n]+c∗k更新答案

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 3010;
struct data {
	int nt, to, w;
} a[N << 1];
int cnt = 0;
int head[N];
ll dis[N], v[N];
typedef pair<ll, int> P;
priority_queue<P, vector<P>, greater<P> > q;

void add(int x, int y, int w) {
	a[++cnt].to = y;
	a[cnt].w = w;
	a[cnt].nt = head[x];
	head[x] = cnt;
}

int n, m, k;

void go(ll w) {
	for(int i = 1; i <= n; ++i) {
		dis[i] = 1e13;
	}
	dis[1] = 0;
	q.push(P(0, 1));
	while(!q.empty()) {
		P p = q.top(); q.pop();
		int v = p.second;
		if(dis[v] < p.first) continue;
		for(int i = head[v]; i; i = a[i].nt) {
			int to = a[i].to;
			ll now = max(a[i].w - w, 0ll);
			if(dis[to] > dis[v] + now) {
				dis[to] = dis[v] + now;
				q.push(P(dis[to], to));
			}
		}
	}
}

int main() {
	scanf("%d%d%d", &n, &m, &k);
	for(int i = 1; i <= m; ++i) {
		int x, y, w;
		scanf("%d%d%d", &x, &y, &w);
		add(x, y, w);
		add(y, x, w);
		v[i] = w;
	}
	ll ans = 1e18;
	v[++m] = 0;
	for(int i = 1; i <= m; ++i) {
		go(v[i]);
		// printf("%lld %lld\n", v[i], dis[n]);
		ans = min(ans, dis[n] + v[i] * k);
	}
	printf("%lld\n", ans);
	return 0;
}

Gym101630C. Connections
  • 题意
    • 给你一张 n n n个点 m m m条边的有向图,保证两两之间可以到达…请你删除 m − 2 ∗ n m-2*n m−2∗n条边…使之还可以两两之间到达
    • n , m ≤ 100000 n,m \leq 100000 n,m≤100000
  • 题解
    • 首先我们肯定是可以构造出来这样的图的!
      • 每加入一个环最坏的情况是只加入一个点…那么最多需要 2 ∗ n − 1 2*n-1 2∗n−1条边
    • 我们只需要保证所有的点都能从1走到且都能走到1
      • 所以正向反向搜一遍dfs树…所有没有被用作树边的边都是可以删除的
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct data {
	int nt, to;
} a[N][2];
int head[N][2], cnt[2], vis[N], vs[N];

void add(int x, int y, int id) {
	a[++cnt[id]][id].to = y;
	a[cnt[id]][id].nt = head[x][id];
	head[x][id] = cnt[id];
}

void dfs(int x, int id) {
	vs[x] = 1;
	for(int i = head[x][id]; i; i = a[i][id].nt) {
		int to = a[i][id].to;
		if(!vs[to]) {
			vis[i]++;
			dfs(to, id);
		}
	}
}

int main() {
	int T;
	scanf("%d", &T);
	for(int o = 1; o <= T; ++o) {
		int n, m;
		cnt[0] = cnt[1] = 0;
		scanf("%d%d", &n, &m);
		for(int i = 1; i <= n; ++i) 
			head[i][0] = head[i][1] = 0;
		for(int i = 1, x, y; i <= m; ++i) {
			scanf("%d%d", &x, &y);
			vis[i] = 0;
			add(x, y, 0);
			add(y, x, 1);
		}
		for(int i = 1; i <= n; ++i)
			vs[i] = 0;
		dfs(1, 0);
		for(int i = 1; i <= n; ++i) 
			vs[i] = 0;
		dfs(1, 1);
		int now = m - 2 * n;
		// for(int i = 1; i <= m; ++i) {
		// 	printf("%d %d\n", i, vis[i]);
		// }
		for(int u = 1; u <= n; ++u) {
			for(int i = head[u][0]; i; i = a[i][0].nt) {
				if(!vis[i] && now) {
					printf("%d %d\n", u, a[i][0].to);
					now--;
				}
			}
		}
	}
	return 0;
}

Gym101630L - Laminar Family
  • 题意

    • 定义 f f f集合合法为 f f f中任意两个集合 A , B A,B A,B A 属 于 B ∣ ∣ B 属 于 A ∣ ∣ A 与 B 无 交 A属于B||B属于A||A与B无交 A属于B∣∣B属于A∣∣A与B无交
    • 给你一个 n n n个节点的树 给你 m m m组路径 ( u , v ) (u,v) (u,v) 问这 m m m组路径是否满足条件
  • 题解

    • 比赛时候 A − E A-E A−E都没打出来根本没心情看这种题目啊!…后面真的有几题是可做的呢

    • 首先 u = = v u==v u==v的组合是没有用的

    • 我们可以树上差分记录每个节点被访问到了几次

    • 去除没有访问过的点

      • 很显然…如果有度数>2的点肯定是不行的!

      • 接下来我们要做的就是一个经典问题了对吧…

        有一些线段是否存在交叉关系

        • 这个搞个单调栈什么的就可以了…具体看一下代码吧

Code

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, LOG = 20;
struct Path {
	int len, u, v;
} b[N];
struct data {
	int nt, to;
} a[N << 1];
queue<int> q;
vector<int> G[N];
int cnt = 0, n, m;
int val[N], ys[N], sy[N], vis[N], st[N];
int d[N], head[N], dep[N], g[N][LOG + 1];

void add(int x, int y) {
	a[++cnt].to = y;
	a[cnt].nt = head[x];
	head[x] = cnt;
}

void dfs(int u, int fa) {
	g[u][0] = fa;
	dep[u] = dep[fa] + 1;
	for(int i = head[u]; i; i = a[i].nt) {
		int to = a[i].to;
		if(to == fa) {
			continue;
		}
		dfs(to, u);
	}
}

void Dfs(int u, int fa) {
	for(int i = head[u]; i; i = a[i].nt) {
		int to = a[i].to;
		if(to == fa) {
			continue;
		}
		Dfs(to, u);
		val[u] += val[to];
	}
}

void yyqx() {
	for(int j = 1; j <= LOG; ++j) 
		for(int i = 1; i <= n; ++i)
			g[i][j] = g[g[i][j - 1]][j - 1];
}

int GetLCA(int A, int B) {
	if(dep[A] > dep[B]) swap(A, B);
	for(int i = LOG; i >= 0; --i)
		if(dep[g[B][i]] >= dep[A]) B = g[B][i];
	if(A == B) return A;
	for(int i = LOG; i >= 0; --i) 
		if(g[A][i] != g[B][i])
			A = g[A][i], B = g[B][i];
	return g[A][0];
}

bool cmp(Path A, Path B) {
	return A.len > B.len;
}

bool go(int be) {
	vis[be] = 1;
	q.push(be);
	int now = 0;
	while(!q.empty()) {
		int h = q.front(); q.pop();
		sy[h] = ++now, ys[now] = h;
		for(int i = head[h]; i; i = a[i].nt) {
			int to = a[i].to;
			if(!vis[to] && val[to]) {
				vis[to] = 1;
				q.push(to);
				break;
			}
		}
	}
	int top = 0;
	for(int i = 1; i <= now; ++i) {
		int h = ys[i];
		while(top && st[top] < i) top--;
		for(int j = 0; j < G[h].size(); ++j) {
			int to = G[h][j];
			if(sy[to] <= i) continue;
			if(!top || sy[to] <= st[top]) st[++top] = sy[to];
			else return false;
		}
	}
	return true;
}

int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1, x, y; i < n; ++i) {
		scanf("%d%d", &x, &y);
		add(x, y), add(y, x);
	}
	dfs(1, 0), yyqx();
	int tot = 0;
	for(int i = 1, x, y; i <= m; ++i) {
		scanf("%d%d", &x, &y);
		if(x == y) continue;
		int lca = GetLCA(x, y);
		// printf("%d %d %d\n", x, y, lca);
		b[++tot].u = x, b[tot].v = y, b[tot].len = dep[x] + dep[y] - 2 * dep[lca];
		val[x]++, val[y]++;
		val[lca] -= 1;
		val[g[lca][0]] -= 1;
	}
	Dfs(1, 0);
	for(int u = 1; u <= n; ++u) {
		if(val[u]) {
			for(int i = head[u]; i; i = a[i].nt) {
				int to = a[i].to;
				if(val[to]) {
					d[u]++;
				}
			}
		}
	}
	for(int i = 1; i <= n; ++i) {
		if(d[i] > 2) return printf("No\n"), 0;
	}
	sort(b + 1, b + 1 + tot, cmp);
	for(int i = 1; i <= tot; ++i) {
		G[b[i].u].push_back(b[i].v);
		G[b[i].v].push_back(b[i].u);
	}
	for(int i = 1; i <= n; ++i) {
		if(!vis[i] && d[i] == 1) {
			if(!go(i)) return printf("No\n"), 0;
		}
	}
	printf("Yes\n");
	return 0;
}

Gym101630 - I . Interactive Sort
  • 题意

    • 一个长度 n ≤ 10000 n \leq 10000 n≤10000的一个排列…分成偶数和奇数两个数组(保证随机)
    • 每次询问可以得到 e v e n [ i ] 和 o d d [ j ] even[i]和odd[j] even[i]和odd[j]的大小关系(询问次数 ≤ 300000 \leq 300000 ≤300000
  • 题解

    • 我们可以利用奇数将偶数分成若干段
    • 每次求奇数的值的时候直接二分出在偶数的哪一个段
    • 然后直接暴力拆解就行了
    • 由于是随机的所以 O ( n l o g n ) O(nlog_n) O(nlogn​)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
vector<int> g[N], u, v;
char lx[5];
int e[N], o[N];
int tot = 0;

bool Ask(int x, int y) {
	printf("? %d %d\n", x, y);
	fflush(stdout);
	scanf("%s", lx + 1);
	return lx[1] == '<';
}

void split(int now, int x) {
	u.clear(), v.clear();
	for(int i = 0; i < g[now].size(); ++i) {
		if(Ask(g[now][i], x)) 
			u.push_back(g[now][i]);
		else 
			v.push_back(g[now][i]);
	}
}

int insert(int x) {
	for(int i = tot; i > x; --i)
		g[i + 1] = g[i];
	g[x] = u, g[x + 1] = v, tot++;
	int ans = 0;
	for(int i = 1; i <= x; ++i)
		ans += (int)g[i].size();
	return ans * 2 + 1;
}

int main() {
	int n;
	scanf("%d", &n);
	if(n == 1) {
		printf("! 1\n");
		fflush(stdout);
		return 0;
	}
	tot = 1;
	for(int i = 1; i <= n / 2; ++i) {
		g[1].push_back(i);
	}
	// printf("%d\n", (int)g[1].size());
	for(int i = 1; i <= (n + 1) / 2; ++i) {
		int l = 1, r = tot, ans = 0;
		while(l <= r) {
			int mid = (l + r) >> 1;
			if(Ask(g[mid][0], i)) {
				ans = mid, l = mid + 1;
			} else {
				r = mid - 1;
			}
		}
		// printf("%d\n", ans);
		if(!ans) {
			// printf("???\n");
			split(1, i);
			if(!u.size()) {
				o[i] = 1;
			} else if(!v.size()) {
				o[i] = u.size() * 2 + 1;
			} else {
				o[i] = insert(1);
			}
			// printf(">??\n");
		} else {
			int now = 0;
			for(int i = 1; i < ans; ++i)
				now += (int)g[i].size();
			split(ans, i);
			if(!v.size()) {
				if(ans == tot) {
					o[i] = n;
				} else {
					now += (int)g[ans].size();
					split(ans + 1, i);
					if(!u.size()) {
						o[i] = now * 2 + 1;
					} else {
						o[i] = insert(ans + 1);
					}
				}
			} else {
				o[i] = insert(ans);
			}
		}
	}
	int cur = 0;
	for(int i = 1; i <= tot; ++i)
		for(int j = 0; j < g[i].size(); ++j)
			cur++, e[g[i][j]] = cur * 2;
	printf("! ");
	for(int i = 1; i <= n / 2; ++i) {
		printf("%d", e[i]);
		if(i != n / 2) printf(" ");
	}
	for(int i = 1; i <= (n + 1) / 2; ++i)
		printf(" %d", o[i]);
	puts("");
	fflush(stdout);
	return 0;
}
codeforces-gym101630-B【Box】 题目: Bella is working in a factory that produces boxes. All boxes are in a shape of rectangular parallelepipeds. A net of the corresponding parallelepiped is cut out of a flat rectangular piece of car... 阅读详情

相关推荐

【邻接表存图模板】vector邻接表、数组邻接表、链式前向星

一、目录 一、目录 二、前言 三、邻接表“详解” (一)边的信息 (二)几种邻接表的实现方法“详解” 1.数组邻接表 代码 2.vector邻接表 代码 vector邻接表还有一种魔性写法: 3.链式前向星 代码 四、总结 二、前言 本来之前自己太弱了,一直只会用邻接矩阵,后来发现邻接表才是主流... 参考&特别鸣谢: https://www.cnblog...

十里寒塘路♣烟花一半醒 3113

Gym - 101630C C. Connections

题目链接:https://odzkskevi.qnssl.com/c0c059d5732d43b0fe84c99caa5fb80f?v=1512491182 Problem C. Connections Time limit: 3 seconds Hard times are coming to Byteland. Quantum computing is becoming mainstre

长路漫漫 唯剑作伴 1009

100个Python代码大全:学完这篇从Python小白到架构师

Python是一种广泛使用的高级编程语言,以其简洁优雅、易于学习和强大的库而闻名。无论你是一位经验丰富的程序员还是初学者,都可以从这种语言的丰富资源中受益。在本篇博客中,我将分享100个实用的Python代码示例,旨在帮助你掌握Python编程,并在日常工作中提高效率。

penggerhe的博客 1万+

Codeforces gym 101630 K

首先可以注意到对于序列aia_iai​,我们可以倒着贪心来线性求解,这也说明对于任意的s mod qs\bmod qsmodq,要么无解要么有唯一解。而对于序列整体乘一个gcd⁡(r,q)=1\gcd(r,q)=1gcd(r,q)=1的数字rrr,显然不改变解的存在性和唯一性。于是,我们说明了我们可以对序列整体乘一个rrr来求解。 考虑取一个阈值BBB,对nnn按大小分别处理。 对于n≤Bn\leq Bn≤B的情形,我们考虑直接解决这个背包问题。这里容易用折半搜索和哈希做到O(2n2)\mathcal O(

mayaohua 489

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

YOLO11实战优化:暗光环境检测 | 引入Retinex增强模块与YOLO11联合训练,解决夜间/低照度场景抓拍痛点

本文探讨了暗光环境下目标检测的技术挑战与解决方案。研究发现,传统CNN模型在低照度条件下性能显著下降,主要由于光子数减少导致信噪比降低、目标特征被噪声淹没。针对这一问题,文章提出将可微分光照增强模块嵌入YOLO检测器的技术路线,重点分析了Retinexformer+YOLO11联合方案的优势。 文章对比了YOLO系列模型在暗光场景的表现,指出YOLO11凭借其C3k2模块、无锚检测头和多任务统一骨干网络,在低对比度图像特征提取方面优于前代产品。同时详细介绍了Retinexformer的理论基础和技术创新,包

2601_95807009的博客 206

gym101630a

http://codeforces.com/gym/101630/attachments一道树套树的题目。先考虑把x轴坐标离散化。由于里面的圆不能相交,我们可以惊喜的发现:同一个纵坐标的圆最多是log个数的!!具体证明:http://neerc.ifmo.ru/archive/2017/neerc-2017-analysis.pdf然后呢。。我们可以线段树维护区间,每个节点维护set(vector...

purple__moon的博客 360

资源分享·病毒样本下载资源分享

一、微步云沙箱 微步在线云沙箱https://s.threatbook.cn/ 使用病毒sha256即可寻找病毒样本;该站点也可上传可疑文件/可疑URL地址到沙箱中,进行分析 。 以永恒之蓝为例,样本sha256是:ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa 下载样本或流量监控,需要消耗积分: 二、AnyRun Interactive Online Malware Analysis Sandbox.

不忘初心,护天下安全! 2万+

Gym - 101630C、Connections (思维)

                                                                Problem C. Connections Time limit: 3 seconds Hard times are coming to Byteland. Quantum computing is becoming mainstream and Qubitland i...

Amove 730

2025年GESP3月认证C++五级真题解析

小 A 有 2n 件物品,小 B 和小 C 想从小 A 手上买走这些物品。对于第 i 件物品,小 B 会以 bi 的价格购买,而小 C 会以 ci 的价格购买。对于所有测试点,保证 1 <= T <= 100, 2 <= g < p <= 10^9, g, p 为整数, p 为质数。对于所有测试点,保证 1 <= n <= 10^5, 0 <= bi, ci <= 10^9, bi, ci 为整数。对于另外 50 % 的测试点,保证 n <= 100000, 0 <= bi, ci <= 10^9。

lan_in的博客 1035

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 903

Connections Gym - 101630C

Connections Gym - 101630C 题目链接:https://codeforces.com/group/xrTA2IaQje/contest/254939 题意 一个连通图有n个顶点,有m条有向边,没有重边自环,要保证在删除(m-2n)条边的情况下,(即使边数变为2n条 )这个图仍然是连通的(连通表示,从图上任意一点 i 出发都能到达图上任意一点 j ),要求输出删掉的 m-2*...

hrbust_wmz的博客 244

计算机组成原理(第三版)唐朔飞-第九章控制单元的功能-课后习题

计算机组成原理(第三版)唐朔飞-第九章控制单元的功能-课后习题

weixin_45735391的博客 4万+

Gym101630L Laminar Family

题目链接:https://cn.vjudge.net/problem/Gym-101630L 题目大意:   对于一个集合的集合,若其中任意两个集合 \(A\) 和 \(B\) 都满足下述三个条件之一:\(A \subset B\) 或 \(B \subset A\) 或 \(A \cap B = \varnothing\),则称这个集合 \(laminar\).   给定一棵有 ...

dielie6462的博客 401

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

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

Gym101630A Archery Tournament

题目链接:https://vjudge.net/problem/Gym-101630A 题目大意:   有\(n\)个操作,每次输入\(t\) \(x\) \(y\)\((t=1,2; -10^9 \le x,y \le 10^9; y > 0)\). 当\(t=1\),在坐标平面上立一个圆心在\(x,y\),半径为\(y\)的圆形靶子。当\(t=2\),往点\(x,y\)射一...

dielie6462的博客 248

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

codeforces gym101630 Connections 反图+dfs

https://codeforces.com/gym/101630 题目大意:给一个有向图,有nnn个点,mmm条边,保证m>2∗nm>2*nm>2∗n,保证输入没有重边且任意两个点均可达,现在要删除m−2∗nm-2*nm−2∗n条边,使得任意两个点仍可达,问要删除的边的编号。 思路:保证:(1)从111出发能到达其他点;(2)从其他点出发能到达111;就可以满足题意,于是建一个...

xiji333的博客 236

gym101630 Laminar Family

https://codeforces.com/gym/101630/attachments 一开始写了个假算法没了。。。然后发现假了以后没写完。 先按照路径长度排序,路径长的先染色。 问题的关键是每段区间染色前,这段区间必须只有一种颜色。 我们可以对线段树每一段区间维护一个左端点颜色,右端点颜色和颜色段数。 对于树链剖分,我们先把路径对应的区间全部存在vector里,然后按照线段树中的节...

binarycopycode 244

Gym101630C Connections

题目大意:   给出一个\(n\)个点\(m\)条边的有向图,无自环无重边。要求把这个图进行删边,直到只剩下\(2n\)条边,使得图中每个点都可以相互连通。 知识点:  DFS 解题思路:   从点\(1\)出发,进行一次\(DFS\),把所有的点都访问一次,标记经过的边,这些边保证了点\(1\)能到所有的点。再额外建一个图(图中所有的边都是原图的边的反向),再进行一次与上面类似...

dielie6462的博客 208

Gym - 101630 C - Connections 两次dfs强连通图

题目链接:Gym - 101630 C - Connections 题目描述 输入描述 输出描述 样例 题意 一个有向图,有n个点,有m条边,现在需要你删除m-2n条边,使得剩下的2n条边依旧可以组成强连通图,且把删除的边输出 题解 正反向建图且对各个边进行相同的下标标记,默认1为起始位置,分别在正反图进行dfs遍历,并判断是否经历过该点和该边,这就可以保证有一个强连通图了,故可以直接for遍历选出前n-2*m个没有被遍历过的边了。 #pragma GCC optimize(2) #include&

hrdate(菜菜菜带带带) 330

Codeforces Gym 101630J Travelling from Petersburg to Moscow (最短路)

题目链接 http://codeforces.com/gym/101630/attachments 题解 zyb学长的题。 先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x\)与\(0\)取\(\max\), 跑最短路之后加上\(x\times k\)更新答案。 注意从\(0\)开始枚举(就相当于裸跑最短路)。 代码 #include<cstdio&gt...

weixin_30439131的博客 138

Box(gym 101630 B)

原文地址B题 Bella is working in a factory that produces boxes. All boxes are in a shape of rectangular parallelepipeds. A net of the corresponding parallelepiped is cut out of a flat rectangular piece of ...

ZCY的博客 755

Codeforces Gym 101630J Journey from Petersburg to Moscow (最短路)

题目链接 http://codeforces.com/gym/101630/attachments 题解 zyb学长的题。 先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x\)与\(0\)取\(\max\), 跑最短路之后加上\(x\times k\)更新答案。 注意从\(0\)开始枚举(就相当于裸跑最短路)。 代码 #include<cstdio&gt...

suncongbo's blog 142

CF Gym 101630 B Box

题目的意思大概就是给一个长方体的长宽高,问他能不能用一个w*h的纸剪出来,就是说展开图的长宽能不能比给定的小. 题目给了11中展开图的拓扑结构,我觉得这个很关键,要是题目没有给这个我可能想不到那么全面,不过题目已经给了我就分析那11个图形,发现展开图的长宽大概分为三类 假设长宽高为a,b,c,具体是多少并不重要,重要的是类别,具体的数值我们枚举一下排列就可以覆盖所有情况. 一边为 a+c+a+c...

T_T233333333的博客 292

Gym - 101630A

题意这道题的题意说的是按顺序给出原盘和射击点,原盘坐标是x,y是确定放置在水平轴上的分析因为是放在水平轴上,那么在对于一个x轴,相同的x不可能有多个y,并且在一个x轴区间内不会有太多的原盘,那么可以对x轴进行排序查找。

qq965194745的博客 438

Gym101630 - A Archery Tournament(线段树)

链接:Gym101630 - A Archery Tournament 题意: 共nnn个操作: 操作1:放置一个圆形靶子,中心在(xi,yi)(x_i,y_i)(xi​,yi​),其中yi≥0y_i\ge 0yi​≥0且靶子一定相切于xxx轴(即半径ri=yir_i=y_iri​=yi​),不同靶子之间不会有重叠(可能相切); 操作2:投掷一个飞镖至(xj,yj)(x_j,y_j)(xj​,yj...

Plus Ultra! 568
上一篇: 杂想??
下一篇: Codeforces | Round #576 Div2 |1199E, 1199F 题解
Averyta
博客等级 码龄7年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值