【CZY选讲·Triangle】】的更多相关文章

题目描述 长度为的铁丝,你可以将其分成若干段,并把每段都折成一个三角形.你还需要保证三角形的边长都是正整数并且三角形两两相似,问有多少种不同的分法. 数据范围 1≤≤10^6 题解:      ①相似三角形一定可以找到最小的那个,称为这类相似三角形的基.      ②剩下就是一包夹杂容斥的递推:     ③设w[i]为长度为i的铁丝的分法,一种分法的所有三角形边长除以gcd(a,b,c)得到的三角形都一样,且三边互质,设边长为a',b',c'.      ④若M=a+b+c,M'=a'+b'…
题目描述 Hja特别有钱,他买了一个×的棋盘,然后Yjq到这个棋盘来搞事.一开始所有格子都是白的,Yjq进行次行操作次列操作,所谓一次操作,是将对应的行列上的所有格子颜色取反.现在Yjq希望搞事之后棋盘上有个黑色格子,问Yjq 有多少种搞事的方法. 数据范围 1≤,,,≤100000,0≤≤×M  题解:     ①先不考虑冗余操作(冗余操作定义:对同一个地方进行2次及以上操作)      ②设对行进行x操作,对列进行y次操作,那么得到等式: mx+ny-2xy=S ----->枚举x,则y…
题目描述 一个神秘的村庄里有4家美食店.这四家店分别有A,B,C,D种不同的美食.LYK想在每一家店都吃其中一种美食.每种美食需要吃的时间可能是不一样的.现在给定第1家店A种不同的美食所需要吃的时间a1,a2,…,aA.给定第2家店B种不同的美食所需要吃的时间b1,b2,…,bB.以及c和d.LYK拥有n个时间,问它有几种吃的方案. 数据范围 1<=n<=100000000,1<=A,B,C,D<=5000,0<=ai,bi,ci,di<=100000000. 此…
题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有点权. LYK想把这个图删干净,它的方法是这样的.每次选择一个点,将它删掉,但删这个点是需要代价的.假设与这个点相连的还没被删掉的点是u1,u2,…,uk.LYK 将会增加a[u1],a[u2],…,a[uk]的疲劳值. 它想将所有点都删掉,并且删完后自己的疲劳值之和最小.你能帮帮它吗? 数据范围: 数据保证任意两个点之间最多一条边相连,并且不存在自环. 1<=n,m,ai<=10000…
题目描述 有一个n*m的矩阵,恰好改变其中一个数变成给定的常数P,使得改变后的这个矩阵的最大子矩阵最大. 数据范围 n,m<=300. 题解:    ①如果没有p,那么二维矩阵和就是一维最长连续子序列的DP升级就可以了:      设f[i][j][k]表示在i行j行之间1~k列这一个矩形中的最大子矩阵的值      转移方程:f[i][j][k]=max(f[i][j][k-1]+sum[k],sum[k])      其中sum[k]表示(i,k)-(j,k)这一段一维序列的元素和.  …
题目描述 Yjq想要将一个长为宽为的矩形棺材(棺材表面绝对光滑,所以棺材可以任意的滑动)拖过一个L型墓道. 如图所示,L型墓道两个走廊的宽度分别是和,呈90°,并且走廊的长度远大于. 现在Hja想知道对于给定的,,,最大的是多少,如果无论如何棺材都不可能通过,则输出"My poor head =(" . 数据范围  1≤,,≤10^4. 题解:      ①三分法求下凸函数极值.       ③具体就是求靠外直角的那条斜边到内拐角点的距离,然后比较和宽的大小就可以说明能够通过了…
题目描述 LYK最近在研究逆序对. 这个问题是这样的. 一开始LYK有一个2^n长度的数组ai. LYK有Q次操作,每次操作都有一个参数k.表示每连续2^k长度作为一个小组.假设 n=4,k=2,则a[1],a[2],a[3],a[4]为一个小组,a[5],a[6],a[7],a[8]为一个小组, a[9],a[10],a[11],a[12]为一个小组,a[13],a[14],a[15],a[16]也为一个小组. 然后LYK对于每个小组都翻转,也就是说原数组会变成 a[4],a[3],…
题目描述 一个N*M的棋盘,’.’表示可以通过,’#’表示不能通过,给出Q个询问,给定起点和终点,判断两点是否联通,如联通输出“Yes”,否则输出“No”. 数据范围 N,M <=500,Q <=10^6. 题解:        ①由于存在两个方向和不可逆性,标记联通分量的方法不可行        ②分治算法.按照行将棋盘一分为二,进行DP处理:                           用f[i][j]表示点(i,j)与中线上每个点的联通性,可用bitset压位处理.     …
题目描述 给出两个仅有小写字母组成的字符串str1 和str2,试求出两个串的最长公共子序列. 数据范围 |str1| ⩽ 1000; |str2| ⩽ 10^6 题解:    ①直接进行LCS(或者nlogn优化)爆炸了.     ②尝试利用本体特点:|str1|很小.     ③相当于答案不超过1000,那么就将数组下标和所存的东西调换,得到:    f[i][j]表示匹配到s1[i],公共子序列长度为j时,s2匹配到的最小的位置.    再记录next[i][j]表示当前在s2的i位…
题目描述 给定n个数ai,求sgcd(a1,a1),sgcd(a1,a2),…,sgcd(a1,an). 其中sgcd(x,y)表示x和y的次大公因数.若不存在次大公因数,sgcd(x,y)=-1. 数据范围 n<=10^5,ai<=10^12. 题解:      ①关键在于快速求出次大公因数.      ②次大公因数sgcd=gcd/p  p为gcd的最小质因子      ③由于每次运算都与a1有关,因此先将a1进行素数分解,得出gcd后枚举a1素因子找到最小的能够整除gcd的即可 #…