首页 > 其他分享 >2023冲刺国赛模拟6

2023冲刺国赛模拟6

时间:2023-05-22 14:57:56浏览次数:44  
标签:typedef int long 国赛 maxn 冲刺 read 2023 getchar

A. 染色

发现一条链的话等同于对一个区间取 \(min\)

长剖,记录取 \(min\) 的次数和推到的位置,使用 \(st\) 表辅助处理

每次合并将取 \(min\) 推到较短长度

code
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;

int read(){
	int x = 0; char c = getchar();
	while(!isdigit(c))c = getchar();
	do{x = x * 10 + (c ^ 48); c = getchar();}while(isdigit(c));
	return x;
}
const int maxn = 1e5 + 55;
int n, a[maxn];
vector<int>g[maxn], h[maxn];
vector<ll>f[maxn];
int mi[maxn][18];
int query(int l, int r){
	int k = __lg(r - l + 1);
	return min(mi[l][k], mi[r - (1 << k) + 1][k]);
}
void push_down(int x, int len){
	int cnt = 0;
	for(int i = 1; i <= len; ++i){
		cnt += h[x][h[x].size() - i]; h[x][h[x].size() - i] = 0;
		if(cnt)f[x][f[x].size() - i] = min(f[x][f[x].size() - i], (ll)query(max(1, i - cnt + 1), i));
	}
	if(h[x].size() > len)h[x][h[x].size() - len - 1] += cnt;
}
void merge(int x, int y){
	if(f[x].size() < f[y].size())swap(f[x], f[y]), swap(h[x], h[y]);
	push_down(x, f[y].size()); push_down(y, f[y].size());
	for(int i = 1; i <= f[y].size(); ++i)f[x][f[x].size() - i] += f[y][f[y].size() - i];
	f[y].clear(); h[y].clear();
}
void dfs(int x, int fa){
	for(int v : g[x])if(v != fa){dfs(v, x); merge(x, v);}
	f[x].push_back(a[1]); h[x].push_back(1);
}
int main(){
	freopen("color.in","r",stdin);
	freopen("color.out","w",stdout);
	n = read(); 
	for(int i = 1; i <= n; ++i)a[i] = mi[i][0] = read();
	for(int j = 1; (1 << j) <= n; ++j)
		for(int i = 1; i + (1 << j) - 1 <= n; ++i)
			mi[i][j] = min(mi[i][j - 1], mi[i + (1 << (j - 1))][j - 1]);
	for(int i = 1; i < n; ++i){
		int u = read(), v = read();
		g[u].push_back(v); g[v].push_back(u);
	}
	dfs(1, 0); push_down(1, h[1].size());
	ll ans = 0; for(ll v : f[1])ans += v;
	printf("%lld\n",ans);
	return 0;
}

B. 技能

原题2023冲刺清北营10顶级厨师

code
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;

int read(){
	int x = 0; char c = getchar();
	while(!isdigit(c))c = getchar();
	do{x = x * 10 + (c ^ 48); c = getchar();}while(isdigit(c));
	return x;
}

const int maxn = 1005, B = 200, inf = 0x3f3f3f3f;
int n, a[maxn][3], ans, f[maxn][B + 5][B + 5][3];
void ckmx(int &x, int y){if(x < y)x = y;}

int main(){
	freopen("skill.in","r",stdin);
	freopen("skill.out","w",stdout);
	n = read();
	for(int i = 1; i <= n; ++i){
		a[i][0] = read();
		a[i][1] = read();
		a[i][2] = read();
	}
	ans = 0;
	for(int i = 0; i <= n; ++i)
		for(int j = 0; j <= B; ++j)
			for(int k = 0; k <= B; ++k)
				for(int s = 0; s < 3; ++s)
					f[i][j][k][s] = -inf;
	f[0][0][0][0] = f[0][0][0][1] = f[0][0][0][2] = 0;
	for(int i = 0; i <= n; ++i){
		for(int p = 0; p <= min(i, B); ++p)
			for(int q = 0; q <= min(i, B); ++q)
				for(int las = 0; las < 3; ++las){
					if(i == n)ans = max(ans, f[i][p][q][las]);
					else{
						ckmx(f[i + 1][p + (p != 0)][q + (q != 0)][las], f[i][p][q][las] + a[i + 1][las] - p - q);
						if(las == 0){
							ckmx(f[i + 1][2][q + (q != 0)][1], f[i][p][q][las] + a[i + 1][1] - 1 - q);
							ckmx(f[i + 1][2][p + (p != 0)][2], f[i][p][q][las] + a[i + 1][2] - 1 - p);
						}else if(las == 1){
							ckmx(f[i + 1][2][q + (q != 0)][0], f[i][p][q][las] + a[i + 1][0] - 1 - q);
							ckmx(f[i + 1][p + (p != 0)][2][2], f[i][p][q][las] + a[i + 1][2] - 1 - p);
						}else if(las == 2){
							ckmx(f[i + 1][q + (q != 0)][2][0], f[i][p][q][las] + a[i + 1][0] - 1 - q);
							ckmx(f[i + 1][p + (p != 0)][2][1], f[i][p][q][las] + a[i + 1][1] - 1 - p);
						}
					}
				}
	}
	printf("%d\n",ans);
	return 0;
}

C. 重排

考虑一次操作之后,原数在每个位置的概率相同

那么只需要关心操作的最长长度,和原数的位置

如果最长操作为 \(m\) 那么,期望位置是 \((m + 1) / 2\)

