洛谷题面传送门 我竟然独立切掉了这道题!incredible! 纪念我逝去的一上午(NOIP 总时长 4.5h,这题做了我整整 4.5h) 首先讲一下现场我想的 80 分的做法,虽然最后挂成了 65 分,但大概率是被卡常了( 注意到虽然点数高达 \(\prod\limits_{i=1}^kw_i\),但每一维我们都可以单独考虑,具体来说,我们设 \(tim_{i,j}\) 表示只考虑 \(c_k=i\) 的 \(k\),当前第 \(i\) 维坐标是 \(j\),最少需要多少步才能离开场地,\(t…
题目大意:给你$n(n\leqslant2000)$个点,要你求$n-1$次经过这$n$个点的多项式在$k$处的值 题解:$Lagrange$插值:$$f_x=\sum\limits_{i=1}^ky_i\prod\limits_{j=1,j\not=i}^k\dfrac{x-x_j}{x_i-x_j}$$卡点:无 C++ Code: #include <algorithm> #include <cstdio> #define maxn 2010 const int mod = 9…
题意 题目链接 Sol 记得NJU有个特别强的ACM队叫拉格朗,总感觉少了什么.. 不说了直接扔公式 \[f(x) = \sum_{i = 1}^n y_i \prod_{j \not = i} \frac{k - x[j]}{x[i] - x[j]}\] 复杂度\(O(n^2)\) 如果\(x\)的取值是连续的话就前缀积安排一下,复杂度\(O(n)\) #include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10…
[洛谷5437][XR-2]约定(拉格朗日插值) 题面 洛谷 题解 首先发现每条边除了边权之外都是等价的,所以可以考虑每一条边的出现次数. 显然钦定一条边之后构成生成树的方案数是\(2*n^{n-3}\).可以直接\(purfer\)序列算. 也可以发现每一条边的出现次数相等,树的总数是\(n^{n-2}\),每次出现\(n-1\)条边,每条边又是等价的. 也可以算出上面这个值. 于是要算的东西就变成了 \[\displaystyle \sum_{i=1}^n\sum_{j=i+1}^n(i+j…
洛谷题面传送门 神仙题,放在 D1T2 可能略难了一点( 首先显然对于 P 型机器人而言,将它放在 \(i\) 之后它会走到左边第一个严格 \(>a_i\) 的位置,对于 Q 型机器人而言,将它放在 \(i\) 之后它会走到右边第一个 \(\ge a_i\) 的位置,为了避免分类讨论我们可以假定 \(a_0=a_{n+1}=\infty\).看到这个状态我们可以设计出一个区间 \(dp\),\(dp_{l,r,x}\) 表示 \([l,r]\) 中的柱子最大值为 \(x\),并且有 \(a_{l…
题目大意:$n$ 个点的完全图,点 $i$ 和点 $j$ 的边权为 $(i+j)^k$.随机一个生成树,问这个生成树边权和的期望对 $998244353$ 取模的值. 对于P5437:$1\le n\le 998244352,1\le k\le 10^7$. 对于P5442:$1\le n\le 10^4,\le k\le 10^7$. 其实也是一道比较简单的题.(所以就应该把这题和上一道原题调个位置) 考虑一条边在生成树中出现的概率,由于一共有 $\dfrac{n(n-1)}{2}$ 条边,一…
题面传送门 考虑容斥.我们记 \(a_i\) 为钦定 \(i\) 个人被 B 神碾压的方案数,如果我们已经求出了 \(a_i\) 那么一遍二项式反演即可求出答案,即 \(ans=\sum\limits_{i=k}^{n-1}a_i(-1)^{i-k}\dbinom{i}{k}\),于是现在问题转化为怎样求 \(a_i\).首先我们肯定要从另外 \(n-1\) 个学生中选出这 \(i\) 个,方案数 \(\dbinom{n-1}{i}\),其次,根据"碾压"的定义,这 \(i\) 个学生…
题目:https://loj.ac/problem/2473 https://www.luogu.org/problemnew/show/P4365 参考:https://blog.csdn.net/xyz32768/article/details/82952313 https://zhang-rq.github.io/2018/05/04/%E4%B9%9D%E7%9C%81%E8%81%94%E8%80%832018-%E7%A7%98%E5%AF%86%E8%A2%AD%E5%87%BBC…
题面 传送门 前置芝士 拉格朗日插值,多项式多点求值 题解 首先根据拉格朗日插值公式我们可以暴力\(O(n^2)\)插出这个多项式,然而这显然是\(gg\)的 那么看看怎么优化,先来看一看拉格朗日插值的公式 \[f(x)=\sum_{i = 1}^{n} y_i \prod_{i \not = j} \frac{x - x_j}{x_i - x_j}\] 转化一下 \[f(x)=\sum_{i = 1}^{n}{ y_i\over \prod_{i \not = j}{x_i - x_j}} \…
[Luogu4781][模板]拉格朗日插值 题面 洛谷 题解 套个公式就好 #include<cstdio> #define ll long long #define MOD 998244353 #define MAX 2020 inline int read() { int x=0;bool t=false;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=t…
BZOJ 洛谷 待补.刚刚政治会考完来把它补上了2333.考数学去了. DP: 首先把无序化成有序,选严格递增的数,最后乘个\(n!\). 然后容易想到令\(f_{i,j}\)表示到第\(i\)个数,当前选的是\(j\)的价值和.复杂度是\(O(nA)\)的.然后忘掉这个做法吧这个做法没前途. 上面这个做法最后还要\(O(A)\)求一遍和,感觉不够优美. 直接令\(f_{i,j}\)表示选了\(i\)个数,选的最大的数\(\leq j\)的价值和.转移为:\(f_{i,j}=f_{i,j-1}+…
BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{k=j}^{n-1}f[i-1][k]\times C_k^{k-j}\times C_{n-1-k}^{R_i-1-(k-j)}\times g[i]\] 就是先从\(k\)人中选出\(k-j\)在\(i\)这门课比B神得分高,然后再从剩下\(n-1-k\)个人中选\(R_i-1-(k-j)\)个…
BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张亵渎,每次不会改变: 因某个怪物死亡引发的亵渎不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\). 贡献不妨写成:\(\sum_{i=1}^ni^{m+1}-\sum_{i=1}^mA_i^{m+1}\).注意此时的\(A_i\)是剩下的空格(具体看代码最底下的暴力部分吧). 所以问题在于求\(\sum_{i=1}^ni^{m+1}\).自然数幂和有很多种求法. 这里写插值做法: \(\su…
[BZOJ4559]成绩比较(动态规划,拉格朗日插值) 题面 BZOJ 洛谷 题解 显然可以每门课顺次考虑, 设\(f[i][j]\)表示前\(i\)门课程\(zsy\)恰好碾压了\(j\)个\(yyb\)的方案数. 那么,思考转移,显然是原来碾压了\(k\)个人,但是在考虑到这一门课程的时候有些人没被碾压了, 所以转移就是\(f[i][j]=f[i-1][k]*C_k^j*C_{n-k-1}^{n-rank[i]-j}*P[i]\) 大致的含义就是,原先\(zsy\)碾压了\(k\)个人,但是…
洛谷传送门 板题-注意一下求多个数的乘积的逆元不要一个个快速幂求逆元,那样很慢,时间复杂度就是O(n2log)O(n^2log)O(n2log).直接先乘起来最后求一次逆元就行了.时间复杂度为O(nlog+n2)=O(n2)O(nlog+n^2)=O(n^2)O(nlog+n2)=O(n2) 这样的拉格朗日插值是预处理O(n2)O(n^2)O(n2),插入O(n)O(n)O(n),查询O(n)O(n)O(n)的.使用的前提是可以求逆元. CODE #include<cstdio> #inclu…
P1519 穿越栅栏 Overfencing 69通过 275提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 USACO是100分,洛谷是20分 为什么只有十分 题目描述 描述 农夫John在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个"完美的"迷宫:即你能从迷宫中的任意一点找到一条走出迷宫的路.给定迷宫的宽度W(1<=W<=38)及高度…
洛谷1117 棋盘游戏 题目描述 在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子.现在给出一个初始棋盘和一个最终棋盘,要求你找出一个最短的移动序列使初始棋盘变为最终棋盘. Klux说:“这么简单的题目,我都会做!” 输入输出格式 输入格式: 第1到4行每行四个数字(1或者0),描述了初始棋盘 接着是一个空行 第6到9行每行四个数字,描述了最终棋盘 输出格式: 输出文件的只有一行是一个整数n,表示最少的移动步数. 输入…
洛谷题目传送门 关于LCT的问题详见我的LCT总结 思路分析 首先分析一下题意.对于每个弹力装置,有且仅有一个位置可以弹到.把这样的一种关系可以视作边. 然后,每个装置一定会往后弹,这不就代表不存在环么? 于是,一个森林的模型被我们建出来了. 考虑到有修改弹力值的操作,也就是要断边和连边,于是用LCT维护. 思路一 每一个点向它弹到的位置连边.如果被弹飞了,那么这条边就不存在. 查询弹飞的步数,就是查询该点到其所属原树中根节点的路径的\(size\). 注意此题的一些特性.我们并不需要查询或者更…
今天我们的考试就考到了这道题,在考场上就压根没有思路,我知道它是一道dp的题,但因为太弱还是写不出来. 下来评讲的时候知道了一些思路,是dp加上二分查找的方式,还能够用单调队列优化. 但看了网上的许多代码和博客都觉得不太明白单调队列的应用,看来真的还是太菜了. 单调队列掌握不熟练(其实什么也不知道了,虽然之前是讲过的) 那就换一种思路,不用单调队列,二分+dp其实就能搞出来. 怎么能看出这道题是二分的呢?其实因为可以分析数据看出,花费的数量是成单调递增的,满足二分是单调性的情况,所以我们可以用二…
usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&&filter dfs:简化多重循环,枚举点对与判环 洛谷OJ P1209 [USACO1.3]修理牛棚 Barn Repair P1444 [USACO1.3]虫洞wormhole P3650 [USACO1.3]滑雪课程设计Ski Course Design P2693 [USACO1.3]号码锁…
今天不BB了,直接帖原题吧  地址>>https://www.luogu.org/problem/show?pid=1732<< 题目描述 香穗子在田野上调蘑菇!她跳啊跳,发现自己很无聊,于是她想了一个有趣的事情,每个格子最多只能经过1次,且每个格子都有其价值 跳的规则是这样的,香穗子可以向上下左右四个方向跳到相邻的格子,并且她只能往价值更高(这里是严格的大于)的格子跳. 香穗子可以从任意的格子出发,在任意的格子结束, 那么她最多能跳几次? 输入输出格式 输入格式: 第一行n,m,…
BZOJ原题链接 洛谷原题链接 贪心或树形\(DP\)都可做,但显然\(DP\)式子不好推(因为我太菜了),所以我选择贪心. 很显然从根出发主干走最长链是最优的,而剩下的点每个都需要走两步,所以用除去走最长链的步数的剩余步数除\(2\)(下取整)就是剩余能走的点数. #include<cstdio> using namespace std; const int N = 110; const int M = N << 1; int fi[N], di[M], ne[M], de[N]…
次元传送门:洛谷P1070 思路 一开始以为要用什么玄学优化 没想到O3就可以过了 我们只需要设f[i]为到时间i时的最多金币 需要倒着推回去 即当前值可以从某个点来 那么状态转移方程为: f[i]=max(f[i],f[i-k]+val-cost[now]); now表示从now这个工厂来 cost表示在now买下了机器人 val为从now走i个单位时间路上可收集的总金币 代码 #include<iostream> #include<cstring> using namespac…
[CF995F]Cowmpany Cowmpensation(多项式插值) 题面 洛谷 CF 题解 我们假装结果是一个关于\(D\)的\(n\)次多项式, 那么,先\(dp\)暴力求解颜色数为\(0..n\)的所有方案数 这是一个\(O(n^2)\)的\(dp\) 然后直接做多项式插值就好了,公式戳这里 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu…
题目来源:洛谷P1052 思路 一开始觉得是贪心 但是仔细一想不对 是DP 再仔细一看数据不对 有点大 如果直接存下的话 显然会炸 那么就需要考虑离散化 因为一步最大跳10格 那么我们考虑从1到10都跳一遍 所以最大公倍数为2520 那么我们就可以枚举两个石头中间的长度mod 2520 即可缩短总长度 详细见代码 代码 #include<iostream> #include<algorithm> using namespace std; #define maxn 350000 #d…
洛谷P1032:https://www.luogu.org/problemnew/show/P1032 思路 初看题目觉得挺简单的一道题 但是仔细想了一下发现实现代码挺麻烦的 而且2002年的毒瘤输入是什么鬼啊 连组数都没有的真的好吗 这道题参考了题解才完成 需要用到我从来没有用过的map来判重 然后就是广搜+string的一些自带函数运用 PS:这道题本地测试数据时要用Ctrl+Z+回车才可以出ans 代码 #include<iostream> #include<cstdio>…
洛谷P4180:https://www.luogu.org/problemnew/show/P4180 前言 这可以说是本蒟蒻打过最长的代码了 思路 先求出此图中的最小生成树 权值为tot 我们称这棵树中的n-1条边为“树边” 其他m-n+1条边为“非树边” 枚举每条非树边(x,y,z)添加到最小生成树中 可以在x,y之间构成一个环 设x,y之间的路径最大值为val1 次大值为val2(val1>val2) 则有以下两种情况 当z>val1时 则把val1对应的边换成(x,y,z) 得到一个候…
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为 \(n\),高为 \(m\) 的二维平面,其中有 \(k\) 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟…
洛谷题目链接:[APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一个村庄.每条道路的长度均为 1 个单位. 为保证该地区的安全,巡警车每天要到所有的道路上巡逻.警察局设在编号 为 1 的村庄里,每天巡警车总是从警察局出发,最终又回到警察局. 下图表示一个有 8 个村庄的地区,其中村庄用圆表示(其中村庄 1 用黑色的 圆表示),道路是连接这…
洛谷 这题一看就是卡塔兰数. 因为\(cnt[1] \leq cnt[0]\),很显然的卡塔兰嘛! 平时我们推导卡塔兰是用一个边长为n的正方形推的, 相当于从(0,0)点走到(n,n)点,向上走的步数不能超过向右走,求出的方案数就是卡塔兰数. 即总方案\(-\)不合法方案 -> \(\frac{C_{2n}^{n}}{n+1}\). 这题只是改成了从(0,0)走到(n,m)点,那么就是:\(C^{m+n}_{n}-C^{m-1}_{m+n}\). 因为涉及到除法取模,所以要求逆元. 刚刚好201…