题解 洛谷P3799 【妖梦拼木棒】】的更多相关文章

P3799 妖梦拼木棒 53通过 345提交 题目提供者orangebird 标签 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 暂时没有讨论 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数,a1,a2,……an(0<ai<=5000),代表每根木棒的长度. 输出格式: 一行一个整数,对1e9+7取模…
二次联通门 : luogu P3799 妖梦拼木棒 /* luogu P3799 妖梦拼木棒 用一个桶存下所有的木棒 美剧两根短的木棒长度 后随便乘一乘就 好了.. */ #include <algorithm> #include <cstdio> #define Mod 1000000007 #define Max 5000 void read (int &now) { now = ; register char word = getchar (); ') word =…
P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做由三种小段构成,中间的n-2段都是左右都被切断的断头,我们记做'\(X\)',最左边的一段和最右边的一段各有一个圆头,记做'('和')'.幽幽子吃饱后闲来无事,决定戏弄一下妖梦.她拿来了许多这样的三种小段木棒,来替换掉妖梦切下来的n段中的一部分,然后问妖梦一些问题.这些操作可以这样描述: \(1\)…
P3797 妖梦斩木棒 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的n-2段都是左右都被切断的断头,我们记做’X’,最左边的一段和最右边的一段各有一个圆头,记做’(‘和’)’.幽幽子吃饱后闲来无事,决定戏弄一下妖梦.她拿来了许多这样的三种小段木棒,来替换掉妖梦切下来的n段中的一部分,然后问妖梦一些问题.这些操作可以这样描述: 1 x C 将第…
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数,a1,a2,……an(0<ai<=5000),代表每根木棒的长度. 输出格式: 一行一个整数,对1e9+7取模 输入输出样例 输入样例#1: 4 1 1 2 2 输出样例#1: 1 说明 对于30%的数据 N<=5000 对于100%的数据 N<=100000 Solution 很显…
https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的n-2段都是左右都被切断的断头,我们记做’X’,最左边的一段和最右边的一段各有一个圆头,记做’(‘和’)’.幽幽子吃饱后闲来无事,决定戏弄一下妖梦.她拿来了许多这样的三种小段木棒,来替换掉妖梦切下来的n段中的一部…
妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int n,m; ],ans; inline void in(int &now) { ; ')Cget=getchar(); ') { now=now*+Cget-'; Cget=getchar(); } } int main() { in(n);int pos; ;i<=n;i++) in(pos)…
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数,a1,a2,……an(0<ai<=5000),代表每根木棒的长度. 输出格式: 一行一个整数,对1e9+7取模 输入输出样例 输入样例#1: 4 1 1 2 2 输出样例#1: 1 说明 对于30%的数据 N<=5000 对于100%的数据 N<=100000 木棍长度可以用桶存储…
一道水题 (还是做了一个小时,我太菜了 基本思路: 题里面说,4根棍子拼成一个正三角形(等边三角形) 若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\) 那很容易得到 (真的很容易): \(a=b=c+d\) 自然,我们只需枚举\(a\)的长度和\(c\)的长度就行了 长度最长才5k,木棍用桶按长度装一下,遍历的时候也方便. 代码要好好看完啊kora #include <bits/stdc++.h> #define c1(a) (a)//带参宏定义,本题不必写函数 #de…
题目大意 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?木棒长度都<=5000. 题解 根据容斥原理,三角形两条边分别由长度相等的单根木棒组成,另一条边由两条小于该边长的木棒构成.由此想到了乘法原理.我们设置一数组$a$记录长度为$i$的木棒有多少个,则对于一个边长$e$,选两条单边有$C_{a_e}^2=\frac{a_e(a_e -1)}{2}$种选法,另外两条构成一条边的木棍有$\sum_{i+j=e}a_i a_j$.像这样枚举即可. #include <cstdio…
妖梦斩木棒 思路: 略坑爹: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define maxm maxn<<2 int n,m,L[maxm],R[maxm],mid[maxm],dis[maxm]; bool xx[maxm],ll[maxm],rr[maxm]; struct AnsType { int dis; bool l,r,x; }; inline void in(int…
题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的n-2段都是左右都被切断的断头,我们记做’X’,最左边的一段和最右边的一段各有一个圆头,记做’(‘和’)’.幽幽子吃饱后闲来无事,决定戏弄一下妖梦.她拿来了许多这样的三种小段木棒,来替换掉妖梦切下来的n段中的一部分,然后问妖梦一些问题.这些操作可以这样描述: 1 x C 将第x个小段的木棒替换成C型…
题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的n-2段都是左右都被切断的断头,我们记做’X’,最左边的一段和最右边的一段各有一个圆头,记做’(‘和’)’.幽幽子吃饱后闲来无事,决定戏弄一下妖梦.她拿来了许多这样的三种小段木棒,来替换掉妖梦切下来的n段中的一部分,然后问妖梦一些问题.这些操作可以这样描述: 1 x C 将第x个小段的木棒替换成C型…
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师)的掌握程度 考完试有人说这题是马拉车,吓死我了 首先,你把数据读入之后,先用一个大法师把以每个节点为根的子树的大小和权值都预处理出来,方便待会剪枝 然后,你对以每个节点为根的子树,都判断一下以下条件(这时刚才处理的东西就有用了) ① 左子树和右子树的节点数是否相等 ② 左子树和右子树的权值是否相等…
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种是通过分成 多块后在每块上打标记以实现快速区间修改,区间查询的一种算法.根号 分治与其思路相似,将原本若一次性解决时间复杂度很高的问题分块去解 决来降低整体的时间复杂度. 例题 以本题举例子哈希冲突 本题作为论文的第一道题目,是一道很好的练习题,注意,本体给出的 \(value[i]\) 是 \(i…
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 LCP 长度数组 \(p\). 数据范围:\(1\le |a|,|b|\le 2\times 10^7\). 蒟蒻语 别的题解为什么代码那么长.讲解那么复杂?蒟蒻不解,写篇易懂一点的,希望没有错误理解. 注意:蒟蒻的下标是从 \(0\) 开始的. 蒟蒻解 定义 \(z(i) (i>0)\):后缀 \(…
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \(\max_{k=l_i}^{r_i}h_k=g_i\).求满足条件的 \(h_i\) 的方案数膜 \(998244353\). 数据范围:\(1\le T\le 20\),\(1\le l_i\le r_i\le n\le 9\cdot 10^8\),\(1\le g_i\le A\le 9\cdo…
洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积的讲解. 三位向量的运算 模长: 即向量长度,\(|\vec{a}|=\sqrt{x_a^2+y_a^2+z_a^2}\). 点积: 标量 \(\vec{a}\cdot\vec{b}=|\vec{a}||\vec{b}|\cos<\vec{a},\vec{b}>=x_ax_b+y_ay_b+z_a…
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) 互不相等.将糖果和药片一一对应,求 糖果能量大于药片 比 药片能量大于糖果 多 \(k\) 组的方案数. 数据范围:\(1\le n\le 2000\),\(0\le k\le n\). 萌新初学二项式反演,这是第一道完全自己做出来的题,所以写篇题解庆祝并提升理解. 有 \(\frac{n+k}{2…
洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\texttt{D x}\),删除第 \(x\) 个字母. \(\texttt{R x y}\),反转当前文本中的区间 \([x,y]\). \(\texttt{P x}\),输出初始文本中第 \(x\) 个字母在当前文本中的位置.特别地,若不存在,输出 \(0\). \(\texttt{T x}\),输…
By:Soroak 洛谷博客 知识点:模拟+暴力枚举 思路:题目中有提到闰年然后很多人就认为,闰年是需要判断的其实,含有2月29号的回文串,前四位是一个闰年那么我们就可以直接进行暴力枚举 一些小细节:1.需要判断它的月份是否超出122.每一个月份的日期可能不同3.闰年不需要判断,只需要把每年的2月都看为是29天就可以4.判断月份的时候,一定要%1000/100去判断,不然会出现1月和11月一样,10月被直接扔掉,2月和12月一样的情况(我就是这样得了60分).. #include<iostrea…
本文搬自本人洛谷博客 题目 本文进行了一定的更新 优化了 Markdown 中 Latex 语句的运用,加强了可读性 补充了"我们仍不曾知晓得 消失的 性质5 ",加强了推导的严谨性 介于使用了新的推导方法,调整了推导顺序 补充了关于线性筛的欧拉函数性质8 又又又又又 修改了部分错误(工程量太大,老是出错) 安利了 3b1b 的链接,虽然与本文章无关,但对我们的思维提升很有利 将欧拉函数的定义正确修改 减少了 \(ans(n)\) 推导公式的争议性,加强了推导过程的严谨性 更新了 py…
原题:洛谷P2959 不得不说这道题的图有点吓人,但实际上很多都没有用 通过题上说的“三岔路口”(对于每一个节点有三条连接,其中一条连接父节点,另外两条连接子节点)和数据,可以那些乱七八糟的路和牧场看成是一棵二叉树,又因为 “对任意一个节点来说,只有一条从节点1开始的路径可以到达” ,所以可以把1作为根节点.从而将题目转化为求一棵以1为节点的二叉树的深度. 核心算法:DFS 注意: 1.根节点的深度在此题中应该为1(节点1的实际意义是一个要算入答案的一个牧场) 2.有n个节点,他们之间的连接数应…
原题:洛谷P1562 这个题的原理和8皇后的原理是一模一样的,就是必须要用n个皇后把每一个行填满,同时满足每一列,每一行,每一条对角线只有一个棋子.但如果按照原来的方法暴打的话只有60分(优化亲测无效) 所以这个时候,我们可以用二进制来表示一波状态(可以类比状态压缩的二进制).从上面的条件来看,我们需要表示的量有:行.列.两条对角线(向左的和向右的),我们用一个状态的某一位的1表示这个状态的这个位置不能放(已经有棋子) 对于每一行: 我们可以用DFS的深度来减少需要表示状态.(也就是说不用管,见…
题面 洛谷P7114 字符串匹配 \(T\) 组测试数据.给定字符串 \(S\),问有多少不同的非空字符串 \(A\),\(B\),\(C\) 满足 \(S=ABABAB...ABC\) 且 \(A\) 中出现奇数次的字符数不多于 \(C\). 数据范围:\(1\le T\le 5\),\(1\le |S|\le 2^{20}\). 这估计是我场上唯一做出来的题目了,NOIP2020 游记 也不放洛谷博客里了. 提供一个 \(\Theta(n)\) 的做法,下标从 \(0\) 开始. 求出 \(…
题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y}(z+1)^2}\right)\bmod p \] 数据范围:\(1\le n\le 2.5\cdot 10^9\),\(9.9\cdot 10^8<p<1.1\cdot 10^9\). 蒟蒻语 一道题撑起一场月赛,良心又劲爆. 膜拜出题人 @SOSCHINA,@muxii. 蒟蒻解 开局一波猛…
DP康复训练题 原题:洛谷P1990 核心:递推/DP 题源应该是铺地砖,所以采用一摸一样的思路,只是有两种不同的方块 我们先用最最简单的方式尝试一下枚举当最后一行被填满的情况: 1.如果我们只用第一种长方形的方块让最后一行填满,那就只有两种情况: A.最后一列刚好是一个竖着的砖头: B.最后两列都是横着的砖头: 那这个时候我们先定义一个数组F,F的意思取fill,F[i]表示刚好把第i列填满时有多少种方法. 这样的话,因为我们现在只用了第一种方块,所以只可以得出一部分递推公式:F[x]=F[x…
题意:任选四段木板拼正三角形 因为是正三角形 所以我们可以想到至少是两个相同的,剩下两个拼成最后一条边 我们只需要枚举边长即可 那么我们对每次读入的x,使他的cnt++ 考虑用一个二重循环 外层枚举边长的长度 从2到5000 内层枚举用来拼成最后一条边的其他一根木板 一次循环对答案有贡献  当且仅当边长的cnt>=2且组成最后一条边的两根木棒的cnt全部>=1 可是我们很快发现 这样无法解决最后一条边由两根相同木棒组成的状态 这时候只需要直接特判处理,要求cnt>=2即可 在两边不等的时…
一道码量比较大的广搜题,但让我这个辣鸡小学生自闭了一天呜呜呜. 一开始看数据\(n,m \leq 1000\)也并不是特别大,于是用就开始用广搜乱水了. 由于这道题每走一步的代价不是\(1\),所以并不能保证每次广搜搜到的点就是最优解.所以我考虑用一个数组来\(h[i][j][sun][kill]\)维护一下. 其中的\({i,j,sun,kill}\)是记录一个状态,表示在走到点\((i,j)\)时是否有太阳花田和楼关剑.而\(h[i][j][sun][kill]\)则表示到达这个状态下的最短…
这一道题,我也是搞了很久才搞懂的(也就两个多小时). 感谢Rayment大佬的题解! 我们进入正题. 对于一个笼子里的动物,我们可以选择撤走或不撤走,可以用0和1来表示,很容易就想到二进制,想到状压dp(为什么先选dp,看数据想想吧). 观察题面,我们可以发现,小朋友最多可达五万人(动物园容得下吗...)!太大了,肯定不能来做状压dp. 不过,正当我们努力寻找更小的可以用来状压dp变量时,去忽略了题面上的一点: 每个小朋友站在大围栏圈的外面,可以看到连续的 5 个围栏 5,这个数字很小,可以用来…