首页 > 其他分享 >10.15

10.15

时间:2024-10-15 16:23:58浏览次数:1  
标签:ch int text fa LCA 10.15 define

A.小 ω 的距离

经典数据随机,期望每次减少一半,直接暴力往前跳就行。

B.小 ω 的匹配

读懂题了就很简单了,容易发现每行只有前 \(m\) 个数有用,于是我们得到一个 \(m\times m\) 的网格,第 \(i\) 行选择一个数 \(j\),使得这 \(m\) 个前缀的并等于这 \(m\) 个数的并,并且并集集合大小为 \(m\),这个东西直接搜大概是 \(m!\) 的,由于 \(m\) 最大为 \(10\),然后就过了。

C.小 ω 的树

赛时式子转化错了,一个半小时狂砍 \(0\) 分。
问:如果没转化错能切吗?
答:会切的!

首先运用乘法分配律把贡献拆开,然后树形 \(dp\)。
具体的,设 \(f_{x,i,j}\) 代表 \(x\) 子树内有 \(i\) 个未匹配的点且贡献为 \(1\)(后面称为不做贡献,因为是相乘),有 \(j\) 个未匹配点且贡献为对应的 \(a\),合并子树时分四种情况:作 \(\text{LCA}\) 且作贡献,作 \(\text{LCA}\) 且不做贡献,不作 \(\text{LCA}\) 且作贡献,不作 \(\text{LCA}\) 且不作贡献。

点击查看代码
#include <bits/stdc++.h>
#define fr first
#define se second
#define U unsigned
#define LL long long
#define pb push_back
#define pii pair<int,int>
#define pLi pair<LL,int>
#define pLL pair<LL,LL>
#define __ __int128
#define ld long double
#define VE vector<LL>
#define db double

using namespace std;

inline int read()
{
	int x = 0,f = 1;char ch = getchar();
	while(!isdigit(ch)) (ch == '-') && (f = -1),ch = getchar();
	while(isdigit(ch)) x = x*10+ch-48,ch = getchar();
	return x*f;
}

const int N = 110;
struct edge{int to,pre;}e[N<<1];
int a[N],las[N],cnt,siz[N],P;
LL tmp[N][N][2],g[N][N][2],f[N][N][N],s1[N][N],s2[N][N];

void add(int u,int v){e[++cnt] = {v,las[u]},las[u] = cnt;}

inline int mod(int x){return x >= P ? x-P : x;}

void D(int x,int fa)
{
	for (int i = las[x],y;i;i = e[i].pre)
		if ((y = e[i].to) != fa) D(y,x);
	g[0][0][0] = s1[0][0] = 1;
	for (int i = las[x],y;i;i = e[i].pre)
	{
		if ((y = e[i].to) != fa)
		{
			for (int u = 0;u <= siz[x];u++)
			{
				for (int v = 0;v+u <= siz[x];v++)
				{
					for (int p = 0;p <= siz[y];p++)
					{
						for (int q = 0;q+p <= siz[y];q++)
						{
							tmp[u+p][v+q][0] = (tmp[u+p][v+q][0]+g[u][v][0]*f[y][p][q])%P,
							tmp[u+p][v+q][1] = (tmp[u+p][v+q][1]+g[u][v][1]*f[y][p][q])%P;
							if (p)
								tmp[u+p-1][v+q][0] = (tmp[u+p-1][v+q][0]+g[u][v][0]*f[y][p][q]%P*p)%P,
								tmp[u+p-1][v+q][1] = (tmp[u+p-1][v+q][1]+g[u][v][1]*f[y][p][q]%P*p)%P;
							if (q) tmp[u+p][v+q-1][1] = (tmp[u+p][v+q-1][1]+g[u][v][0]*f[y][p][q]%P*q)%P;
							s2[u+p][v+q] = (s2[u+p][v+q]+s1[u][v]*f[y][p][q])%P;
						}
					}
				}
			}
			siz[x] += siz[y];
			for (int u = 0;u <= siz[x];u++)
				for (int v = 0;v+u <= siz[x];v++)
					g[u][v][0] = tmp[u][v][0],g[u][v][1] = tmp[u][v][1],tmp[u][v][0] = tmp[u][v][1] = 0,s1[u][v] = s2[u][v],s2[u][v] = 0;
		}
	}
	for(int u = 0;u <= siz[x];u++)
		for(int v = 0;v+u <= siz[x];v++)
			f[x][u][v] = mod(f[x][u][v]+g[u][v][1]),
			f[x][u][v] = (f[x][u][v]+g[u][v][0]*a[x])%P,
			f[x][u+1][v] = mod(f[x][u+1][v]+s1[u][v]),
			f[x][u][v+1] = (f[x][u][v+1]+s1[u][v]*a[x])%P,
			g[u][v][0] = g[u][v][1] = s1[u][v] = 0;
	siz[x]++;
}

