bzoj4013: [HNOI2015]实验比较

Java配置文件全解析:从Properties到YAML,Spring Boot配置实战指南 在软件工程中,配置文件是实现应用外部化配置和解耦的核心机制,它允许开发者在不修改代码的情况下调整程序行为。其原理是将可变参数从硬编码中剥离,存储于外部文件,通过特定格式(如键值对、标记语言)进行组织。这一技术价值在于提升应用的灵活性、可维护性和环境适应性,广泛应用于数据库连接、服务端口、日志级别等场景的配置管理。在Java生态中,配置文件格式历经演变,从基础的Properties文件到结构化的XML,再到如今Spring Boot推崇的YAML,每种格式都有其适用场景。本文聚焦于**Spring Boot配 阅读详情

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4013

思路:首先把等于的缩成一个点,由好的向坏的连边,有环肯定无解。

然后题目里说“小 D都最多只记住了某一张质量不比 i 差的另一张图片 Ki”

那就是每个点就最多只有一条入边,那存在合法方案的图就一定是森林。

加一个虚根,这可以树形DP了。

假设f[i][j]表示i号点的子树中的所有点构成的有且只有j个小于号的序列的个数

那么考虑怎么合并两个子树的答案

假设现在的两个儿子是x,y,子树大小分别为siz[x],siz[y]

枚举两个儿子的序列小于号个数i,j。

那么合并出来的新序列小于号个数k就在max(i,j)到i+j之间。

那么问题就是求对于k个盒子,有i个白球,j个黑球,求有多少种方案。

答案就是f[x][i]*f[y][j]*C[k][i]*C[i][j-(k-i)]    C是组合数。

实现的时候,再开一个g数组,g[i]就是之前的儿子的子树的点构成的小于号为j个的序列方案数

注意儿子合并完后,因为新加了当前点,序列长度要+1


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int maxn=105,maxm=205,mod=(int)(1e9+7);
typedef long long ll;
using namespace std;
int n,m,pre[maxm],now[maxn],son[maxm],tot,fa[maxn],cnt,deg[maxn],siz[maxn];char op[3];
ll c[maxn][maxn],f[maxn][maxn],ans,g[maxn];
bool bo[maxn];
struct node{int x,y;}li[maxn];
void add(int a,int b){pre[++tot]=now[a],now[a]=tot,son[tot]=b,deg[b]++;}
int getfa(int x){return x==fa[x]?x:fa[x]=getfa(fa[x]);}

bool dfs(int x,int fa){
	bo[x]=1;bool fir=1;
	for (int y=now[x];y;y=pre[y]) if (son[y]!=fa){
		if (bo[son[y]]) return 0;
		if (!dfs(son[y],x)) return 0;
		if (!fir){
			memset(g,0,sizeof(g));
			for (int i=1;i<=siz[x];i++) if (f[x][i])
				for (int j=1;j<=siz[son[y]];j++) if (f[son[y]][j])
					for (int k=max(i,j);k<=i+j;k++)
						g[k]=(g[k]+f[x][i]*f[son[y]][j]%mod*c[k][i]%mod*c[i][j-(k-i)]%mod)%mod;
			siz[x]+=siz[son[y]];
			for (int i=1;i<=siz[x];i++) f[x][i]=g[i];
		}
		else{
			fir=0,siz[x]=siz[son[y]];
			for (int i=1;i<=siz[son[y]];i++) f[x][i]=f[son[y]][i];
		}
	}
	if (x){
		siz[x]++;if (fir) f[x][1]=1;
		else for (int i=siz[x];i>=1;i--) f[x][i]=f[x][i-1];
	}
	return 1;
}

