首页 > 其他分享 >AC记录

AC记录

时间:2024-09-05 16:17:09浏览次数:3  
标签:AC ch return 记录 int small query textcolor

因为洛谷的remote CodeForces Judge 挂了,先把一些过了的 CF 题的 AC-code 放在此处


\(\small \textcolor{blue}{CF280C}\)

\(\small \textcolor{purple}{CF911G}\)

\(\small \textcolor{blue} {CF865D}\)

\(\small \textcolor{purple}{CF960H}\)

\(\small \textcolor{purple}{CF79D}\)

\(\small \textcolor{purple}{CF786B}\)

Gym101002H

\(\small \textcolor{green}{CF988D}\)

\(\small \textcolor{blue}{CF508D}\)

\(\small \textcolor{purple}{CF613D}\)

\(\small \textcolor{purple}{CF1209E2}\)

\(\small \textcolor{blue}{CF165E}\)

\(\small\textcolor{purple}{CF718C}\)

\(\small\textcolor{purple}{CF1009F}\)

#include<bits/stdc++.h>
using namespace std;
		
int rd() {
	int x = 0, w = 1;
	char ch = 0;
	while (ch < '0' || ch > '9') {
		if (ch == '-') w = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + (ch - '0');
		ch = getchar();
	}
	return x * w;
}

void wt(int x) {
	static int sta[35];
	int f = 1;
	if(x < 0) f = -1,x *= f;
	int top = 0;
	do {
		sta[top++] = x % 10, x /= 10;
	} while (x);
	if(f == -1) putchar('-');
	while (top) putchar(sta[--top] + 48);
}
const int N = 1e6+5;
int n,dep[N],a[N];
int head[N],nxt[N<<1],to[N<<1],cnt;
void init() {memset(head,-1,sizeof(head));cnt = 0;}
void add(int u,int v) {
	nxt[cnt] = head[u];
	to[cnt] = v;
	head[u] = cnt++;
}

int rt[N];
namespace sgt{
int mx[N * 25],ls[N * 25],rs[N * 25],tot;
#define mid ((pl + pr) >> 1)
void push_up(int p) {mx[p] = max(mx[ls[p]],mx[rs[p]]);}
void update(int &p,int pl,int pr,int k) {
	if(!p) p = ++tot;
	if(pl == pr) {mx[p]++;return;}
	if(k <= mid) update(ls[p],pl,mid,k);
	else update(rs[p],mid+1,pr,k);
	push_up(p);
}

int query(int p,int pl,int pr) {
	if(!p) return 0;
	if(pl == pr) return pl;
	if(mx[ls[p]] >= mx[rs[p]]) return query(ls[p],pl,mid);
	else return query(rs[p],mid + 1,pr);
}

int merge(int x,int y,int pl,int pr) {
	if(!x || !y) return x + y;
	if(pl == pr) {
		mx[x] += mx[y];
		return x;
	}
	ls[x] = merge(ls[x],ls[y],pl,mid);
	rs[x] = merge(rs[x],rs[y],mid+1,pr);
	push_up(x);
	return x;
}

}


void dfs(int x,int f) {
	dep[x] = dep[f] + 1;
	for(int i = head[x];~i;i = nxt[i]) {
		int y = to[i];
		if(y ^ f) {
			dfs(y,x);
			rt[x] = sgt::merge(rt[x],rt[y],1,n);
		}
	}
	sgt::update(rt[x],1,n,dep[x]);
	a[x] = sgt::query(rt[x],1,n) - dep[x];
}

signed main() {
	init();
	n = rd();
	for(int i = 1;i<n;i++) {
		int u = rd(),v = rd();
		add(u,v);add(v,u);
	}
	dfs(1,0);
	for(int i = 1;i<=n;i++) wt(a[i]),putchar('\n');
	return 0;
}

\(\small\textcolor{blue}{CF609E}\)

#include<bits/stdc++.h>
using namespace std;
#define int long long	
int rd() {
	int x = 0, w = 1;
	char ch = 0;
	while (ch < '0' || ch > '9') {
		if (ch == '-') w = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + (ch - '0');
		ch = getchar();
	}
	return x * w;
}

