首页 > 其他分享 >2023.2.17 LGJ Round

2023.2.17 LGJ Round

时间:2024-02-17 15:34:27浏览次数:39  
标签:LGJ 方案 le s2 s1 mid 2023.2 区间 Round

A

一个字符串,你要选最多的区间出来,满足两两不交,且右边的区间必须是左边区间的严格子串。
\(n\le 5e5\).

注意到答案是 \(\sqrt n\) 级别的。
那么我们设计一个 dp,设 \(f_{i,j}\) 表示 \([j,j+i-1]\) 这个区间以及右边是否能选出 \(i\) 个。
转移只需要检查大区间减去左端点/右端点后的字符串是否存在。
可以用 Hash 来计算。只能通过 \(n\le 1e5\).
事实上我们可以设计另一种状态\(f_i\) 表示以 \(i\) 开头右边能选多少个区间。
考虑二分答案 \(mid\),检验 \(f_j\ge j-1\) 且 (\(lcp(i,j)\ge mid-1\) 或 \(lcp(i+1,j)\ge mid-1\)).
然而我们可以用 SA,转化为 \(rk_j\) 在某区间内,\(j\in [i+mid,n]\) 的最大值。

B

一张无向图(\(n\le 16,m\le n(n-1)/2\)),你需要把每条边重定向,使得从 \(1\) 出发的能到的点集和从 \(2\) 出发的能到的点集有交集。
求方案数取模 \(1e9+7\).

考虑用总方案数减去不合法方案数。
设 \(1\) 能到的点集 \(s1\),该点集里的边的方案数为 \(f_{1,s1}\),\(2\) 同理。
\(s1,s2\) 向外的边必须定向到自身。不在 \(s1,s2\) 的边可以任选。
设一个点集边内部的总数为 \(E(S)\)。不合法方案数是 \(\sum _{s1,s2} f_{1,s1}\times f_{2,s2}\times 2^{E(V-s1-s2)}\).
设我们求 \(f_{x,S}\),还是总方案数减去不合法方案数。
不合法的是:设从 \(x\) 出发仅能到达 \(T\),\(T\) 向外的边必须定向到自身,其他边可以任选。
那么其贡献 \(f_{x,T}\times 2^{E(S-T)}\).枚举子集即可。

C

有 \(n\) 个点,每个点有黑白两种颜色,有些点没被确定颜色。
边是有向边,只能从小的点通向大的点,且两点颜色相反。
问所有合法路径数是奇数的图多少个。

标签:LGJ,方案,le,s2,s1,mid,2023.2,区间,Round
From: https://www.cnblogs.com/Simon-Gao/p/18018030

相关文章

  • Codeforces Round 926 (Div. 2) 总结
    A题意:给出一个数组,让你重新排序,\(\sum_{i=1}^{n-1}a_i-a_{i+1}\)最大。做法:显然从小到大排序即可,答案就是最大值减去最小值。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e6+5,MOD=998244353;signedmain(){ios::sync_with_s......
  • round 3
    A.给定长、宽、高,计算体积#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){inta,b,c;cin>>a>>b>>c;cout<<a*b*c;}signedmain(){ios::sync_with......
  • Codeforces Round 926 (Div. 2) DEF
    D.SashaandaWalkintheCity题意:给定一棵树,问不存在三个点属于同一条路径的点集个数。\(f[x]\)表示,最近公共祖先为\(x\)的合法非空集数量。如果选\(x\),那么只能为不选子树或选一棵子树,否则\(u\insubtree[y_1]\),\(v\insubtree[y_2]\)与\(x\)共链。?贡献为\(......
  • 2023.2.16 LGJ Round
    A你有一个数组\(a\),初始为\(0\),你要使\(a_i\geh_i\),你可以把任意相邻两个\(a\),一个加一,另一个加二。问最少操作多少次。\(n,h\le1e6\)。B你需要求大小为\(n\)的环的个数,使得旋转后都不同。你可以选若干个点出来染上\(k\)个颜色中的一个,但是相邻两个点不能都能染颜......
  • Codeforces Round 926 (Div. 2) 赛后总结
    这场比赛掉了前三场比赛上的分,望周知。SashaandtheBeautifulArray题目大意:一个有n个数的数组,对n个数进行排序,求数组中ai-ai-1(下标从2到n)的和的最大值。分析列出来和式,为an-an-1+an-1-an-2……-a1最后得到an-a1那么an最大,a1最小即可。很容易想到排序。#include<i......
  • Codeforces Round 926 (Div. 2)(A~D)
    目录ABCDA输出最大值减最小值,或者排序算一下答案#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#definepiipair<int,int>#definelllonglong#definedb......
  • Codeforces Round 926 (Div. 2) 题解
    比赛链接:https://codeforces.com/contest/1929官解链接:https://codeforces.com/blog/entry/125943出的很差的一场。推歌CF1929A.SashaandtheBeautifulArray题意任意排列数组\(a_{1..n}\),求\(\sum_{i=2}^n(a_i-a_{i-1})\)的最大值。题解见过最显然的A题,奠定了......
  • Codeforces Round 926 (Div. 2)
    A-SashaandtheBeautifulArray给出的是差分的和,显然等于最后一个减掉第一个,于是答案为最大值减最小值。SubmissionB-SashaandtheDrawing观察到:前几次操作可以使答案\(+2\),之后每次只能让答案\(+1\)。手玩一下发现最优方案是先填满第一列,再从最后一列第二行填到倒......
  • Codeforces Round 906 (Div. 2)
    A.Doremy'sPaint3对于式子\(b_1+b_2=b_2+b_3=\dots=b_{n-1}+b_n=k\),从中挑出\(b_i+b_{i+1}=b_{i+1}+b_{i+2}\),得到\(b_i=b_{i+2}\),这就意味着所有奇数位置上的数需要相等,所有偶数位置上的数也需要相等。对于\(n\)个数而言,有\(\lceil\frac{n}{2}\rc......
  • ZOI round1 数轴
    不错的思维题。为了将问题一般化,令\(N=0\),若\(N\ne0\),则可以将\(N\)视为原点,令\(x_i\leftarrowx_i-N\)。我们要求解走\(t\)个\(1\)单位从原点走到\(x\)的方案数。显然,走\(1\)单位可以走到\(1,-1\)。同样,走\(2\)单位可以走到\(2,0,-2\),其中走到\(0\)的方......