自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天翼之城的博客

菜鸟的记录

  • 博客(41)
  • 收藏
  • 关注

原创 Codeforces Contest 1203 F2 Complete the Projects (hard version) —— 贪心sorting+DP

This way题意:现在有n个东西,你拿到第i个东西需要你的价值至少达到a[i],拿到之后你的价值会加上b[i],你可以不按顺序拿东西,问你你最多能拿多少物品题解:有点无脑的DP,首先当然是将所有b>=0的先拿,因为这样你的价值就会增加,那么对于b小于0的情况,我试了两次,它给的样例其实很不错,过了第一个和第二个就能过全部。观察这两个样例之后就能发现,光光只按照a或者b排序是不行的...

2019-08-31 21:28:26 156

原创 HDU 5029 Relief grain —— 离线树链剖分

This way题意:给你一棵树,一开始每个点都是一个空集合,每次在x到y的路径上的所有点的集合中塞进z,问你所有数塞完后每个点中的集合最多的数是什么题解:n次插入啊,每次都是一个链,那么我们可以用树链剖分的思想将一条链分为最多log*2的连续区间。那么将所有输入分解成区间后按照dfs序排序,按dfs序做即可。#include<bits/stdc++.h>using nam...

2019-08-31 20:44:37 163

原创 The 2019 Asia Yinchuan First Round Online Programming L. Continuous Intervals ——区间不同数的个数=区间最大值-最小值