int main()
{
	int n = read();P = read();
	for (int i = 1;i <= n;i++) a[i] = read();
	for (int i = 1,u,v;i < n;i++)
		u = read(),v = read(),add(u,v),add(v,u);
	D(1,0);
	cout << f[1][0][0];
	return 0;
}

D.小 ω 的画作

Dora's Paint
我打 \(\text{CF3500}\),真的假的?

标签:ch,int,text,fa,LCA,10.15,define
From: https://www.cnblogs.com/ZepX-D/p/18467767

相关文章

  • 2024.10.15人工智能学记3
    老师先讲了AI的定义:人工智能(AI)是计算机科学的一个分支,致力于创造能够模仿人类智能行为的机器或系统。这与教育学中的"智能”概念有些相似,但范围更广,包括感知、学习、推理、问题解决等能力。以及如何从教育者角度来理解AI?①规则基础系统-教学大纲和课程设置;机器学习-学生通过练......
  • 10.15 人工智能学习内容
    从教育者角度来理解AI1.规则基础系统(教学大纲和课程设置)2.机器学习(学生通过练习提高技能)3.深度学习(高阶思维能力的培养)【预训练】·扩充语料库·学生在正式教育前的知识积累【微调】·针对特定任务的专门训练·学科专业化【推理】·模型根据输入生成输出文本·学生解......
  • 10.15第三次课AI
    AI从教育者角度来理解AI规则基础系统→机器学习→深度学习教学大纲和课程设置;学生通过练习提高技能;高阶思维能力的培养预训练-扩充语料库-学生在正式教育前的知识积累微调-针对特定任务的专门训练-学科专业化推理-模型根据输入生成输出文本-学生解答问题的过程大语言......
  • 10.15 见习后的第一节课
    从教育者角度来理解ai规则基础系统→机器学习→深度学习(教学大纲和课程设置)(学生通过练习提高技能)(高阶思维能力的培养)预训练(扩充语料库。学生在正式教育前的知识积累。)→微调(针对特定任务的专门训练。学科专业化。......
  • python-黑马程序员 初学者笔记(持续更新10.15)
    序章:由于科研室鼓励我们发布csdn,因此我们将一起学习python,这是我的笔记给大家分享出来,这不适用于一点都不会的小白,如果你看过一次或者想要回顾一下python内容再或者你正学习pyhon,可以参考本片笔记,本文章的优势在于是初学者所写,可能对于我们来说有共鸣,比较详细,并且重要知识点都......
  • 2024.10.15 1132版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • mac10.15 突然 vscode打不开了?
    问题描述mac上vscode前一天还用的好好的,第二天突然软件都打不开了解决过程1、第一步:重启电脑(无效)2、第二步:卸载vscode重新安装(依旧无效)3、查阅百度上的方法全部无效百度了大半天都没有找到解决方案,最后参考git发现用户留言在mac上1.91版本会导致运行奔溃,最后安装1.......
  • macos 10.15系统下载包,macOS Catalina for mac
    macOSCatalina让你喜欢的种种Mac体验都更进一步。你可以领略音乐、播客这两款全新Macapp的表演;在Mac上畅享各款自己心爱的iPadapp;拿起iPad和ApplePencil,拓展工作空间,释放创意灵感;再打开那些平时常用的app,试试各种巧思妙想的新功能。现在,你在Mac上所做的一切,......
  • 私有云和多云管理平台 | Cloudpods v3.10.15 正式发布
    功能优化【主机】裸金属详情页增加部分属性信息【监控】优化告警策略,支持同时设置多监控指标【主机】支持透传设备自动探测【主机】LVM块存储支持快照【监控】简化Telegraf容器的挂载点【主机】新建VMware支持同时填写备注信息【存储】KVM支持对接LVM存储问题修......
  • 用于 VMware 的 macOS Catalina 10.15.5 可引导 iso 百度网盘 下载
    基于MAS原版app制作,安全无添加,无任何logo,文件体积小(xz压缩后不到350M),适合长期持有。版本:macOSCatalina10.15.5(19F96)-2020-05-26百度网盘链接:https://sysin.org/blog/macOS-Catalina-boot-iso/说明:两个压缩文件是一样的,一个zip一个xz格式。附:可用的VMware软件下载链接Server......