首页 > 其他分享 >「Solution Set」7/3

「Solution Set」7/3

时间:2023-07-03 22:44:17浏览次数:35  
标签:Set cur clone Solution len st fa ch

P4433 [COCI2009-2010#1] ALADIN

我们发现就是区间加一个等差数列,但是要取模后的。

我们考虑加一个首项为 \(A\),公差为 \(B\),项数为 \(n\) 的等差数列,还要对 \(C\) 取模。

那么和就是这样的:\(\sum\limits_{i=0}^{n-1} Bi+A-\lfloor\frac {Bi+A}{C}\rfloor \times C\)

然后前面两项能用通项求,后面能用类欧求和。

然后就是线段树普通操作了!

就是因为空间 64MB 所以需要离散化,然后处理起来挺麻烦的吧((

P6139 【模板】广义后缀自动机(广义 SAM)

我仍然不理解 SAM.jpg

就是在每插入一个串的时候将 lst 置成 \(1\) 就行。

但是需要判一下此时 \(lst\) 有没有向 \(c\) 的出边。如果有的话,那就不应当新建节点,而是直接在原来的基础上做

void add(char c)
{
	int p=lst;
	if(st[lst].ch.count(c))
	{
		int q=st[p].ch[c];
		if(st[q].len==st[p].len+1) lst=q;
		else
		{
			int clone=++tot; st[clone].len=st[p].len+1; st[clone].fa=st[q].fa;
			st[clone].ch=st[q].ch;
			while(p!=-1&&st[p].ch[c]==q) st[p].ch[c]=clone,p=st[p].fa;
			st[q].fa=clone; lst=clone;
		}
		return;
	}
	int cur=++tot;  st[cur].len=st[lst].len+1;
	while(p!=-1&&!st[p].ch[c]) st[p].ch[c]=cur,p=st[p].fa;
	if(p==-1) st[cur].fa=1;
	else
	{
		int q=st[p].ch[c];
		if(st[q].len==st[p].len+1) st[cur].fa=q;
		else
		{
			int clone=++tot; st[clone].len=st[p].len+1; st[clone].fa=st[q].fa;
			st[clone].ch=st[q].ch;
			while(p!=-1&&st[p].ch[c]==q) st[p].ch[c]=clone,p=st[p].fa;
			st[cur].fa=st[q].fa=clone;
		}
	}   
	ans+=st[cur].len-st[st[cur].fa].len;
	lst=cur;
}

CF204E Little Elephant and Strings

考虑在 SAM 节点上线段树合并,然后求出来每个点是不是出现了 \(k\) 次以上。如果出现了 \(k\) 次以上,那么在这个节点上的答案就是 \(len[p]-len[fa]\),否则就是从parent tree 上最近的节点的串的数量。

我应该还是不理解 SAM 的说。

P4609 [FJOI2016] 建筑师

我们考虑最高的那个一定不会被挡住,所以可以以最高的那个为分界点,之后左右两边分别分成 \(A+B+2\) 组,每组都是最大的能露出来放在第一个,正好相当于圆排列。

所以答案就是

${n\brack {A+B-2}}\times {A+B-2\choose A-1} $

P2664 树上游戏

我们考虑对于每个颜色 \(j\) 求出 \(f_{i,j}\) 表示从 \(i\) 开始走,不经过 \(j\) 号颜色的方案数。答案就是 \(sum_i=\sum n-f_{i,j}\)

然后我们考虑只求 \(g_i=\sum f_{i,j}\)。

我们遍历树的时候,\(p\) 节点的颜色是 \(i\),设从他到子树里别的节点不经过颜色 \(i\) 的节点数是 \(x\),那么这 \(x\) 个节点的 \(f_{v,i}=x\),所以求这个可以在记录每个点最近的子孙颜色相同的,然后树上差分。

[ABC284G] Only Once

你考虑从每个点开始是没有区别的,所以只需要算一个点的答案,然后乘 \(n\) 就行。

然后发现一定是先走一段直线,然后在一个环里循环。

那么可以先选出来会经过的点,然后枚举最先开始循环的位置,然后乱组合数一下

CF1342E Placing Rooks

首先可以知道如果所有都能被攻击到,那么肯定是每行都有或者每列都有。

那么算其中一种情况,乘 2 就行了。

发现 \(k>n\) 是一定无解。

然后发现一定是有 \(n-k\) 列有棋子,所以就是 \({n\choose {n-k}}{n\brace {n-k}} (n-k)!\)

标签:Set,cur,clone,Solution,len,st,fa,ch
From: https://www.cnblogs.com/cc0000/p/17524352.html

相关文章

  • 【cs 50】lab4 & problemset4 -ing
    (1)lab4-Smileyhelpers.c#include"helpers.h"voidcolorize(intheight,intwidth,RGBTRIPLEimage[height][width]){//Changeallblackpixelstoacolorofyourchoosingfor(inti=0;i<height;++i){for(intj=0;j<width;++......
  • Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
    有个需要是需要在安装包安装初始化时安装MicrosoftVisualc++2013Redistributable也就是判断软件安装前需不需要运行vcredist_x64.exe和VC_redist.x64.exe这两个程序第一反应就是可以通过注册表判断是否已经安装过环境但测试发现需求的两个版本不同,注册表位置竟然也不......
  • superset(二)基本使用详细示例以及superset权限控制介绍
    Superset系列文章superset(一)详细部署步骤(python3.7.15、windows11)及验证异常处理superset(二)基本使用详细示例以及superset权限控制介绍(文章目录)本文简单的介绍了superset的基本使用步骤的示例,以及superset的权限控制。本文部分数据来源于互联网。本文分为2个部分,即通......
  • django.db.models.query.QuerySet格式的数据输出
    1、deffindmtm2(request):importserializerimportjson#多对多跨表正向查询#res=softlist.objects.filter(hostlists__ip="10.116.6.177").values("softname")res2=softlist.objects.filter(hostlists__ip="10.116.9.233"......
  • 如何在JavaScript中使用Promise.allSettled()
    您是否曾经在JavaScript中使用过Promise,并且当有人拒绝并毁掉一切时感到沮丧?你编写了一些基于Promise的代码,一切都进展顺利,然后繁荣——一个小小的Promise被拒绝,整个链条就会崩溃。你的代码逐渐停止,你想知道为什么JavaScript不能忽略这个小问题并继续它的快乐之路。好......
  • Illiquid asset
    Definitionof'Illiquid'Thestateofasecurityorotherassetthatcannoteasilybesoldorexchangedforcashwithoutasubstantiallossinvalue.Illiquidassetsalsocannotbesoldquicklybecauseofalackofreadyandwillinginvestorso......
  • Definition of 'Cash Settlement( versus physical delivery of the reference obliga
    Definitionof'CashSettlement(versus physicaldeliveryofthereferenceobligation)Asettlementmethodusedincertainfutureandoptioncontractswhereby,uponexpiryorexercise,thesellerofthefinancialinstrumentdoesnotdelivertheactual......
  • Linux Subreaper 机制及内核态逃离方法(PR_SET_CHILD_SUBREAPER, prctl, systemed)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  由于某些其他的原因,我们在测试另外一个问题的时候发现了一个奇怪的现象:在我们一直朴素的认知下,如果一个程序创建了parent-process和child-......
  • SimpleDateFormat的setLenient(true或false)-----自动计算日期
    有时候我们需要判断用户的日期格式是否正确,虽然绝大多数会在前台处理,但是也有需要从文件流读入的情况,如果日期不合格就需要抛异常,这时候就需要禁止SimpleDateFormat的自动计算功能。此时就需要用到setLenient(),这个方法的含义是是否严格解析日期,具体用法如下。packagecom.test.......
  • autosys set global viriables
    http://www.unix.com/unix-advanced-expert-users/70182-autosys-variable.htmlHiAll,Ineedtoloadafilewhichhasadateinthename.Sortoflikethis:filename.20080619.datIcreatedanautosysvariablethathasthatdateasthevalue20080619whichnam......