int main(){
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++) fa[i]=i;
	for (int i=0;i<=n;i++) c[i][0]=1;
	for (int i=1;i<=n;i++) for (int j=1;j<=i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
	for (int i=1,x,y;i<=m;i++){
		scanf("%d%s%d",&x,op,&y);
		if (op[0]=='='){fa[getfa(x)]=getfa(y);continue;}
		if (op[0]=='>') swap(x,y);
		li[++cnt]=(node){x,y};
	}
	for (int i=1;i<=cnt;i++){
		int x=li[i].x,y=li[i].y;
		if (getfa(x)!=getfa(y)) add(getfa(x),getfa(y));
		else return puts("0"),0;
	}
	for (int i=1;i<=n;i++) if (!deg[getfa(i)]) add(0,getfa(i));
	if (!dfs(0,-1)) return puts("0"),0;
	//for (int i=1;i<=n;i++) printf("%d %lld\n",i,f[0][i]);
	for (int i=1;i<=siz[0];i++) ans=(ans+f[0][i])%mod;
	printf("%lld\n",ans);
	return 0;
}



实战测评:4大搜索API(You.com/Tavily/Exa/Perplexity)谁更适合你的AI项目?附Python调用代码 本文实战测评了You.com、Tavily、Exa和Perplexity四大搜索API在AI项目中的集成应用,详细对比了它们的技术特性和Python调用方法。针对LLM实时数据需求,You.com的优化设计表现突出,支持32k大上下文窗口和快速响应。文章提供了完整的代码示例和场景化选型建议,帮助开发者高效集成搜索API到AI项目中。 阅读详情

相关推荐

用PY32F003F18的PWM互补输出驱动无刷电机,保姆级配置流程(含代码)

本文详细介绍了如何利用PY32F003F18微控制器的TIM1定时器配置PWM互补输出功能来驱动三相无刷电机,涵盖硬件设计、代码实现及六步换相算法。通过保姆级配置流程和实用代码示例,帮助开发者快速掌握无刷电机驱动技术,适用于工业自动化和消费电子等领域。

weixin_26905487的博客 379

P3243 [HNOI2015]菜肴制作(思维 + 拓扑排序+反图)

接下来考虑 33 时有 (4,3)(4,3) 的限制,所以接下来先制作 44 再制作 33,从而最终的顺序是 1,5,2,4,31,5,2,4,3。例 1 里,首先考虑 1,因为有限制 (3,1) 和 (4,1),所以只有制作完 3 和 4 后才能制作 1,而根据 3 号又应尽量比 44 号优先,所以当前可确定前三道菜的制作顺序是 3,4,13,4,1;例 1:共 4 道菜肴,两条限制 (3,1)、(4,1),那么制作顺序是 3,4,1,2。在满足所有限制的前提下,1 号菜肴尽量优先制作。

zhi6fui的博客 503

Vue3+uniapp开发必备:5分钟搞定unplugin-auto-import自动导入配置(附常见报错解决)

本文详细介绍了在Vue3+uniapp项目中配置unplugin-auto-import插件实现自动导入的方法。通过该配置,开发者无需手动导入ref、onLoad等常用API,可显著提升编码效率和团队协作规范性。文章提供了从安装、TypeScript集成到高级用法的完整指南,并附带了常见报错的解决方案。

weixin_29008805的博客 961

[BZOJ4010][HNOI2015]菜肴制作(拓扑排序+堆)

看到题目,可以想到拓扑排序。但是如果要求字典序最小的排列,那就错了。 可以举出反例:44种菜肴,限制为<2,4><3,1><2,4><3,1>, 那么字典序最小的是2,3,1,42,3,1,4,但题目要求的最优解是3,1,2,43,1,2,4。 继续考虑,可以发现,如果最后一个数字在合法范围内尽可能大,那么这样是绝对有利的。 因为如果设最后一个数字是xx,那么除了xx之外的所有数都不会被放到

女装的你,如此好看! 371

open-web UI 实用指南

open-web UI 类似于chatgpt的界面,可以私有化模型本地部署,也可以用商业模型.本文只是用开源模型. 它以实现多模态AI聊天 , AI 翻译 , 语音转文本, 文本转语音, 文生图,代码助手,可谓利器。

szmars的博客 3万+

大宗农产品交易知识图谱推理引擎的构建--需求分析