This way题意:给你一个数组,一个区间视为有效的当且仅当这个区间排序之后,任意两个连续的数的差的绝对值不超过1,问你有多少个有效的区间题解:今天又是莫干山吗。。。这个题意翻译一下就是:区间最大值-区间最小值+1=区间不同值的个数那么我们用线段树维护最大值-最小值-不同值的个数。那么答案就是这个区间有多少值是-1即可,然而由于最大值-最小值+1是一定大约等于区间不同值的个数的(这个...

2019-08-31 20:28:36 247

原创 Codeforces Contest 1191 E ——博弈

This way题意:现在有一个01串,并且有一个操作是将一个区间翻转成同样的字符,现在有两个人轮流翻转,问你最后谁赢题解:如果第一个人要赢,那么只能在第一次的时候赢,如果第二个人要赢,也只能在他第一次翻转的时候赢,否则他们就能够给对方造成无法取胜的局势,如此往复。那么第一个人赢必然是某个区间翻转之后全部变成相同的,那么可以通过开头连续相同的字符和结尾连续相同的个数来判断。如果第一个人...

2019-08-30 10:06:01 164 1

原创 Codeforces Contest 1191 F Tokitsukaze and Strange Rectangle —— sorting+线段树

This way题意:二维平面上有一些点,你现在有一个没有顶边的矩形,问你有多少种包含点的情况(每个点视为不同)题解:将每个点视为矩形下底边上的点,查找这个点左边有多少点,右边有多少点,这个点做完之后将其删除,相同高度的点从左到右做,对于右边的点要注意左端点位左边的点+1:这张图就表示了相同高度右边点的可查询区间。(刚多校结束发现2200真的是比赛中的简单题了)#include&l...

2019-08-29 17:31:05 152

原创 2019 Multi-University Training Contest 6 11 Dimensions DP 求第k大m的倍数

This way题意:给你一个不完整的数,知道它有n位,是m的倍数,总共q个询问,每次问你它第k大是多少。题解:dp[i][j]表示到第i位的时候,模m为j时的个数。我们用res表示当前枚举到的数模m是多少,然后枚举前面模m的余数,那么状态转移方程就是dp[i][(res+k)dp[i][(res+k)%m]+=dp[i-1][k];dp[i][(res+k)注意它是会爆ll的,那...

2019-08-29 14:46:26 136

原创 2019 Multi-University Training Contest 9 Rikka with Stable Marriage —— 字典树

This way题意:给你a,b两个数组,让他们两辆匹配,ai与bj是稳定的,当且仅当不存在ak与bl使得ai^bl>ai^bj&&ak^bj>ak^bl。问你所有稳定匹配中ai^bj之和最大的是多少题解:好像和6625是同一道题目(羞愧)只需要将01,10的路劲选择放在前面即可,其它地方不变This way...

2019-08-27 13:02:34 228

原创 2019牛客暑期多校训练营(第九场)C Inversions of all permutations

This way题意:给你一个数组a,设r为a的某种排序,t®为r中逆序对的个数,问你∑br\sum{b^r}∑br是多少题解:值不重复的时候,我们考虑第i大的数,它和前面i-1个数组成的逆序对的所有可能是0-(i-1)那么答案就乘上(1+b+b2+...+bi−1)(1+b+b^2+...+b^{i-1})(1+b+b2+...+bi−1)为什么是这么算的,因为假设b在倒数第三位,那...

2019-08-21 21:31:17 149

原创 2019牛客暑期多校训练营(第八场)I Inner World —— 线段树

This way题意:给你n棵树,每个树一开始只有节点1,接下来会添加m条边u v l r 表示在l-r这么多树上添加一条u连到v的边接下来有q个询问x l r表示第l到第r棵树的节点x的子树大小的和是多少。题解:第一次遇到这种题目,很明显我们不能开这么多树,用主席树的话也不好查询,树链剖分会T。。它只需要开一棵线段树,由与所有的树长得都一样,不过是有些地方没有节点而已,那么我们...

2019-08-21 11:10:30 251

原创 2019牛客暑期多校训练营(第十场)A Blackjack —— 概率DP+逆背包,求n个数取一些使得和落在区间a-b范围的概率

This way题意:给你n个数,你每次会取一张牌,你可以随时结束游戏,问你最终你手上牌的值的和落在a+1到b这个区间内的概率是多少题解:我看了题解和一些人的代码,说实话我一开始是很蒙逼的为什么这里要乘这个,为什么这里要除这个,搞了一段时间才懂。思路是枚举每一张牌作为最后一张符合要求的牌的时候的概率。我们要处理出a+1−x[i]a+1-x[i]a+1−x[i]到b−x[i]b-x[i...

2019-08-20 22:08:20 335

原创 2019牛客暑期多校训练营(第九场)I KM and M —— 类欧几里得算法

This way题意:题解:对于第i位的贡献就是∑k=1nk∗M2i−2∗k∗m2i+1\sum^{n}_{k=1}\frac{k*M}{2^i}-2*\frac{k*m}{2^{i+1}}∑k=1n​2ik∗M​−2∗2i+1k∗m​这个式子表示的是在k*M的时候,第i位是1还是0那么我们只需要算它的前缀和再乘上2i2^i2i即可,解决这种问题使用的是类欧几里得算法:注意会爆l...

2019-08-20 18:53:10 204

原创 2019牛客暑期多校训练营(第七场)I Chessboard —— 组合,n个球放入m个盒子的情况数

This way题意:你可以选择k*k的矩形,每个格子中填的数要大于等于m,并且要保证(所有不同行不同列的数之和)的所有情况相同。题解:不会,,按照它的题解做吧,我这里就翻译一下将一些细节说的明白一点首先,这里是设一个函数,那么为什么因为每个格子至少要放m个,那么不同行不同列的个数是k,所以变成了T-k*m那么对于要满足“不同行不同列的数之和”全相等这个条件,对于任意一行中,每个...

2019-08-20 14:07:21 194

原创 2019牛客暑期多校训练营(第七场)F Energy stones —— set+树状数组求随时间增长的区间和问题

This way题意:有n个石头,这些石头一开始有一些能量e[i],并且每过一个单位的时间会增长l[i],直到有c[i]的能量为止。现在有q个询问t l r表示在t时刻的时候收割l-r的所有能量,并且将其能量置为0,然后这些石头的能量重新增长。问你最后你收割了多少能量题解:for一遍所有的石头,用一个set维护在这个时候有哪些收割的时刻。每个石头有两种状态:未达到c[i]和已达到c[i...

2019-08-19 20:59:22 300

原创 不互质的中国剩余定理模板

#include<bits/stdc++.h>using namespace std;#define ll long longconst int N=105;ll lcm,m[N],a[N],up;int flag;ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} ll...

2019-08-18 20:42:02 239

原创 2014 ACM/ICPC Asia Regional Shanghai Online E - Airport —— 二分+舞蹈链(DLX)重复覆盖

This way题意:给你n个点,让你在其中选k个点作为特殊点,使得所有点到其中距离自己最近的特殊点的距离最大值最小,求这个值题解:n只有60,那么翻译一下这个就是重复覆盖问题。那么我们只需要二分一下答案,将所有小于等于mid的值加到舞蹈链中,再跑一下即可。注意其中的优化:由与deep就是当前使用的点数,那么当deep>k的时候return,注意不能直接做这个判断:if(de...

2019-08-18 20:37:05 170

原创 2014 ACM/ICPC Asia Regional Shanghai Online C - Tree —— 树上前缀和

This way题意:给你一棵树,两种操作:1.将x到y的路径上的所有点的权值+k2.将x到y路径上的所有边的权值+k所有操作结束后问你所有的点权和所有的边权题解:这道题用树链剖分估计会T,因为它是nlog2nnlog^2nnlog2n的。由于每次加的一定是一条链或者两条链,那么我们只需要用前缀和的思想去做即可,也就是说加点权的时候在x的位置加上k,y的位置+k,lca的位置-k,...

2019-08-18 20:31:04 184

原创 2019牛客暑期多校训练营(第四场)E triples II —— DP+容斥

This way题意:让你选出n个3的倍数的序列使得这些数的或是a,问你有多少种可能。题解:能够DP是因为有一个性质:1001与0011的子集中能组成的方案数是一样的,否则就不能用DP。一个数的是另一个数的子集当且仅当这个数与上另一个数之后是它本身。那么定义dp[i][j]dp[i][j]dp[i][j]表示这个数的2进制位上%3=1的位有i个,%3=2的位有j个时,它子集是3的倍数...

2019-08-17 19:36:38 224 1

原创 2019牛客暑期多校训练营(第十场)F Popping Balloons —— 线段树+枚举

This way题意:空间中有n个气球,你可以横着社三法子弹,竖着射三发子弹,且横着子弹的关系是y,y+r,y+2*r,竖着是x,x+r,x+2*r。问你怎么射才能射爆最多的气球。题解:我们枚举x轴的三发子弹,那么如何快速的找到y轴三发子弹的最大值,可以考虑将三个点缩成一个点,也就是将三个点的状态加到最下面这个点上。查询最大值即可#include<bits/stdc++.h>...

2019-08-17 18:27:50 509

原创 2019牛客暑期多校训练营(第六场)H Train Driver —— 双端队列bfs求最短路

This way题意:给你一张连通图,第一个人等概率出现在集合a的点上,第二个人等概率出现在集合b的点上,第三个人等概率出现在全图。问你如果找一个点使得他们到这个点的距离的和最小,那么这个距离的和的期望是什么。题解:先对于a集合bfs出每个点到所有点的最短路,对于b集合bfs出每个点到所有点的最短路。然后我们枚举a,b的所有情况,对于每个情况将所有点的距离赋值为dis_a[i][k]+d...

2019-08-16 21:24:26 221

原创 HDU 4757 Tree —— 树形可持久化字典树求链上找一个值与x异或最大

This way题意:给你一棵树,每个点都有一个权值。有q个询问,每次问你从x到y的路上选一个值与x异或最大是多少。题解:从父亲到儿子的顺序建立字典树,每次查询的时候找到lca的父亲l,查询x-l与y-l的最大值即可。#include<bits/stdc++.h>using namespace std;#define ll long longconst int N=1e...

2019-08-16 18:37:31 140

原创 2019牛客暑期多校训练营(第九场)H Cutting Bamboos —— 区间更新主席树+查询第一个比x小(大)的值

This way题意:给你一些竹子,q个询问,问你从第l到第r个竹子,如果你要用y次砍完它,并且每次砍下来的长度是相同的,问你第x次砍在哪。题解:其实我是在写题解的时候才看的题目的。。刚做完j队友就将两个式子丢给我说是这道题的做法,然后由于自己没看题目不知道输出的是位置,结束了才A掉。。一个式子是valsumy∗(y−x)val\frac{sum}{y}*(y-x)valysum​∗(...

2019-08-15 19:40:25 309

原创 2019牛客暑期多校训练营(第九场)J Symmetrical Painting —— sorting

This way题意:有n个矩形,第i个矩形的左下角是(i-1,l),右上角是(i,r),现在要你画一条平行于x轴的水平线,对于穿过这条线的矩形,保留它关于这条线轴对称的部分,就像这样:保留黑色部分。现在问你保留部分面积最大是多少。题解:首先我们可以知道,这条线一定是某个矩形的中线,为什么?假设现在有一些矩形就像这样:这条线如果往上移x,那么1号矩形可以多出2x的面积,2号矩形会...

2019-08-15 19:16:34 560

原创 2019 Multi-University Training Contest 8 1004 Acesrc and Hunting —— 模拟

This way题意:现在有一个n*m的矩阵,你可以选择任意一个点开始,你每次走的距离严格大于1且严格小于3(欧几里得距离),且每个点只能走一次,问你将所有点走一遍的方法是什么。题解:特判n=1&&m=1的情况。对于其他的n=1或者m=1的情况都是不可能的同样特判n=2&&m=2的情况。剩下的情况都是有可能的。对于n=2||m=2的时候,我们这样做:...

2019-08-15 18:49:32 209

原创 2019 Multi-University Training Contest 8 1003 Acesrc and Good Numbers ——数位DP求n使得1-n中d的数量=n

This way题意:f(d,x)f(d,x)f(d,x)表示1-x中d的出现次数。现在给你d,n,让你求最大的x<=n使得f(d,x)=xf(d,x)=xf(d,x)=x题解:它可以用两个函数表示:y=x和一个波动函数的交点即是f(d,x)=xf(d,x)=xf(d,x)=x的解。那么如果f(d,n)=nf(d,n)=nf(d,n)=n,答案就是n,否则将n-max(1,abs(f...

2019-08-14 21:14:45 367

原创 2019 Multi-University Training Contest 5 1002 three arrays —— 字典树构造异或最小数组

This way题意:给你数组a和数组b,现在要求一个数组c,c[i]=a[i]^b[i],可以打乱数组a和数组b的顺序,问你c的字典序最小的构造方法是什么题解:按a,b构造两个字典树,每次贪心的走相同的边,如1,1或者0,0如果没有走相反的边,因为一个数必有一个唯一的数与它对应,同时字典序可以贪心的做,所以这个做法是没毛病的。#include<bits/stdc++.h>...

2019-08-14 10:39:23 216

原创 HDU 6629 string matching —— 扩展KMP

This way题意:有一个函数,它每次会暴力的去跑字符串s的所有后缀于字符串s的最长公共前缀,给你字符串s,问你这个函数会跑几次题解:学到了,模板。。这是逼我们baidu#include<bits/stdc++.h>#define ll long longusing namespace std;const int MAX=1000100; //字符串长度最大值in...

2019-08-13 20:54:56 222

原创 HDU 2019 Multi-University Training Contest 5 1001 fraction —— 辗转相除法求分数最小解

This way题意:给你p,x问你最小的b,使得x*b%mod=a(a<b)题解:没想到辗转相除法还有这种用处。。那么如果px\frac{p}{x}xp​到px−1\frac{p}{x-1}x−1p​中有值,设b为p+x−1x\frac{p+x-1}{x}xp+x−1​,然后返回,否则都减去px\frac{p}{x}xp​,将所有分子分母翻转,继续做。回溯的时候b加上px∗y\...

2019-08-13 14:20:33 168

原创 2019牛客暑期多校训练营(第七场)H Pair —— 多个上界的记忆化搜索

This way题意:问你有多少对x(1<=x<=A)和y(1<=y<=b),使得x&y>C或者x^y<C题解:遇到两个变量且有两个判定条件的记忆化搜索一开始真的无从下手。我们用mx_a表示x是否到达上界,mx_b表示y是否到达上界,用And表示当前与操作是否到达上界,Xor表示异或操作是否到达下界。由与做满足条件的情况需要容斥,那么不如求有多...

2019-08-13 12:59:08 126

原创 2019牛客暑期多校训练营(第八场)D Distance —— 三维树状数组求空间中与某个点最近的点的曼哈顿距离

This way题意:两种操作:1 x,y,h表示在x,y,h位置添加一个点2 x,y,h表示询问与这个位置最近的点的曼哈顿距离是多少题解:cf上有一道很像的题目,那个是问三维空间中最远的两个点的距离包,用8个线段树维护,这道题线段树我空间开不下,所以用树状数组。3个符号,总共有8种情况。对于每一种,只需要查x,y,z都比他小的即可,因为8种可能会将所有情况考虑到,但是会有负数,所以我...

2019-08-13 09:13:16 271

原创 HDU 2019 Multi-University Training Contest 7 1006 Final Exam —— 思维 ?

This way题意:现在有一场考试,涉及n道题,总共m分。你不知道每门学科的所占分值(0-m),如果复习一门分值为x的学科,需要x+1小时。问你如果至少要答对k道题需要至少复习多久。无论他怎么分配分值。题解:很有意思的一道题目,从一脸懵逼到有点懵逼再到wa,搞了半天才A。它就是考你对极端情况的理解吧。这个也不好说,虽然代码只有几行,但是要分析半天。首先我们要取学k个问题,那么极端情况...

2019-08-12 19:29:35 271

原创 2019牛客暑期多校训练营(第八场)E Explorer —— 搜索型线段树,LCT

This way题意:给你一张图,每条边都有能通过的数组范围,问你有多少种数字能够从1到n题解;这个主要有线段树和LCT两种各做法,然而我在比赛的时候一种都没做出来。。线段树就像前两天查中位数那道题一样的建树方法,也就是用r+1代替r,这样的话b[r+1]-b[l]代替b[r]-b[l]+1,省下可能出现的错误。虽然这里没有push_down。之后我们用vector记录每个区间所拥有的边...

2019-08-12 19:09:23 397

原创 2019 Multi-University Training Contest 6 1002 Nonsense Time —— 暴力LIS,记录最长上升子序列

This way题意:给你一个序列,但是一开始这个序列是冰冻的,每一次解封一个位置,问你每一次解封之后最长上升子序列的长度。题解:???这个就是没有极限数据的理由吗,算了他开心就好。从后往前做,首先做一次LIS,同时记录每个位置是从哪里转移过来的,然后对于这次做完的最长上升子序列,我们将它加到map中,下一次删除数据的时候直接查看是否是最长上升子序列中的内容,如果是,重新做LIS。#...

2019-08-09 10:38:48 175

原创 2019牛客暑期多校训练营(第七场)E Find the median —— 线段树求大数据中位数

This way题意:你一开始有一个空序列,每次在你的序列中塞入l-r中所有的值,并且问你现在你的序列的中位数是什么。题解:二分+线段树TLE。。。重算一遍才发现忘记将lower_bound的复杂度算进去了。需要用两个数组维护:sum[]表示区间内值的个数,flag[]是延时标记,同时它如果延到叶子结点了是不会清空的,那么在这里就可以表示这个位置出现了多少次来用。我们将所有输入离散化,这...

2019-08-08 21:38:18 547 4

原创 2019牛客暑期多校训练营(第六场)C Palindrome Mouse —— 回文自动机求一个回文串是另一个回文串子串的个数

This way题意:给你一个字符串,问你本质不同的回文串中有多少对是含有子串关系的题解:我们可以从子串找母串,每次枚举长度为奇数或者偶数的字符串,向外边扩,同时加上fail指针的个数,假设baaabaaab,它肯定是从aaabaaa转移过来的,那么它就已经包括了aaa的内容。对于本地栈空间的不够大的问题可以添加注释中的内容#include<bits/stdc++.h>#...

2019-08-07 19:33:36 181

原创 2019 Multi-University Training Contest 6 1005 Snowy Smile —— 线段树

This way题意:空间中有n个点,让你选择一个矩形覆盖一些点或者不覆盖任何点使得这个矩形中所有点的和最大。题解:虽然貌似它是个2000*2000的矩阵,但是它有的点只有2000个。所以我们先按照x轴排序,然后枚举左端点的同时枚举右端点,意思是固定左右端点,一定包括这两个点的最大子矩阵是多少。用线段树维护区间前缀和,然后查上面的最大前缀和-下面的最小前缀和,就像下图:但是有一个很重要...

2019-08-07 18:38:38 194

原创 2019牛客暑期多校训练营(第五场)C generator 2 —— BSGS

This way题意:给你一个长度为n的序列求法:xi=a∗xi−1+bx_i=a*x_{i-1}+bxi​=a∗xi−1​+b现在问你xi%p=bx_i\%p=bxi​%p=b的最小的i是多少。i&lt;=1e18&amp;&amp;a,b,p&lt;=1e9&amp;&amp;p is a primei&amp...

2019-08-06 19:20:54 369

原创 2019牛客暑期多校训练营(第三场)A Graph Games —— 分块思想

This way题意:给你一张图,每次有2种操作1 l r 表示从第l条边到第r条边,如果有这条边就删掉,否则就加上2 x y 表示问与点x直接相连的点集是否与y直接相连的点集相同题解:将输入的边编号然后分块,如果要反转的两个区间不在一个块内,那么暴力l块和暴力r块,块间使用flag标记是否翻转。很优秀的想法。#include<bits/stdc++.h>using n...

2019-08-05 19:30:58 245

原创 2019 杭电多校 1003 Divide the Stones —— 暴力

This way题意:给你n个石头,重量从1-n,现在要将其分成k堆使得每堆的重量一样。如果可以输出每堆石子的编号题解:如果(n+1)∗n/2%k(n+1)*n/2\%k(n+1)∗n/2%k不等于0,那么就无法分,其它情况都可以。如果n/k是偶数,就蛇形向上放,如果它是奇数,那么我们考虑前3层将其变为全部相等。手模之后发现第一层从1-k依次放,第二层只需要从最中间向右依次放,再从1-中...

2019-08-04 15:56:29 127

原创 2019 Multi-University Training Contest 3 1011 Squrirrel —— 树形DP

This way题意:给你一棵树,路径上都有权值,你现在能将一条边权变为0,问你从某个节点出发到最远的叶子结点的路径最短是多少。题解:这道题乍一看不难,但是它的情况很多,所以debug了很久才过。首先我们处理出每个节点距离它子树的叶子结点的最远,第二远,第三远的距离,再用DP做出每个节点删掉一条边后到叶子结点最远,第二远的距离。之后再用一个dfs做答案,首先参数需要传:1.从父亲传下来的...

2019-08-04 13:15:45 159

原创 2019 Multi-University Training Contest 2 1002 Beauty Of Unimodal Sequence —— DP+树状数组求单峰序列最长时字典序最小&最大

This way题意:给你一个长度为n的数组,让你选出一个序列使得它是这个数组中的最长单峰序列。输出这类序列字典序最小和最大的序列。题解:pre[i][0]pre[i][0]pre[i][0] 表示 a[i]a[i]a[i] 一定取,序列 a[1..i]a[1..i]a[1..i] 的最长上升子序列长度。pre[i][1]pre[i][1]pre[i][1] 表示 a[i]a[i]a[i...

2019-08-02 11:06:11 384 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除