Loj #3093. 「BJOI2019」光线】的更多相关文章

Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\times a_i\%\) 单位的光会穿过它,有 \(x\times b_i\%\) 的会被反射回去. 现在 \(n\) 层玻璃叠在一起,有 \(1\) 单位的光打到第 \(1\) 层玻璃上,那么有多少单位的光能穿过所有 \(n\) 层玻璃呢? 输入格式 第一行一个正整数 \(n\),表示玻璃层数.…
题目:https://loj.ac/problem/3093 考虑经过种种反射,最终射下去的光线总和.往下的光线就是这个总和 * a[ i ] . 比如只有两层的话,设射到第二层的光线是 lst ,那么 \( lst' = ( lst + lst*b[2]*b[1] + lst*(b[2]*b[1])^2 + ... )*a[2] \) 考虑令 f[ i ] 表示 “从第 i 层下面射上来的单位光线在考虑第 i+1 层反射的情况下射下去的值” . \( f[i] = b[i]+a[i]*f[i-…
题面 传送门 题解 把\(a_i\)和\(b_i\)都变成小数的形式,记\(f_i\)表示\(1\)单位的光打到第\(i\)个玻璃上,能从第\(n\)个玻璃下面出来的光有多少,记\(g_i\)表示能从第\(i\)块玻璃反射出来的光有多少,,递推式的话,我们枚举一下这束光在\(i\)和\(i+1\)块玻璃之间反射了几次就可以了 \[ \begin{aligned} f_i &=a_i\left(f_{i+1}+g_{i+1}\times b_i\times f_{i+1}+g_{i+1}\time…
LOJ#3093. 「BJOI2019」光线 从下到上把两面镜子合成一个 新的镜子是\((\frac{a_{i}a_{i + 1}}{1 - b_{i}b_{i + 1}},b_{i} + \frac{a_{i}^{2}b_{i}}{1 - b_{i}b_{i + 1}})\) #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_p…
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的神器,试图借助神器的神秘 力量帮助她们战胜地灾军团. 在付出了惨痛的代价后,精灵们从步步凶险的远古战场取回了一件保存尚完好的神杖.但在经历过那场所有史书都视为禁忌的"诸神黄昏之战"后,神杖上镶嵌的奥术宝石 已经残缺,神力也几乎消耗殆尽.精灵高层在至高会议中决定以举国之力收集残存至今的奥术宝…
题目传送门:LOJ #3093. 题意简述: 有 \(n\) 面玻璃,第 \(i\) 面的透光率为 \(a\),反射率为 \(b\). 问把这 \(n\) 面玻璃按顺序叠在一起后,\(n\) 层玻璃的透光率. \(0 < a_i \le 1\),\(0 \le b_i < 1\). 题解: 题目中告诉我们,\(n\) 层的玻璃也有透光率,换句话说,多层的玻璃可能可以看作一层. 从这个角度思考,考虑已经求出了前 \(i - 1\) 层玻璃的透光率,如何求出前 \(i\) 层玻璃的透光率. 可以发…
题目传送门 传送门 题目大意 设$F_{n}$表示用$1\times 2$的骨牌填$2\times n$的网格的方案数,设$G_{n}$$表示用$1\times 2$的骨牌填$3\times n$的网格的方案数. 给定$l, r, k$,求$\frac{1}{r - l + 1}\sum_{i = l}^{r} \binom{F_{i}}{k}$. 给定$l, r, k$,求$\frac{1}{r - l + 1}\sum_{i = l}^{r} \binom{G_{i}}{k}$. 之前好像在…
题目:https://loj.ac/problem/3089 没想到把根号之类的求对数变成算数平均值.写了个只能得15分的暴力. #include<cstdio> #include<cstring> #include<algorithm> #define db double using namespace std; ,K=; ; ,c[N][K],fl[N]; db ans; ],nxt[N<<],vl[N],sm[N]; int l[N],v[N],dy[…
题目:https://loj.ac/problem/3094 弱化版是 AGC017C . 用线段树维护那个题里的序列即可. 对应关系大概是: 真实值的范围是 [ 1-m , n+m ] :考虑设偏移量 fx ,使得 a[ i ]+fx 是真实值.如果整体 +1 ,就 fx+1 . 因为要记录每个值的个数,所以 a[ i ] 最好都是非负的.那么令 fx 的初值是 -m ,a[ i ] 的最小值是 “最小的真实值 - fx ”,就是 1-m+m 了. 已经有了 a[ ] 的范围是 [ 1 , n…
题目:https://loj.ac/problem/3090 题解:https://www.luogu.org/blog/rqy/solution-p5320 1.用斯特林数把下降幂化为普通的幂次求和 2.找出通项公式,使得幂次变成二项式,进而将 [ l , r ] 的部分变成等比数列求和 3.模 998244353 下没有 \( \sqrt{5} \) ,所以“扩域”,就是把数表示成 \( a+b*\sqrt{5} \) :\( \sqrt{3} \) 也同理 注意扩域之后,不满足费马小定理,…
题目:https://loj.ac/problem/3092 同一个人的不同城堡之间没有什么联系,只是和<=m.所以对每个城堡的 s 个值排序,做一个 f[ i ][ j ] 表示第 i 个城堡花 j 的代价最大能得到多少收益. dp[ i ][ j ] 表示前 i 个城堡花 j 的代价的最大收益. dp[ i ][ j ] = max( dp[ i-1 ][ k ] + f[ i ][ j-k ] ) . 发现 f[ i ][ * ] 是一个分 s 段的函数.所以枚举 s 段即可.也就是把 f…
题面 传送门 题解 设\(dp_{i,j}\)表示前\(i\)座塔派了总共\(j\)个人的最大收益,转移显然 //minamoto #include<bits/stdc++.h> #define R register #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i…
LOJ#3094. 「BJOI2019」删数 之前做atcoder做到过这个结论结果我忘了... em,就是\([1,n]\)之间每个数\(i\),然后\([i - cnt[i] + 1,i]\)可以放一条线段,没被线段放的地方就是需要改的数的总和 之后我们线段树维护区间最小值以及个数 我们要注意如果+1后使得一个本来在\([1,N]\)的点越出了范围,那么就要把这个区间给删掉,-1同理,要加进来 值域开成\(N + 2M\)也就是\(4.5*10^{5}\)即可 #include <bits/…
LOJ#3092. 「BJOI2019」排兵布阵 这题就是个背包啊,感觉是\(nms\)的但是不到0.2s,发生了什么.. 就是设\(f[i]\)为选了\(i\)个人最大的代价,然后有用的人数只有\(s\)种 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define sp…
LOJ#3090. 「BJOI2019」勘破神机 为了这题我去学习了一下BM算法.. 很容易发现这2的地方是\(F_{1} = 1,F_{2} = 2\)的斐波那契数列 3的地方是\(G_{1} = 3,G_{2} = 11\)其中下标表示长度的\(\frac{1}{2}\),可以得到\(G_{3} = 4G_{2} - G_{1}\) 然后我们列一波特征根方程,可以得到 \(m = 2\)时 $$ \left{\begin{matrix} x_{1} = \frac{1 + \sqrt{5}}…
LOJ#3089. 「BJOI2019」奥术神杖 看见乘积就取log,开根号就是除法,很容易发现这就是一道01分数规划.. 然后建出AC自动机直接dp就行,判断条件要设成>0,因为起点的值是1,取完ln后是0 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define…
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生 活不可或缺的必需品!能充上电吗?现在就试试看吧!」 SHOI 概率充电器由 \(n-1\) 条导线连通了 \(n\) 个充电元件.进行充电时,每条导线是否可以导电以 概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经…
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \sum_{i=0}^{T-1} [(i\in A\pmod P)\land(i\in B\pmod Q)] \] 换言之,就是问有多少个小于 \(T\) 的非负整数 \(x\) 满足:\(x\) 除以 \(P\) 的余数属于 \(A\) 且 \(x\) 除以 \(Q\) 的余数属于 \(B\). 输…
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 $998244353 $ 取模. 输入格式 第一行三个正整数 \(n,Q,x\). 接下来 \(…
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k\).第一次修改之前及每次修改之后,都要求你找到一个同样长度为 \(n\) 的单调不降序列 \(B_1, \ldots , B_n\),使得 \(\sum_{i=1}^n (A_i −B_i)^2\) 最小,并输出该最小值.需要注意的是每次操作的影响都是独立的,也即每次操作只会对当前询问造成影响.为…
Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边.这里我们用一个有序数对 \((a, b)\)(其中 \(a < b\))来表示一条端点分别为顶点 \(a, b\) 的线段. 在游戏开始之前,小 W 会进行一些操作.每次操作时,他会选中多边形的两个互异顶点,给它们之间连一条线段,并且…
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 \(x\) 欧拉或者 \(x\) 木大表示有 \(x\) 个欧拉或者木大. 为了简化内容我们现在用字母表示喊出的话. 我们用数字和字母来表示一个串,例如:2 a 3 b 表示的串就是 aabbb. 一开始漫画中什么话都没有,接下来你需要依次实现 \(n\) 个操作,总共只有 \(2\) 种操作:…
Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\le L,1\le v\le n)\).这张图不是简单图,对于任意两个顶点 \((u_1,v_1),(u_2,v_2)\),如果 \(u_1<u_2\),则从 \((u_1,v_1)\) 到 \((u_2,v_2)\) 一共有 \(w(v_1,v_2)\) 条不同的边,如果 \(u_1\ge u_2\…
Loj #3057. 「HNOI2019」校园旅行 某学校的每个建筑都有一个独特的编号.一天你在校园里无聊,决定在校园内随意地漫步. 你已经在校园里呆过一段时间,对校园内每个建筑的编号非常熟悉,于是你情不自禁的把周围每个建筑的编号都记了下来--但其实你没有真的记下来,而是把每个建筑的编号除以 \(2\) 取余数得到 \(0\) 或 \(1\),作为该建筑的标记,多个建筑物的标记连在一起形成一个 \(01\) 串. 你对这个串很感兴趣,尤其是对于这个串是回文串的情况,于是你决定研究这个问题. 学校…
题意 LOJ #2359. 「NOIP2016」天天爱跑步 题解 考虑把一个玩家的路径 \((x, y)\) 拆成两条,一条是 \(x\) 到 \(lca\) ( \(x, y\) 最近公共祖先) 的路径,另一条是 \(lca\) 到 \(y\) 的路径.(对于 \(x, y\) 是 \(lca\) 的情况需要特殊考虑一下就行了) 这个求 \(lca\) 的过程用倍增实现就行了. 假设令到达时间为 \(at\) . 不难发现,在树上向上的路径满足 \(dep_u + at_u=d_1\) (深度…
loj#2483. 「CEOI2017」Building Bridges 链接 https://loj.ac/problem/2483 思路 \[f[i]=f[j]+(h[i]-h[j])^2+(sum[i-1]-sum[j])\] \[f[i]=f[j]+h[i]^2+h[j]^2-2*h[i]*h[j]+sum[i-1]-sum[j]\] \[sum[j]-f[j]-h[j]^2=(-2*h[j])*h[i]+sum[i-1]+h[i]^2-f[i]\] \[f[j]+h[j]^2-sum[…
题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他子树 所以对于一个节点x,有这样两种情况 x还没有被点亮,那么下一个被点亮的是x的一个儿子 x是叶子节点,那么下一个被点亮的是它的祖先,或者是它祖先的儿子 设f[i][j]表示点亮i之后回到i的第j个祖先的最小花费 设g[i][j]表示点亮i之后回到i的第j个祖先的另一个儿子的最小花费 然后从下到上,由儿…
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 这样做 . 把通配符设成 \(0\) 然后 . 别的按 \(\mathrm{ASCII}\) 码 给值 , 最后把他写成式子的形式 ... 后来发现太年轻了 qwq 先要做这题 , 那么先发现性质咯 : 存在一个长度为 \(len\) 的 \(border\) 当且仅当对于 \(\forall i…
题意 LOJ #2721. 「NOI2018」屠龙勇士 题解 首先假设每条龙都可以打死,每次拿到的剑攻击力为 \(ATK\) . 这个需要支持每次插入一个数,查找比一个 \(\le\) 数最大的数(或者找到 \(>\) 一个数的最小数),删除一个数. 这个东西显然是可以用 std :: multiset<long long> 来处理的(手写权值线段树或者平衡树也行). 对于每一条龙我们只能刚好一次秒杀,并且要恰好算血量最后为 \(0\)(一波带走). 然后就转化成求很多个方程: \[ \…
题面 LOJ#6435. 「PKUSC2018」星际穿越 题解 参考了 这位大佬的博客 这道题好恶心啊qwq~~ 首先一定要认真阅读题目 !! 注意 \(l_i<r_i<x_i\) 这个条件 !! 所以它询问的就是向左走的最短路了 . 不难发现只有两种策略 , 要么一直向左走 ; 要么第一次向右走 , 然后一直向左走 . 并且到一个定点 \(x\) 的最短路长度 肯定是从右向左一段段递增的 . 为什么呢 ? 不难发现 如果向右走两次 , 那么只有一次是一定有效的 , 另外一次的 \(l_i\)…