大宗农产品交易知识图谱推理引擎的构建 一、项目概述 ​ 进入信息时代,全球产生的数据量爆炸式增长,一方面数据产生的方式发生改变,由手工产生越来越多地转为自动化生成,另一方面,人类的活动也越来越依赖数据;民以食为天,粮食方面的信息数据对人类来说至关重要,而当前繁杂的数据已经超出了人工处理的范围,这就对数据采集和数据处理提出了新的要求。 知识图谱是将大量收集的数据整理成机器能处理的知识库,并实现可视化的展示。知识图谱本质上是一种大规模的语义网络,其主要目的是对真实世界里的实体或概念之间的关联关系进行描述;构造

qq_40583949的博客 2586

拓扑排序三题(菜肴制作&杂物&最大食物链计数)

DAG:有向无环图 图的建立很重要 一、【HNOI]2015菜肴制作 传送门1 思路&技巧:倒过来看,因为要让尽可能小的数字先选,也就是大的后选,整个图倒着建,先选最大的、入度为0的点,输出时再倒过来。 #include<iostream> #include<queue> #include<cstring> using namespace std; const int M=1e5+6; int ct,T,n,m,head[M],inc[M],...

**祺的博客 308

DeepSeek-OCR安装部署文档和避坑指南,包含大多数人遇到的安装报错问题

DeepSeek-OCR安装部署指南摘要:本文详细介绍高性能OCR工具DeepSeek-OCR的安装流程,支持多语言识别和复杂场景文字提取。系统要求包括Linux/Windows/macOS操作系统,推荐NVIDIA显卡(显存≥6GB)和≥16GB内存。安装步骤涵盖:1)创建conda虚拟环境;2)安装PyTorch等核心依赖;3)解决常见问题如CUDA版本冲突、模型下载慢等。提供GPU内存不足等问题的解决方案,帮助开发者快速部署OCR服务。(149字)

yolo模型训练找我,AI游戏合作找我 2947

[HNOI2015]实验比较

[HNOI2015]实验比较 题目描述 题目首先给出了一个基环外向树,于是我们先缩环。一个环必须全部由\(=\)连接,否则答案为\(0\)。 缩了环过后就是一棵树了。 乍一看以为是经典的有序表合并问题,直接用组合数学搞定。可是题目中一个合法的序列可以存在\(=\)。这样我们\(DP\)就是了。 设\(g_{i,j,k}\)表示一个长度为\(i\)的有序表和一个长度为\(j\)的有序表,合并过后有\...

weixin_33885253的博客 223

模拟量输入功能块 S_ITR(Easy系列PLC完整ST源代码)

IN Input INT 输入数字量 1IN ISH INT 输入数字量上限 2IN ISL INT 输入数字量下限 3IN OSH REAL 输出工程量上限 4IN OSL REAL 输出工程量下限 5OUT OUTPUT REAL 输出工程量 6VAR temp1 REAL 临时变量1 7VAR temp2 REAL 临时变量2 8。

RXXW_Dor的博客 716

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2092

BZOJ 4013: [HNOI2015]实验比较

挺不错的题啊 然而本蒟蒻一开始一脸懵逼..

cgh_Andy's Blog 492

西安交通大学软件学院——分布式系统练习题(综合题)

摘要:本文探讨了分布式系统的核心特性与关键问题。首先阐述了分布式系统的8种透明性特性,包括访问、定位、迁移等。然后通过具体案例分析了分布式事务的回滚机制、域名解析的迭代与递归过程、不同分布式系统的异同比较。重点讨论了RPC通信中客户端/服务器崩溃的处理方法,包括消灭、再生和到期三种策略。最后介绍了Lamport时间戳算法在进程通信中的应用及问题解决方案。全文涵盖了分布式系统设计中的透明性、可靠性、一致性等核心问题。

qq_73044452的博客 204

bzoj4013:[HNOI2015]实验比较