void wt(int x) {
	static int sta[35];
	int f = 1;
	if(x < 0) f = -1,x *= f;
	int top = 0;
	do {
		sta[top++] = x % 10, x /= 10;
	} while (x);
	if(f == -1) putchar('-');
	while (top) putchar(sta[--top] + 48);
}
const int M = 2e5+5,N = M,inf = 0x3f3f3f3f3f3f3f3fLL;
int n,m,ans,det[M],s[N];
array<int,4> e[M];
bool vis[N];
int head[N],nxt[N<<1],to[N<<1],cnt,val[N<<1];
void init() {memset(head,-1,sizeof(head));cnt = 0;}
void add(int u,int v,int w) {
	nxt[cnt] = head[u];
	to[cnt] = v;
	val[cnt] = w;
	head[u] = cnt++;
}
int find(int x) {
	if(s[x] ^ x) s[x] = find(s[x]);
	return s[x];
}

void kruskal() {
	for(int i = 1;i<=n;i++) s[i] = i;
	int tot = 0;
	for(int i = 1;i<=m;i++) {
		int fx = find(e[i][1]),fy = find(e[i][2]);
		if(fx ^ fy) {
			s[fx] = fy;
			vis[e[i][3]] = true;
			add(e[i][1],e[i][2],e[i][0]);
			add(e[i][2],e[i][1],e[i][0]);
			ans += e[i][0];
			tot++;
			if(tot == n - 1) break;
		}
	}
}

int dep[N],fa[N],siz[N],son[N],id[N],w[N],_w[N],top[N],num;

void dfs1(int x,int f) {
	fa[x] = f;
	siz[x] = 1;
	dep[x] = dep[f] + 1;
	for(int i = head[x];~i;i = nxt[i]) {
		int y = to[i];
		if(y ^ f) {
			dfs1(y,x);
			w[y] = val[i];
			siz[x] += siz[y];
			if(siz[son[x]] < siz[y]) son[x] = y;
		}
	}
}

void dfs2(int x,int topx) {
	top[x] = topx;
	id[x] = ++num;
	_w[num] = w[x];
	if(!son[x]) return;
	dfs2(son[x],topx);
	for(int i = head[x];~i;i = nxt[i]) {
		int y = to[i];
		if(y ^ fa[x] && y ^ son[x]) dfs2(y,y);
	}
}

namespace sgt{
#define ls (p << 1)
#define rs (ls | 1)
#define mid ((pl + pr) >> 1)

int mx[N<<2];

void push_up(int p) {
	mx[p] = max(mx[ls],mx[rs]);
}

void build(int p,int pl,int pr) {
	if(pl == pr) {
		mx[p] = _w[pl];
		return;
	}
	build(ls,pl,mid);
	build(rs,mid+1,pr);
	push_up(p);
}

int query(int p,int pl,int pr,int l,int r) {
	if(l > r) return 0;
	if(l <= pl && pr <= r) return mx[p];
	if(r <= mid) return query(ls,pl,mid,l,r);
	else if(l > mid) return query(rs,mid+1,pr,l,r);
	else return max(query(ls,pl,mid,l,r),query(rs,mid+1,pr,l,r));
}

}

int query(int x,int y) {
	int re = 0;
	while(top[x] ^ top[y]) {
		if(dep[top[x]] < dep[top[y]]) swap(x,y);
		re = max(re,sgt::query(1,1,n,id[top[x]],id[x]));
		x = fa[top[x]];
	}
	if(dep[x] > dep[y]) swap(x,y);
	re = max(re,sgt::query(1,1,n,id[x] + 1,id[y]));
	return re;
}
int a[N];

signed main() {
	init();
	n = rd(),m = rd();
	for(int i = 1;i<=m;i++) 
		e[i][1] = rd(),e[i][2] = rd(),e[i][0] = rd(),e[i][3] = i;
	sort(e + 1,e + m + 1);
	kruskal();
	dfs1(1,0),dfs2(1,1);
	sgt::build(1,1,n);
	for(int i = 1;i<=m;i++) {
		if(vis[e[i][3]]) a[e[i][3]] = ans;
		else  {
			int re = query(e[i][1],e[i][2]);
			a[e[i][3]] = ans + e[i][0] - re; 
		}
	}
	
	for(int i = 1;i<=m;i++) wt(a[i]),putchar('\n');
	
	return 0;
}

