题解
文章平均质量分 80
yusen_123
这个作者很懒,什么都没留下…
展开
-
OSU!题解(概率dp)
对于到i点的每一个l,如果第i+1点为1,那么会新增分数3*l^2+3*l+1;(p代表截止到i获得长度l的概率);)表示截止到i所获得的分数;原创 2024-07-16 08:45:36 · 219 阅读 · 0 评论 -
亚瑟王(概率dp)
如果第i张牌发动:f[i][j]+=f[i-1][j-1]*(1-s[i][r-j+1]);答案为g[i]*d[i](1<=i<=n),出现的概率*相应的概率,即为期望伤害。如果第i张牌不发动:f[i][j]+=f[i-1][j]*s[i][r-j];原创 2024-07-15 21:47:55 · 778 阅读 · 0 评论 -
P1850换教室 题解(概率dp)
1.上节课申请:f[1][i-1][j-1]+1.0*dis[c[i]][c[i-1]]*(1-k[i])*(1-k[i-1])+1.0*dis[c[i]][d[i-1]]*(1-k[i])*k[i-1]1.上节课申请:f[1][i-1][j]+k[i-1]*dis[c[i]][d[i-1]]+1.0*(1-k[i-1])*dis[c[i]][c[i-1]];2.上节课不申请:f[0][i-1][j]+dis[c[i]][c[i-1]];c[i],d[i],k[i]和题意里相同含义;原创 2024-07-14 17:24:22 · 859 阅读 · 0 评论 -
Bag of mice(概率dp)
2.当先手未取到白鼠,先手要向赢,后手也不能取到白鼠,跑掉的那一只随意。概率dp,设f[a][b]为白鼠为a个,黑鼠为b个时,赢的期望。1.当先手取到白鼠时 a/(a+b);原创 2024-07-13 11:31:51 · 310 阅读 · 0 评论 -
奖励关(概率dp+状压)
枚举每个物品z,当前物品可取时,f[i][j]+=max(f[i+1][j|(1<<(z-1))]+w[z],f[i+1][j])/n;设f[i][j]为已进行了i-1次选择,状态为j,采用最优策略的期望值。不可取时 f[i][j]+=f[i+1][j]/n;概率dp题,因为最多只有15个物品,考虑状压。进行第i次选择时,每个物品等概率出现。最后答案为f[1][0];原创 2024-07-12 23:39:26 · 266 阅读 · 0 评论 -
216. Rainbow的信号(数学期望)
当v=1时,z[k]=r-z[k],对答案的贡献是((z[k]-1)*(2^(k+1))+2^k)/(n*n);当v=1,x[k]=x[k],对答案贡献为((r-x[k]-1)*2^(k+1)+2^k)/(n*n);v=1,y[k]=r,对答案贡献((y[k]-1)*2^(k+1)+2^k)/n*n;当v=0时,z[k]=z[k],对答案贡献是2*(k+1)*z[k]/(n*n);v=0,y[k]=y[k],对答案贡献y[k]*2^(k+1)/n*n;当v=0,x[k]=r,对答案贡献为0;原创 2024-07-12 17:53:51 · 677 阅读 · 0 评论 -
P4859 已经没有什么好害怕的了(二项式反演+dp)
题录:P4859 已经没有什么好害怕的了 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)原创 2024-02-28 16:21:37 · 566 阅读 · 0 评论 -
906. 区间分组(贪心)
每次输入l,r区间让l*2,r*2+1存入同一个数组;注意:当l=r时,要先计算左点。可以想到是求区间最厚的地方。原创 2024-02-10 11:22:54 · 408 阅读 · 0 评论 -
破阵子(三分+凸包旋转卡壳)
输入一个正整数T(T<=10),表示有T组数据,每组数据包括一个n(n<=10000),表示有n个点,每行包括每个点的坐标 (x,y) (-100000<=x,y<=100000),速度向量 (vx,vy) (-1000<=vx,vy<=1000)他们每个点的位置和每个点的速度向量,现在求在哪个时刻的时候,他们的special dis 最小,并输出这个距离。平面上有n个点,每个点有各自的速度向量,现在给出0时刻,在同一时刻,平面点的最远距离叫做special dis。但发现dis不一定随时间增大而增大,原创 2023-12-06 20:01:38 · 88 阅读 · 0 评论 -
珍珠项链(kmp)
小H得到了一条珍珠项链,上面有五颜六色的珍珠。小H想知道这条珍珠的价值是多少?珍珠有从'a'至'z',共26种颜色。珍珠项链的价值为这条珍珠项链前缀出现的次数×该前缀的长度的最大值。原创 2023-11-14 23:57:26 · 89 阅读 · 0 评论 -
23ccpc(最长上升子序列题解)
你原本有一个 1 到 n 的排列但是不慎地你遗忘了它但是你记得以 第i个位置 结尾的最长上升子序 列的长度数组 an 现在希望你能够构造一个符合条件的排列 p 如果不存在符合上述条件的排列 p 则输出 −1。这里定义以 第i位置 结尾的最长上升子序列的长度为符合以下条件的整数数组 id 中 k 的最大值。1 ≤ id1 < id2 < id3 < · · · < idk = i pid1 < pid2 < pid3 < · · · < pidk 本题输入输出量比较大请选手注意。原创 2023-11-06 22:00:28 · 299 阅读 · 0 评论 -
G. Inscryption(贪心)
You are lost deep in the forest. The only thing that is still accompanying you is your stoat. It has an initial attack of 11. It is your only Beast at the beginning.A single path revealed itself before you. On the path are n event marks. Every event mark f原创 2023-11-03 21:57:54 · 189 阅读 · 0 评论 -
一种异或游戏(题解:分析+思维)
当n-cna>=m-cnb时,Bob会先出和Alice手里一样的的牌,这种情况是Alice赢,特俗情况是n-cna==m-cnb&&cnb>1&&cna>1,这时候Bob会赢。当n-cna<m-cnb,也就是说Alice会先出他想保留的牌,一般是Bob赢,但如果cna<=1,只剩一张,Alice出了这一张,会直接结束游戏,Alice赢。a[i]^b[j]=k,b[j]=a[i]^k,对于每个a[i],我们求a[i]^k,判断条件就变成了a[i]==b[j];原创 2023-10-31 22:23:01 · 166 阅读 · 0 评论 -
又放学辣(进阶)(两次二分或两次后缀和)(小白80D)
(a[i]-t)的和(t为二分的量),如果cnt<k,说明答案小于t,否则大于t;最开始有一次循环b[a[i]-1]++,表示大于a[i]的数+1;第一次差分(从后往前):b[i]代表大于i的数有多少个;第二次差分(从后往前):b[i]代表大于i总共有多少。时间复杂度为:n*log(n)*log(n)对于check函数,我们要统计cnt=我们将b[x]代表大于x的总人数;求最大值的最小值,=》二分;原创 2023-10-31 19:25:43 · 197 阅读 · 0 评论 -
有限小数题解(进制转换+某进制判断是否为无限小数)
给定一个 A 进制下的分数 a/b,小蓝想把它化为 B 进制下的小数 c。现在他想知道这个小数是不是一个有限小数。原创 2023-10-22 23:45:44 · 206 阅读 · 0 评论 -
求 k 整除最大元素和(dp)
将n个数取余分到0-(k-1)数组内,然后dp,dp[i][j]代表前0-i内的数相加,余数为j的最大值。接下来是 n 行,每行是一个正整数 num_i,表示数组中第 i 个数。第一行是两个正整数 n,k:表示数组的长度,以及被整除的除数 k。最后的数字可能很大,所以结果需要对 19260817 取模。使得其和值能被 k 整除,输出和值最大的那个和值。给你一个整数数组,请你在其中选取若干个元素,能被 k 整除的元素最大和。原创 2023-10-22 21:12:05 · 168 阅读 · 0 评论 -
股神(dp或贪心)
/d能获得最大现金,p是能获得最大股票。由于数据比较小,我们可以用dp,设d【i】为当前能获得最大现金,p[i]为当前能获得最大股票。对于a[i]<a[i+1]并且当前拿的是现金,我们买股票可以获得更大现金。a[i]>a[i+1],拿的是股票,在这点卖,可以获得当前最大现金。之后一行 n 个小数 a_i,表示之后 n 天每天股票的价格。a[i]<a[i+1],拿的是股票,就到下一个点,在这点不卖。a[i]>a[i+1],拿的是现金,不买。原创 2023-10-22 19:43:07 · 211 阅读 · 0 评论 -
Exam Results (尺取)
我们可以先存一下每个成绩和它的位置,排下序,尺取一下,每次进入一个最大值,删减掉过小的值。统计当前区间(x*%p,x)有多少人。最开始的的区间人数一定>=n(保证x最小时也要取得到,因为最初人数<n,x是不可能取到的)。假如我们选取了x,我们需要找到在x*%p和x之间有多少个数。原创 2023-10-17 22:37:12 · 205 阅读 · 0 评论 -
区间查找题解(优先队列+二分)
给定两个长度为 n 的数组 A 和 B,对于所有的 ai+bj 从小到大排序,并输出第 L 个到第 R 个数。二分找大于等于第L-1个相加数的最小数(二分时有个小技巧,可以在o(n)的时间复杂度下求<=x的数有多少)。找到大于等于第L-1个相加数的最小数x,统计每个序列<=x有多少个数;注意:当第l-1和之后的若干个数相等时,cnt>l-1,我们可以先输出cnt-l+1个x,再更新下l;对于每一个序列,我们维护一个最小值,用优先对列,当某一行一个数被输出,我们就让这行下一值进入优先队列。原创 2023-10-11 16:11:35 · 220 阅读 · 0 评论 -
洛谷1631 序列合并(优先队列)
对于每一个序列,我们维护一个最小值,用优先对列,当某一行一个数被输出,我们就让这行下一值进入优先队列。序列 ,A,B,在 A,B 中各取一个数相加可以得到 N2 个和,求这 N2 个和中最小的 N 个。对于 100%100% 的数据,1≤N≤105,1≤ai,bi≤109。一行 N 个整数,从小到大表示这 N 个最小的和。对于 50%50% 的数据,N≤103。看的题解,n^2个和,可以分成n个序列。第二行 N 个整数 1…第三行 N 个整数 1…第一行一个正整数 N;有两个长度为 N 的。原创 2023-10-09 21:49:26 · 155 阅读 · 0 评论 -
A game题解(博弈论)
n为奇数时的答案和n=1时答案一样,我们只分析一根木棍,对于一根木棍,只要他能分段,他就一定能一次分到不能再分的段数,所以枚举段数(2,m/k),只要找到一个可以分得段数,Macle赢。由于每根木棍都相等,所以sg(m)都一样,所以当n为偶数时,n个值异或为o,Macle必败。当n为奇数时,只剩一个sg(m),用了sg模板会超时,只能手动分析了。注意:可能是数据问题,枚举段数从大到小枚举,从小到大会超时。原创 2023-10-09 20:52:00 · 84 阅读 · 0 评论 -
序列和题解
求每一个序列的和sum,然后求这个序列去除每一个a[i]其余的和,如果这个和是第一次出现,记录下来,若果这个和已经出现过一次,第二次出现(第一次和第二次不在同一个序列)记录下来,然后遍历和。Catly有k个序列,每个序列有ni个元素,Catly想知道是否在k个序列中有两个序列,p和q,只要删除p中一个元素和q中一个元素,能使得q中元素和等于q中元素和。接下来有2*k行,一行为ni(1<=ni<=2e5)代表第i个序列有多少个元素,数据保证k<=n1+...+nk<=2e5。这题可能数据有点弱。原创 2023-10-01 20:09:33 · 128 阅读 · 0 评论 -
214. Devu和鲜花题解(容斥原理+费马小定理求逆元)
Devu 有 N� 个盒子,第 i� 个盒子中有 Ai�� 枝花。同一个盒子内的花颜色相同,不同盒子内的花颜色不同。Devu 要从这些盒子中选出 M� 枝花组成一束,求共有多少种方案。若两束花每种颜色的花的数量都相同,则认为这两束花是相同的方案。结果需对 109+7109+7 取模之后方可输出。原创 2023-09-29 19:50:52 · 114 阅读 · 0 评论 -
线段树(无名二)
因为每次只加一,所以不会出现上一次当前区间mi>0,这次mi<0.每次操作1时,当mi==0,说明需要改变sum,进行单点修改。2 l r 询问 [l,r]中的sum(a[i]/b[i]);long long ask(int o, int l, int r, int ql, int qr)//求区间维护值。void change(int o, int l, int r, int ql, int qr)//区间修改。void modify(int o, int l, int r)//单点修改。原创 2023-09-27 22:11:12 · 63 阅读 · 0 评论 -
windy数(数位dp模板)
windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。windy想知道,在A和B之间,包括A和B,总共有多少个windy数?原创 2023-09-25 05:06:37 · 83 阅读 · 0 评论 -
库特鸽鸽的时间分配(题解)
dp,f[i][j]=f[i-1][j-0]+f[i-1][j-1]+f[i-1][j-2]+f[i-1][j-3]+........+f[i-1][j-a[i]],如果种情况一一列举会超时。第i个的时间是0-a[i],那前n-1个的时间情况是j-a[i]~j,是连续的,如果用前缀和,让f[i][j]表示前i个时间不超过j时的情况,f[i][j] = f[i][j] + f[i - 1][j] - f[i - 1][j - a[i] - 1](这是j>a[i]的情况),少一层循环,时间复杂度o(n*k)。原创 2023-09-24 01:44:21 · 50 阅读 · 0 评论 -
数树题解(小白月赛78)
来源:牛客网。原创 2023-09-16 22:24:38 · 60 阅读 · 0 评论 -
第k小的值(题解)
来源:牛客网。原创 2023-09-16 22:14:18 · 105 阅读 · 0 评论 -
一道图论一(最小生成树kruskal)
给定一个包含 n 个节点和 m 条边的图,每条边有一个权值。你的任务是回答 k 个询问,每个询问包含两个正整数 s 和 t 表示起点和终点,要求寻找从 s 到 t 的一条路径,使得路径上权值最大的一条边权值最小。原创 2023-09-13 21:48:53 · 45 阅读 · 0 评论 -
校门外的树-林大版-广搜
这种题,广搜,如果重复到一个点时,进行的操作会重复,就标记一下,只进行一次;如果每次进队列需要操作数相当,就不用优先队列。(但我还是用了优先队列)输入n,a ,b(0<=a,b<=n<=5000),表示共有n棵松树;小松鼠想要从a到b;林大的松树水平排成一行,每棵松树有1个编号,从0开始到n结束!九条可怜想知道:松鼠从A 树到B 树最少需要移动几步?(3) 使用乾坤大挪移跳一步,坐标乘2;(1) 向右走一步,坐标+1;(2) 向左走一步,坐标-1;输出最小的跳跃步数!原创 2023-09-13 17:38:33 · 66 阅读 · 1 评论 -
数字游戏(题解)
给N(N<=3000)个整数ki,(ki<=5000) ,两两求和,从大到小输出前M个和。原创 2023-09-13 16:49:03 · 119 阅读 · 1 评论 -
字典树模板
char s[N];i < len;i++)if (!f[p][x])d[p]+=1;i <len;i++)if (!f[p][x])return 0;i <= cnt;i++)d[i] = 0;j <= 85;j++)cnt = 1;i <= n;i++)insert(s);i <= q;i++)原创 2023-09-10 09:14:51 · 85 阅读 · 1 评论 -
拆网题解(并查集+离线处理)
敌人的通讯网持续遭我袭击,请根据已经被切断的边来判断敌人的两个节点是否连通。给定一个无向图,保证图中无重边自环,不保证图初始联通。接下来q行,每行一个操作:1 a b:查询a b结点是否联通,若是请输出yes,否则输出no0 a:代表下表为a的边已经被摧毁请注意:点的编号为[1,n],边的编号为[0,m)原创 2023-09-05 20:55:43 · 102 阅读 · 1 评论 -
有线电视网(洛谷1273,树形dp)
某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等于传输信号的费用总和。现在每个用户都准备了一笔费用想观看这场精彩的足球比赛,有线电视网有权决定给哪些用户提供信号而不给哪些用户提供信号。写一个程序找出一个方案使得有线电视网在不亏本的情况下使观看转播的用户尽可能多。Input。原创 2023-08-30 20:21:39 · 43 阅读 · 0 评论 -
树形dp不定根(acwing287)
这是一道树形dp不定根的题,做法是先随意选取一个点作为根节点,从根节点到子节点遍历一遍,算出根节点所求的值,再根据得到的根节点值,深度优先搜索,得到各个点所要求值,比较得出答案。除源点和汇点之外,其余各点不贮存水,也就是流入该点的河道水量之和等于从该点流出的河道水量之和。接下来 N−1 行,每行包含三个整数 x,y,z,表示 x,y之间存在河道,且河道容量为 z。在流量不超过河道容量的前提下,求哪个点作为源点时,整个水系的流量最大,输出这个最大值。有一个树形的水系,由 N−1 条河道和 N个交叉点组成。原创 2023-08-30 19:57:50 · 54 阅读 · 0 评论 -
扫描线+线段树求周长(洛谷P1856)
墙上贴着许多形状相同的海报、照片。它们的边都是水平和垂直的。每个矩形图片可能部分或全部的覆盖了其他图片。所有矩形合并后的边长称为周长。第二种扫描一次中,多记录当前区间包含多少个线段和左右端点包含情况,每次计算要多加上当前线段数*2*(此线离下一条线的距离);与求面积类似,用一根平行x轴或者y轴直线沿着另一条坐标轴扫描过去。第一种写法是扫描两次,横着一次,竖着一次,两次所求长相加得到周长。编写一个程序计算周长。原创 2023-08-29 22:42:27 · 166 阅读 · 1 评论 -
扫描线+线段树优化(洛谷8648)
所以我们需要维护y轴上的长度,我们将所有y值放进一个数组y[n原创 2023-08-28 19:48:01 · 71 阅读 · 1 评论 -
花神游历各国-线段树(题解)
每一次旅行中,花神会选择一条旅游路线,它在那一串国家中是连续的一段,这次旅行带来的开心值是这些国家的喜欢度的总和,当然花神对这些国家的喜欢程序并不是恒定的,有时会突然对某些国家产生反感,使他对这些国家的喜欢度由t 变为sqrt(t),一般对于区间加乘操作,可以用lazy标记,但像这样对每个数取根号,除去一个整数,并且不增加数的大小,由于对每个数操作次数不会太高,所以可以对每个数单独操作,再加上一个数组标记,当一个区间都不必再操作,就直接return即可。(可能是花神虐爆了那些国家的 OI,从而感到乏味)。原创 2023-08-18 23:58:13 · 96 阅读 · 1 评论 -
校门外的树3-线段树(题解)
K=1,K=1,读入l、r表示在区间[l,r]中种上一种树,每次操作种的树的种类都不同。校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……60%的数据保证,n <=1000,m<=50000。K=2,读入l,r表示询问l~r之间能见到多少种树。第一行n,m表示道路总长为n,共有m个操作。范围:20%的数据保证,n,m<=100。100%的数据保证,n,m<=5000。对于每个k=2输出一个答案。接下来m行为m个操作。原创 2023-08-18 23:45:33 · 105 阅读 · 1 评论 -
线段树区间维护(加乘题解)洛谷3373
线段树区间加乘原创 2023-08-17 17:23:26 · 64 阅读 · 1 评论