传送门 好神的树形dp啊! 首先考虑=的情况,显然可以将他们缩成一个点 然后<号可以建出一棵树或者森林来,特判一下成环就无解 由于有可能出现森林,考虑新建一个根,然后跑tree dp 我们可以设用\(f[i][j]\)表示以\(i\)为根的子树中分为\(j\)个不等的段的方案数。 然后发现就是一个背包,转移的时候考虑合并 假设合并后长度为\(len\),那么\(f[i][len]=f[x][...

weixin_30580943的博客 112

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

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

BZOJ 4013: [HNOI2015]实验比较【树形DP】

题目传送门 分析: 直接贴dalao博客。。 其实还是比较好想,只不过判环的时候。。。 于是后来终于想起来判环的标准方式。。。 一个vis数组标记有没有访问,一个inq数组标记是否在这次的搜索栈中,如果访问到在栈中的点就说明有环,退出dfs时出栈 bool check(int u){ vis[u]=inq[u]=1; for(int i=fir[u];i;i=nxt[i]) if(inq[...

Master.Yi的博客 194

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

BZOJ4013: [HNOI2015]实验比较

先并查集合并‘=’,因为所有的Xi互不相同,所以合并完后应该是一个森林,如果出现环就无解。我们新建一个根连向所有入度为0的点,就变成了一棵树,考虑树形DP。因为只要两点不是其中一点是另一点的祖先的关系,他们就可以划‘=’因为大小关系不确定,所以将‘=’连接的看做一块,f[i][j]f[i][j]表示以ii为根的子树分成了jj块转移的话,不合并块就是排列组合问题,如果合并块的话,假设不同子树的ii个块

L_0_Forever_LF的专栏 816

bzoj 4013: [HNOI2015]实验比较

Description 小D 被邀请到实验室,做一个跟图片质量评价相关的主观实验。实验用到的图片集一共有 N 张图片,编号为 1 到 N。实验分若干轮进行,在每轮实验中,小 D会被要求观看某两张随机选取的图片, 然后小D 需要根据他自己主观上的判断确定这两张图片谁好谁坏,或者这两张图片质量差不多。 用符号”<“、”>“和”=“表示图片 x和y(x、y为图片编号)之间的比较: 如果上下文...

weixin_30588907的博客 88

bzoj 4013: [HNOI2015]实验比较 (树形DP+组合数学)

4013: [HNOI2015]实验比较 Time Limit: 5 Sec  Memory Limit: 512 MB Submit: 511  Solved: 254 [Submit][Status][Discuss] Description 小D 被邀请到实验室,做一个跟图片质量评价相关的主观实验。实验用到的图片集一共有 N 张图片,编号为 1 到 N。实验分若干轮进行,在每轮

clover_hxy的博客 424

【BZOJ】4013: [HNOI2015]实验比较

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4013 中第i 条涉及的图片对为(KXi, Xi),判断要么是KXi < Xi ,要么是KXi = Xi,而且所有的Xi互不相同 这就很关键了,把相等的点统计起来作为一个点,$<$号就表示一条边,对应的状态图就变成了一棵树,然后树形DP即可。 令${...

weixin_30852451的博客 104

BZOJ4013: [HNOI2015]实验比较(DP)

传送门 题解: 首先不等关系是一颗树, 可以直接树上DP。 有个很妙的转化是把一个序列看做对每个数分配排名。 然后记fi,jfi,jf_{i,j}表示iii子树有jjj个排名的方案数, 然后问题就变为了如何合并两个排名序列。 把一个排名看做一个球,相当于有iii个白球jjj个黑球,合并为kkk个球的方案数为(ki)(ij−(k−i))(ki)(ij−(k−i))\binom{k}{i} \...

DZYO的博客 292

BZOJ4013 : [HNOI2015]实验比较

首先用并查集将等号缩点,然后拓扑排序判断有没有环,有环则无解,否则通过增加超级源点$0$,可以得到一棵树。 设$f[x][y]$表示$x$子树里有$y$种不同的数字的方案数,由底向上DP。 对于当前点$x$,依次遍历它的所有儿子$y$,设以$x$为根的子树里之前已经有了$s[x]$个点,$y$子树里有$s[y]$个点,那么枚举之前部分里数字种类数$A$,$y$子树里数字种类数$B$,以及合并后...

weixin_34310127的博客 109
上一篇: bzoj4011: [HNOI2015]落忆枫音
下一篇: bzoj3571: [Hnoi2014]画框
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值