标签:AC,ch,return,记录,int,small,query,textcolor
From: https://www.cnblogs.com/WG-MingJunYi/p/18398704

相关文章

  • Oracle隐式转换
    收到数据库服务器cpu告警,当时在吃饭,来不及登录查看。(数据库80%的问题都是SQL引起的)后续通过会话快照信息进行分析。selectsample_time,sql_id,count(*)fromdba_hist_active_sess_historywheresample_time>to_date('2024090417:58:00','yyyymmddhh24:mi:ss')andsample_tim......
  • 复用优化:缓冲(Buffer)+缓存(Cache)
    在写代码的时候,你会发现有很多重复的代码可以提取出来,做成公共的方法。这样,在下次用的时候,就不用再费劲写一遍了。这种思想就是复用。上面的描述是编码逻辑上的优化,对于数据存取来说,有同样的复用情况。无论是在生活中还是编码中,重复的事情一直在发生,如果没有复用,工作和生活就......
  • 2024.09 别急记录
    1.ARC070F-HonestOrUnkind发现\(a\leqb\)时\(b\)内部可以构造出一个好人集合,一定无解;否则有两种情况:\(x\)认为\(y\)是坏人,二者一好一坏,全部删去即可;\(x\)认为\(y\)是好人,那么\(y\)一定比\(x\)更好。维护一个栈表示目前越来越好的人,每次取出栈顶询问新人......
  • Adobe Illustrator (AI)win/mac下载矢量图形设计软件与快捷键的使用
    一、软件概述1.1软件简介AdobeIllustrator(简称AI)是Adobe公司开发的一款专业矢量图形设计软件,广泛应用于平面设计、插画创作、包装设计、UI设计、图标制作等多个领域。它以其强大的矢量绘图能力、丰富的图形编辑工具和高效的文件处理能力而闻名,能够创建出既精细又具有高度可......
  • 【前端面试】事件监听机制&React 的事件系统实现
    目的React实现了自己的事件系统,主要是为了解决以下几个问题:跨浏览器兼容性:不同的浏览器在处理DOM事件时有不同的实现,React的事件系统抽象了这些差异,提供了一致的API给开发者使用。性能优化:React可以对事件进行池化(Pooling),这意味着事件对象可以在事件处理过程......
  • openstack云平台删除云主机失败解决方法
    openstack云平台删除云主机失败解决方法【现象】​在云平台页面删除实例失败,提示报错:Failedtoexecuteaction(server_force_delete)forserver(0504ad86-b423-4a6b-bcb7-2339b0108d54),error:Instance0504ad86-b423-4a6b-bcb7-2339b0108d54couldnotbefound.......
  • 快码住微信恢复聊天记录最简单方法
    微信紧密编织,不仅外界交流的窗口,更是情感与记忆的宝库。一次意外的手机故障,让着一场数据灾难——微信中的大量珍贵记录不翼而飞。那些记录着家人关爱、朋友欢笑和工作重要信息的对话,仿佛一夜之间被时光吞噬,只留下空洞的记忆轮廓,充满遗憾。下面我告诉大家这么快速恢复微信聊天记......
  • 我愿称为最好用的微信恢复聊天记录天花板
    人生的旅程中,微信聊天记录就像一个个小小的里程碑。它们记录着我们的成长、我们的喜怒哀乐。当这些记录消失,就好像我们的人生也缺失了一部分。别让这种失落感持续,我来教教大家怎么恢复聊天记录第一步打开手机上的浏览器苹果用户建议使用自带浏览器第二步在浏览器搜索栏......
  • sdk创建openstack资源
    使用SDK方式创建镜像在提供的OpenStack私有云平台上,使用T版本的“openstack-python-dev”镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/Abc@1234”。使用“openstacksdk”python库,在/root目录下创建sd......
  • Java中的服务端点监控:Actuator与Micrometer
    Java中的服务端点监控:Actuator与Micrometer大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java应用中实现服务端点监控,重点介绍SpringBootActuator和Micrometer这两个工具。通过示例代码,我们将展示如何配置和使用这些工具来监......