自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 European Championship 2024 - Online Mirror(B、I、C、F、G题解)

将a和b排序后固定a,对b错位相减,枚举所有错位的位置,统计这些情况下答案的最大值。时间复杂度为。判断两个圆相切的方法是两个圆圆心的距离等于两个圆的半径之和,建议不要用根号,不然可能有精度误差,可以将等式两边平方后判断。首先如果有两个相邻的圆,其中一个半径减小,另一个的半径就必须增加。我们可以发现,相切圆半径变化必须相反的规则类似于二分图中的染色,而且染色法可以轻松地判定奇数环的存在。因此,我们采用染色法来对每个连通块进行染色,判断每个连通块是否成功染色以及两种颜色的数量是否不同。

2024-03-25 18:22:22 1448

原创 第十一届“图灵杯“NEUQ-ACM程序设计竞赛题解

贪心,明显要把下次的最高分分配给小D,然后对于排在自己前面的人,优先把下次最少的分数分配给最靠前的人。询问的原串是始终不变的,可以先对原串进行字符串哈希,然后对子串比较时,可以二分哈希值以找到两个子串第一次失配的位置,然后对这一位进行比较即可。gcd满足单调性,用线段树或者ST表维护区间gcd值,然后二分gcd不同的点,把gcd相同的区间答案合并计算,可以发现最多二分。动态规划,设dp[i][j]表示枚举到第i个物品相差为j的方案可行性,由于空间会爆炸,需要滚动数组。偶数不必多说,判断质数的时间复杂度是。

2024-03-11 00:48:01 492 5

原创 Codeforces Round 913 (Div. 3) A~F

然后就是操作方案的问题了,如果是两段递增的数组,可以直接将后一段移到前一段,也可以翻转——移动后段——翻转;对于n某一位上的数x,三元组在这一位上的和也为x,那么a在这一位可取的值为[0,x],则b与c在该位的和的范围也为[0,x]。两种操作都不会更改数组相邻位置的大小关系,因此,在环中必须存在一个长度至少为n的连续递增/递减子数组,否则不可行。首先不能产生进位,否则进位一次之后数位等式左侧直接就会出现用一个10来做进位,补救的唯一办法就是等式右侧出现一个数位为10,然而数位只能是0~9,这是不可能的。

2023-12-06 01:48:35 949 1

原创 2023-2024 ICPC, Asia Jakarta Regional Contest A、E、M

一个点对应另一边上的两个点构成三角形,若点数总和是sum,那么可能形成sum/3个三角形。还有一种情况是大部分的点聚集在了一条边上,比如7 1 1这种,同一条边上的三点不能构成三角形,所有需要对sum/3和sum-max(a)取min。划分为多个递减子数组,那么问题就变为从这些子数组中选出若干个使其组合起来的长度为n,可以用01背包记录方案来解决。注意,本题仍是按照归并排序算法模拟,因此dp算出的方案顺序不能乱序输出,需要按照。可以发现,一段尽可能长的连续不增子数组必定是一整块。爆搜就行了,时间绝对够用。

2023-12-04 19:46:05 817

原创 Educational Codeforces Round 159 (Rated for Div. 2) ABCE

意思就是求两个字符串最长公共的前后缀,如果把求后缀的串翻转过来就是求公共前缀了,用字典树求最长公共前缀。在每棵子树上记录其含有的正串和反串前缀的数量,每个结点的正串前缀×反串前缀×2就是因LCP删去的字符总和,用总长度减去这个总和就是答案。若是没有an+1,那么排序后求差值的gcd就是最优的x。对于an+1,从左到右对数组进行扫描,只要有空位就将an+1插进去,这样对an+1的操作就一定是最少的。如果没有位置可插入,那么an+1=an+gcd。因比赛还需要进行一次评测,所以暂不贴代码。

2023-12-04 12:59:22 511

原创 Codeforces Round 911 (Div. 2) A~D

注意到只需要对更小的两个数求gcd,考虑将数组排序后固定最大值,那么从左向右做扫描依次对每个最大值做计算,然后从最大值的左侧寻找两个较小的值求gcd总和。本题只需要求n-1个区间的答案,且区间的左端点均为1,那么就比较好维护了。每次加入新的数时,如果某个因子d的次数增加1,那么由组合数可知,答案就会增加。模拟树形dp即可,根据叶子结点和父结点的关系判断是否对dp值+1,注意只有叶子节点才能为U,不然会走死循环。猜结论,看abc中奇数多还是偶数多,多的就是1。加1即可,时间复杂度为。,d为所有数的因子。

2023-11-27 01:39:36 418

原创 树状数组/线段树基础(多标记,二分,离线处理)

