首页 > 其他分享 >2024.9.25 多校 模拟赛

2024.9.25 多校 模拟赛

时间:2024-10-10 16:49:12浏览次数:1  
标签:度数 25 min int 2024.9 奇数 多校 nx ny

模拟赛

假做法上大分。

T1 几何

bitset 优化 dp。有空学,先挂个暴力。

code
#include<bits/stdc++.h>
using namespace std;
const int N = 5e5+5;
int T,n,m,t;
char s[N],x[55],y[55];
unordered_map<int,unordered_map<int,bool> >f[N];
unordered_map<int,unordered_map<int,bool> >vs[N];

bool dfs(int p,int nx,int ny)
{
	if(p==t+1) return (nx==n&&ny==m);
	if(vs[p][nx][ny]) return f[p][nx][ny];
	if(s[p]==x[nx%n+1]) if(dfs(p+1,nx%n+1,ny)) return 1;
	if(s[p]==y[ny%m+1]) if(dfs(p+1,nx,ny%m+1)) return 1;
	vs[p][nx][ny]=1;
	return f[p][nx][ny]=0;
}

int main ()
{
	freopen("geometry.in","r",stdin);
	freopen("geometry.out","w",stdout);
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s%s%s",s+1,x+1,y+1);
		n=strlen(x+1),m=strlen(y+1),t=strlen(s+1);
		for(int i=1;i<=t;i++) f[i].clear(),vs[i].clear();
		if(dfs(1,n,m)) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

T2 分析

又是一道树上 dp。。。

发现问题和一笔画问题有点像,也就是如果一条路径能一笔画完就没有代价,每个点的度数都为偶数时能一笔画完,所以关键在度数为奇数的点的个数。

为了确定度数,我们先进行 A 操作,A 操作可以直接看成加重边,对于加完 A 操作的图,如果还存在奇数的点(一笔画不完),那么就需要 B 来补。

显然,如果存在 \(k\) 个度数为奇数的点,那么代价就是 \(\frac{k}{2}-1\)(每跳一次消掉两个点,起点没代价)。

\(\frac{1}{2}\) 看起来不太好做,但发现性质:度数为奇数的点只会有偶数个。所以每次加边删边都会改变 \(2\) 个点度数的奇偶性,因此可做。

注意有一个 \(-1\),如果需要 B 操作才用减,如果根本没用过 B 当然不能减,所以我们需要知道是否有度数为奇数的点。

设计状态 \(f_{u,0/1/2}\) 表示以 \(u\) 为根:

  • 0:包括根在内整颗子树没有度数为奇数的点。
  • 1:根的度数为奇数。(因为任意一个图内度数为奇数的点有偶数个,所以子树内一定还有一个)
  • 2:根的度数为偶数,子树内有度数为奇数的点。

转移过程枚举是否加重边,然后考虑度数变化。

转移很长。。。

code
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 5e5+5;
int n;
LL f[N][3],g[3],A,B;
vector<int> e[N];

void dfs(int u,int fa)
{
	for(int v:e[u])
	{
		if(v==fa) continue;
		dfs(v,u);
		g[0]=f[u][0]+f[v][0]+A;
		g[1]=min({f[u][0]+min(f[v][0],f[v][2])+B,f[u][2]+min(f[v][2],f[v][0])+B,f[u][2]+f[v][1],f[u][0]+f[v][1],f[u][1]+min({f[v][0],f[v][1],f[v][2]})+A});
		g[2]=min({f[u][2]+min({f[v][0],f[v][1],f[v][2]})+A,f[u][0]+min(f[v][1],f[v][2])+A,f[u][1]+min(f[v][0],f[v][2]),f[u][1]+f[v][1]-B});
		f[u][0]=g[0]; f[u][1]=g[1]; f[u][2]=g[2];
	}
}

int main()
{
	freopen("analyse.in","r",stdin);
	freopen("analyse.out","w",stdout);
	scanf("%d%lld%lld",&n,&A,&B); A=min(A,B);
	for(int i=1;i<=n;i++) f[i][1]=f[i][2]=1e17;
	for(int i=1;i<n;i++)
	{
		int x,y; scanf("%d%d",&x,&y);
		e[x].push_back(y); e[y].push_back(x);
	}
	dfs(1,0);
	printf("%lld\n",min({f[1][0],f[1][1]-B,f[1][2]-B}));
	return 0;
}

T3 代数

生成函数,考虑子树大小的 \(k\) 次方的组合意义,\(n^k\) 的组合意义:\(n\) 个点任选 \(k\) 个,可重有序。

咕咕咕。。。

T4 组合

构造 \(26\) 个 \(1000\) 位的二进制数,使两两按位或得到的值不同。

咕咕咕。。。

标签:度数,25,min,int,2024.9,奇数,多校,nx,ny
From: https://www.cnblogs.com/ppllxx-9G/p/18444758

相关文章

  • 2024.9.28 模拟赛 CSP6
    模拟赛单\(log\)双\(log\)不如三\(log\)。T1一般图最小匹配简单dp,水。\(O(n^2)\)其实也是可反悔贪心的板子,可以\(O(n\log(n))\)做。考虑排序后求差分数组,就变成不能选相邻的。然后就是可反悔贪心板子。用双向链表(记录前驱后继)维护,然后放进堆里。板dp#include<b......
  • 20222313 2024-2025-1《网络与系统攻防技术》实验一报告
    1.实验内容本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个......
  • SHA256加密-前端 中 HMAC-SHA256的base64加密 和 md5加密
    1、 HMAC-SHA256的base64加密首先npminstallcrypto-js--save项目中使用12345import CryptoJSfrom 'crypto-js';  consthash=CryptoJS.HmacSHA256(zhuan, 'secret');//第一个参数为转换的字符串第二个参数有很多种可能看需要转换的格式consthas......
  • 20222326 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一、实验内容Linux基本操作的学习能熟练的熟悉文件修改、打开,查看文件夹内容能正常使用gdb、vi可以理解汇编语言、机器指令、EIP的内容等理解可执行文件和机器指令例如call指令反汇编指令objdump文件十六进制转换指令%!xxd与%!xxd-r逆向工程学习如何分析和......
  • 20222419 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容(1)了解了缓冲区溢出发展历史:红色代码、冲击波病毒、震荡波病毒、心脏出血、乌克兰断网、勒索病毒。(2)了解了缓冲区溢出漏洞的本质和危害:缓冲区溢出漏洞是由于程序没有进行严格的内存越界检查,导致数据溢出并覆盖相邻内存空间,从而可能被攻击者利用执行恶......
  • 20222317 2024-2025-1《网络与系统攻防技术》实验一实验报告
    一、实验内容本次实验的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们本次实验将学习两种方法运行这......
  • 掌握未来:2025年秋招LLM及多模态模型面试精华
    目录大模型常用微调方法LoRA和Ptuning的原理介绍StableDiffusion的原理为何现在的大模型大部分是Decoder-only结构如何缓解LLMs复读机问题为什么Transformer块使用LayerNorm而不是BatchNormTransformer为何使用多头注意力机制监督微调SFT后LLM表现下降的原因微调阶段样本......
  • 20222306 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容①Linux基础知识基本的shell命令(例如:ls、cd、cp、touch、cat、su等等)在Linux中熟练使用编译器gcc、调试器gdb,尤其是gdb调试指令(例如:设置断点break/clear、启用/禁用断点enable/disable、运行程序run、继续运行continue、单步代码跟入函数step、查看......
  • 2024.9.27 模拟赛 CSP5
    模拟赛无T1光题贪心,发现首先让最大的减\(4\),这样最优并且不会涉及向下取整,等到数据范围小了以后直接\(O(n^4)\)暴力枚举。code#include<bits/stdc++.h>usingnamespacestd;inta,b,c,d;intans=1e9;#definemx(x,y)(x>y?(x):(y))#definemi(x,y)(x<y?(x):(y......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛04
    前言T1签了。T2一眼后缀数组板子,但是复杂度是\(O(nq\log(n))\)的,极限数据本地\(4\)秒,但如果您会\(O(n)\)求后缀数组的话就直接过掉了,但赛时数据貌似纯随机,遂可以直接过掉,可以优化成\(O(n^2\log(n)+nq)\)或\(O(n^2\log(n)+q)\)的,赛时想打这个但是怕常熟大和上面区别......