于是

\[ ans = (\frac{i - 1}{n})^k i + \sum_{m = i}^{n}\frac{m + 1}{2}((\frac{m}{n})^k - (\frac{m - 1}{n})^k) \]

code
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;

int read(){
	int x = 0; char c = getchar();
	while(!isdigit(c))c = getchar();
	do{x = x * 10 + (c ^ 48); c = getchar();}while(isdigit(c));
	return x;
}
const int maxn = 1e6 + 55;
int n, pos, k;
double f[maxn], g[maxn];
double qpow(double x, int y){
	double ans = 1;
	for(; y; y >>= 1, x = x * x)if(y & 1)ans = ans * x;
	return ans;
}
int main(){
	freopen("arrange.in","r",stdin);
	freopen("arrange.out","w",stdout);
	n = read(); pos = read(); k = read();
	for(int i = 1; i <= n; ++i)f[i] = qpow(1.0 * i / n, k);
	double ans = pos * f[pos - 1];
	for(int i = pos; i <= n; ++i)ans = (ans + (i + 1.0) / 2.0 * (f[i] - f[i - 1]));
	printf("%.20lf\n",ans);
	return 0;
}

标签:typedef,int,long,国赛,maxn,冲刺,read,2023,getchar
From: https://www.cnblogs.com/Chencgy/p/17420587.html

相关文章

  • irq中断相关(2023.5.22)
    //irq29:nobodycared(trybootingwiththe"irqpoll"option) //aer_irqthreaded   aer_isrDIsablingIRQ#105 https://blog.csdn.net/Guet_Kite/article/details/106689126note_interrupt(){if(unlikely(desc->irqs_unhandled>99900)){ ......
  • 冲刺国赛模拟 6
    长剖调不出来喜提垫底!评价:同比赛编号。牛子老师给出三道原题题号:qoj5418、5146、2303。染色简单长剖,为啥没有调出来呢?不懂。首先按深度考虑,设\(dp_{x,i}\)为在\(x\)把子树深度\(i\)染完的最小代价,转移显然\[dp_{x,i}=\min(\sum_{v}dp_{v,i-1},a_i)\]这玩意和深度有关......
  • Mac版PDF编辑器-Acrobat Pro DC 2023
    AcrobatProDC2023(pdf编辑器)是一款能让用户轻松创建和编辑多种pdf格式的实用工具,并且能够同时使用各种方法编辑大量pdf文件。AcrobatProDC是Mac上运行速度最快、处理能力最强、功能最丰富的工具之一。AcrobatProDC包括强大的图像编辑工具,可让您轻松编辑图片和视频,而......
  • APIO2023 线下又寄
    前情提要:因为\(\text{CSP-S}\)没挂分所以是线下\(\text{Day0}\)下午三点多到的,从高铁站到华山饭店路上跟一中、学军的一路,本来华二和我们差不多一起到的,但不知道为啥他们先走了,不过在车上都不敢跟\(\text{qiuly}\)他们讲话,实在太社恐了/ll然后就是报道,报完道,开幕式也没啥......
  • LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。LeetCode单周赛第345场·体验一题多解的算法之美单周赛345概览T1.删除子串后的字符串最小长度(Easy)标签:栈T2.字典序最小回文串(Medium)标签:贪心、双指针T3.求一个整数的惩罚数(Medium)标签......
  • 2023语言与智能技术竞赛开辟“双赛道”:寻找“全民测评官”,探索AI多模态能力
    开年以来,人工智能大语言模型(LLM)掀起新一轮全球科技竞赛,全球科技巨头打响“百模大战”。当大语言模型正深刻改变人类生产生活方式时,该如何进一步释放其潜能,成为业界关注的问题,也成为了2023语言与智能技术竞赛命题的起点。5月17日,2023语言与智能技术竞赛正式启动,该大赛由中国计算机学......
  • 2023江西省赛赛后总结
    大一acmer的第二场线下赛(第一场是天梯赛。去年省赛是线上赛,结果我还因为时间冲突没有去,最后只有我的两个队友去了),比赛前一天晚上睡不着,早上坐车去比赛的时候就一直很困,比赛开始后却立马精神了。最后只过了四题,拿了个三等奖,我好菜啊。。。。。。别人都是fake,只有我是真菜。。。......
  • APIO2023游记
    没报名APIO。Day\(1\)是5.20。Day\(-2\)今天上午怎么有模拟赛。大为震撼。不过徐老师和我们说这场我们可以鸽掉。于是就鸽子了。就看了眼T2,会了。听zak说这是不归之人与望眼欲穿的人们。应徐教练要求,上午我讲课,大概讲了一下【数据删除】,还拿了松松松的【数据删除】做......
  • 6月西安 | 2023年易智瑞遥感应用培训班报名开启
    传递遥感技术助力遥感应用2023年易智瑞遥感应用培训班—6月西安站 主办单位易智瑞信息技术有限公司培训简介遥感应用培训班自2009年启动以来,已经举办了14年。已先后在20多个城市举办了120多场培训,共有7000多名学员参加。每年培训班内容都会根据学......
  • 2023-Liunx命令 第17章 软件包管理
    17.1rpm指令RPM软件包管理器【语法】rpm[选项][参数]【功能介绍】rpm指令是RPM软件包的管理工具。RPM(全称为:RedHatPackageManager)最早由Redhat公司开发,作为RedhatLinux中软件包的管理工具。目前,有很多主流的发行版都是用RPM来管理Linux的软件包 【选项......