一般来说,线段树的区间具有可合并性,如左区间的最大值与右区间的最大值中更大的那个是左区间与右区间合并后的最大值。因此,我们需要用线段树同时维护区间和与区间平方和,然后按照上述式子合并即可。同理,如果只进行加操作,令c=1即可。树状数组支持单点修改和区间查询,想要区间修改一般需要差分,不过代码简洁。本题要求区间正弦函数的和,同理设区间为[a,b],加数为d,原序列结果为。线段树相比于树状数组,可以利用懒标记进行区间修改,但是代码比较长。本题要求求区间元素的平方和,假设修改前的区间为[a,b],区间和为。

2023-11-04 01:26:51 57 3

原创 Codeforces Round 900 (Div. 3) F 证明+质因数分解

因此,可以维护一个质因子及其指数的集合,每当乘以一个。的值非常大,不能直接表示,考虑对因子下手。的分解式中每一个指数+1进行质因子分解。,由唯一分解定理可知,一个大于1的正整数。的所有因子相乘,组成新的因子,并且由于。互质,不会出现重复的因子。分解式中的任意一个底数,其指数必须大于。,那么它的正因子个数,即。,如果它的标准分解式为。

2023-09-27 15:38:50 116 1

原创 DP基础(状态设计,贪心,背包,区间,前缀和优化等)

所以用贪心的思路来想,只要魔法值足够就开始瞬移来尽可能快地逃离。暴力状态设计:dp[i][j][k]表示在前i个里选,左端重量为j,右端重量为k,需要开dp[100][10000][10000]的数组,明显不可行。优化:注意到只需要考虑差值即可,用dp[i][j]表示考虑前i个物品,天平重量差为j,枚举两种选择:在重端放物品 和 在轻端放物品,状态转移方程为。暴力状态设计:dp[i][j][k][l][x]表示前四种卡片分别用了i,j,k,l张,目前走到第x个格子,以用了第三张为例,状态转移方程为。

2023-09-26 19:54:05 98 2

原创 2023杭电多校第五场1006

有没有写的比我还长的(doge)

2023-08-02 13:02:51 53 1

原创 Codeforces Round #855 (A~C,E)

对于其它字符的还原,以abcdef举例,我们要交换df,使用方案(2)后的字符串为decfab->aecfdb->adcfeb->abcfed,这样我们就在不更改其它字符顺序的情况下交换了i与i-2位置的字符。其它情况以至于普遍到k也是如此。i到i-2:(1)i->i-3->i+1->i-2 (2)i->i-4->i-1->i-5->i-2 ......i到i-1:(1)i->i-4->i-1 (2)i->i+3->i-1 ......i与i-4交换或i与i-3交换,直接交换。

2023-03-03 01:56:55 150

原创 【NEUQ第十届图灵杯题解(持续更新)】

难度不大,直接进行模拟即可,就是有点麻烦。提前记录NEUQ和小写neuq的各种形态,然后每次从字符串中截取4位,如果是一个独立的单词且是NEUQ,就insert;计算几何,将要询问的点(xp,yp)的x坐标带入直线方程,如果得出的y

2023-02-05 00:26:31 262

原创 NEUQ-ACM第四届图灵杯个人赛真题重现题解

如果薯片在第i个阶梯上,用j来表示薯片上一次的步数,那么i一定大于等于j,上一次丢失的糖果就是dp[i-j],加上这一次丢的糖果a[i],现在丢失的糖果就是dp[i-j]+a[i]。分析:我们对第1~n-1个糖果进行遍历(不可能拿最后一个),因为手上拿的糖果价值已经既定了,因此我们要保证后面拿的糖果价值尽可能小,即要求出i∈[2,n],a[i]~a[n]之间的最小值。假设有6个薯条[1,2,3,4,5,6],我们将它们分成两部分[1,2,3|4,5,6],然后去吃右半部分[1,2,3|0,1,2]。

2023-01-17 03:07:17 164

原创 NEUQ-ACM图灵杯第九届真题重现题解

操作时我们可以发现,当其中一个数是sum的因子时,它也是两个数的最大公因数(假设两个正整数a和b,如果a为sum的因子,那么存在一个正整数N,使得a*N=sum,b=sum-a=a*(N-1),a和b的最大公因数便是a,更严谨的证明可以看官方题解)。因此,答案就是sum的因子数。分析:对于等式N=a*b+a+b,左右两边加1,就变成了N+1=a*b+a+b+1=(a+1)*(b+1),即要判断N是否满足条件,我们需要找一个大于1的数i(因为a>0,b>0),使(N+1)%i=0,即判断N+1是否是质数。

2023-01-15 15:37:43 279 1

空空如也

空空如也

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

TA关注的人

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