- 博客(36)
- 收藏
- 关注
原创 The 2021 CCPC Weihai Onsite A,D,J
可以发现显然是有解的,并且为了使x最小,弹的最少次数为x/gcd(y,x)次,减去入射一次则为x/gcd(y,x)-1次。给定入射角(给定a,b,角度为a/b),问最少多少次可以反弹到原来发射的位置(如果不能输出-1)然后手玩一下就可以发现,AAACDAAA这种样例,公共前后缀长度分别为1 2 3,那么‘#’放在4号位,可以用公共前后缀长度为1,2,3的周期。放在5号位,可以用公共前后缀长度为1,2,3的周期。放在3号位,可以用公共前后缀长度为1,2的周期。放在6号位,可以用公共前后缀长度为1,2的周期。
2024-10-22 22:36:54
345
原创 Codeforces Round 980 (Div. 2)
其实就是判断排序后以每个点为最大值的时候所需要的柠檬水杯数是否大于给定的k举个例子序列为1 2 3 4,k=5假设1为最大值那么只能选1 1 1 1,此时选不满5个假设2为最大值那么可以选1 2 2 2,此时可以选满5个,但是最坏情况下小于2号位置的所有位置会被多选择一次,所以输出k+(2-1)假设L为最大值的时候可以选满k个则输出k+(L-1)O(n)遍历即可(赛时写了个二分其实没必要)
2024-10-21 16:28:31
1139
原创 2020浙江省赛 B
首次适应算法,用线段树维护每个区间的当前能放箱子的最大值(能向左找就向左找)(初始化每个n个箱子容量都为m),然后每次修改当前找到的那个点,最后query查询没使用过的第一个箱子即可。lower_bound函数每次找到能容下的剩余容量最小的那个箱子,如果找不到就新增一个箱子。最佳适应算法,用multiset储存箱子的剩余容量,用它。
2024-10-09 14:19:46
408
原创 2021浙江省赛 F I
优化版本:每一个a在找到:找到离b最近的a的倍数(>=b) 的时候都会求到这个倍数(>=1),利用这个倍数可以找到满足这个倍数条件之下的最小可能的a,假设满足这个倍数的区间为[L,R],那么a取L一定是最优,可以初步发现,绳子两两之间的状态基本上都是独立的,也就是1,2号绳子的是否相交只取决于1 4两个蓝点,1,3号绳子只取决于2 5,2,3号绳子只取决于3 6,那么把绳子的相交状态累加起来,就可以初步找到答案。给定两个a,b,每次操作可以使b++或者a--,为使得b是a的倍数,最小操作次数是多少。
2024-10-08 20:40:47
923
原创 2022浙江省赛G I M
由于数据范围比较小(1e3),把所有的移动的时间转化为图论上的边权就可以了,再用dijkstra解决,注意如果用的是邻接表存的话要建双向边。由于一个'8'或者'b''p'尺寸为10*17,那么洞的数量最多1000/10*1000/17=5800个,可以两重循环判断洞与洞的关系。最后加入两个洞所在坐标的哈密顿距离=7就说明这两个洞对应一个8,剩余不满足这个条件的洞对应'b''p'即可。在1000x1000的图中找'8' 'b''p'形状的数量(大小必须相同)
2024-09-27 10:46:58
724
1
原创 2024四川省赛 The 2024 Sichuan Provincial Collegiate Programming Contest补题记录
手玩一个离谱的矩形可以发现,不管怎么给矩形,最后最优的放置(这里找的是当前需要放置的矩形左下角位置)一定是在所有放置过的矩形的右下角的x的集合和y的集合中取出一个(除了初始状态0,0要额外加入),例如,图中的5放在这个位置是最优的了,可以看到5矩形的左下角是落在了3矩形(右下角)的x和2矩形(右下角)的y上,所以每次放置矩形用两个vector存x和y,由于x要尽可能小,所以每次x加入之后要排序。然后是五个数字:2 a b c d(a,b,c,d,e,f同x)
2024-09-27 01:17:27
1590
原创 2024湖北省赛 L - LCMs
但是还能发现一种情况,就是两个数都特别大且是奇数最大公因数=1,如果直接走到2的话,距离很可能是2*a+2*b,这样显然不是最优的,因为a可以选择先走到它的最小质因数,这一步的距离是a,然后b可以选择先走到它的最小质因数,这一步距离是b,然后就剩下a的最小质因数走到b的最小质因数,当a,b很大并且质因数比较小时候,显然a->a最小质因数->b最小质因数->b的距离是比a->2->b的距离要短的。给定a和b,试问a到b的最短距离是多少,两个点的距离被x,y定义为LCM(x,y),任何点都直接或者间接走到1。
2024-09-25 13:21:08
246
1
原创 ICPC2024 邀请赛西安站 F L题解
给定n,k ,k代表0的个数,现在有一个数x初始为0接下来n个数,每一个数代表这个数字的个数每次操作可以选择a数组中的一个数字并且可以选择是否将这个x异或上这个数字,然后把这个数字从a数组中删除,Alice先手,Alice想让答案尽可能大,Bob想让答案尽可能小,问最后答案(用n位二进制数输出)
2024-09-19 17:01:56
823
原创 2020ICPC上海 D - Walker M - Gitignore
把所有的可以删除的文件,在建树之后就是对应的叶子结点赋权值为0,不可删除的文件对应的叶子节点赋权值为1(这里注意要建立一个虚拟源点并且权值为1,这样假如所有的文件都可以删除的话递归到虚拟源点的时候就会删除,后面会提到)p1向左 p2向左(以下向左和向右都代表向左或者向右到墙,而不代表初速度方向),只需要计算p1或者p2反弹之后还能走距离n就是合法。一个类似树形的思想,把所有的可删/不可删的文件映射为下标,然后按照文件路径建树,注意,不同文件夹下的子文件夹名字可能相同,例如。a/b/c和b/b/d并不冲突。
2024-09-15 21:21:03
526
原创 F - Equivalent Rewriting Gym - 104821F
T组样例,每一组给定m次覆盖(按顺序覆盖),一共n个数字接下来m行,每行首先给定一个p,接下来紧接着p个数字代表这次覆盖所覆盖的位置。为是否可以交换覆盖的顺序,使得最终覆盖的结果不同样例一解释:3 63 3 1 52 5 32 2 6假设初始染色状态为第一次覆盖3 1 5位置第二次覆盖5 3位置第三次覆盖2 6位置显然第三次操作放任意位置都不会影响最后结果,所以输出Yes以及可能的另一个顺序3 1 2。
2024-09-14 18:51:25
405
原创 Codeforces Round 970 (Div. 3)(ABCDEF)
假如我现在删除的是i号点,那么1~i-1号点的奇偶性质未发生改变,那么我就从小到大遍历即可,i+1~n号点的奇偶性质全部发生了改变,那么显然如果我能预处理出i+1~n的所有状态,也就是前面说到的hou[26][2],那么奇数位本来是hou[0~25][0]现在只需要考虑hou[0~25][1],偶数位置同理,那么就可以发现这个hou[0~25][2]显然可以提前预处理出来,然后遍历到第i个点的时候把1~i的状态删去就行,这些都可以线性处理,时间复杂度O(26*n)2:将一个位置的字母改成另一个字母。
2024-09-05 15:38:49
1317
原创 Codeforces Round 967 (Div. 2)(A,B,C,D)
但是可能会这样的树1-2-3-4-5-6-7-...-1000,然后我每次询问的时候都会递归2*i-1次(i=2,3,...n)显然会超过规定询问次数,所以要经过各种优化才能过(比如,已经遍历过的点不用再递归遍历,然后已经询问过的组合(a,b)不用再询问)自己一开始的写法是每次询问为(1,2),(1,3),...(1,n)然后每一次询问(a,b),假设返回值不是a(代表a,b不相邻)那就递归处理(a,x),(x,b)
2024-08-31 23:49:06
1352
原创 2018CCPC网络赛 C - Dream
给定一个P,现在可以以任意方式重载‘+’和‘*’两个符号,使得满足下列等式其中定义如下需要注意的是,重载过后的'*'需要满足以下要求:也就是说,重载‘*’之后通过计算得到的由于可以以任意方式重载,所以可以把,此时等式变成了,,可以发现等式恒成立,现在只需要满足一一映射就可以了,可以想到,按照上面的定义,=>(也就是)=>(也就是此时得到的集合就是{2,3,4,....,p}恰好与一一映射需要的集合差一个p 于是对就可以解决这个问题。
2024-08-31 21:31:01
370
原创 第九届中国大学生程序设计竞赛(秦皇岛)-(CCPC2023-Qinhuangdao F - 质数之谜(DP)
给定一个序列,修改最少数量的元素使得任意i属于[1,n-1],q[i]+q[i+1]都为质数,输出最小修改次数。
2024-08-30 20:18:01
761
原创 2021CCPC网络赛:G - Function HDU - 7106
当枚举g(x)的时候,g(x)看作一个常数,此时方程就变成了一个二元一次方程(A*g(x)+B==0的时候为一元一次方程)由于g(x)最多取到54,所以可以枚举所有的g(x)所以想到当取到g(x)的时候,只取能使原方程f(x)最小的那几个x。那么此时的x可以当做定义域,使得函数最小的x,无论是不同开口朝向的二元一次方程还是一元一次方程,最小值一定在。一个x对应一个g(x),一个g(x)对应多个x。2.对称轴左右两边(对称轴不一定是整数)定义g(x)为x的各数位之和。在给定x范围内的最小值。
2024-08-28 19:36:50
336
原创 Educational Codeforces Round 169 (Rated for Div. 2)(ABCDE)
题意:已知房间和房间初始之间没有门,加门之后房间和房间之间就相互不连通,给定两个区间[l,r],[L,R],问至少加多少扇门可以使得区间各自选一个点,这两个点一定不连通
2024-08-17 16:00:29
906
原创 Codeforces Round 965 (Div. 2) (题解A~D)
意思抽象出来就是已知n个数平均数为x,求出这n个数字那么举个例子:假设n=3,就取x-1,x,x+1假设n=4就取x-2,x-1,x+1,x+2即可。
2024-08-13 11:52:22
720
原创 2014-2015 ACM-ICPC, Asia Xian Regional Contest F - Color
此时小于等于5种颜色的方案数量就是在小于等于6种颜色的情况下选一种颜色删除也就是。此时小于等于4种颜色的方案数量就是在小于等于6种颜色的情况下选两种颜色删除也就是。此时小于等于4种颜色的方案数量就是在小于等于5种颜色的情况下选一种颜色删除也就是。题意:给定T组样例,接下来每组输入n,m,k:n朵鲜花排成一排,m种颜色,要求。的情况被多减了,于是要加上小于等于k-2种的情况(容斥原理)但是在这之前小于等于4种颜色在小于等于5种颜色的情况被减去了。,那么小于等于5种颜色的方案数量就是。
2024-08-09 20:54:39
262
原创 The 2016 ACM-ICPC Asia Dalian Regional Contest HDU 5976 Detachment
2,3,4,5,6的等差数列,而线段个数为3,4,5的第二,三,四个分别是前一个的最后一项+1,倒数第二项+1,倒数第三项+1,到第一项+1之后再循环往复,于是可以二分找到线段的个数,然后得到。思路:根据均值不等式可以知道x1=x2=..=xn可以使得结果最大,但是线段之间不能相等,所以最终的到的结果线段之间一定是趋近于相等的,但是不知道最终是怎么取值,于是打表找规律。题意:T组样例,每组给定一个长度为n的线段,要求把线段拆分为不同的线段n=x1+x2+..+xn,使得x1*x2*x3*..*xn最大。
2024-08-07 16:32:45
298
原创 数独问题ZOJ 3122:Sudoku
题意:数独,每行,每列,每宫内均要出现且只出现一次‘A’-‘P'这16个字母输出满足条件的一种情况,否则输出-1前置知识:DLX:Dancing Links(使用前提:稀疏矩阵)题型1:精确覆盖问题:n行m列至少选多少行使得每列中恰好有一个1题型2:重复覆盖问题:n行m列至少选多少行使得每列中至少有一个1。
2024-08-04 01:33:38
628
原创 The 2017 ACM-ICPC Asia Shenyang Regional Contest M - Wandering Robots
可以看到落在四个角上的概率的权重为3,落在边上的权重为4,落在中间的权重为5,那么就可以用权重计算出落在满足(i+j)>=N-1的概率是(3+5+3+4+4+3)/(3+4+3+4+5+4+3+4+3)=22/33=2/3。题意:已知一个机器人从(0,0)出发,每次移动到上下左右以及原地不动的概率都相等,但是不会朝有障碍或者边界位置移动,现在放入了k个障碍物,问停留在(i,j)并且满足(i+j)>=N-1的概率是多少。样例2:中间放置了一个障碍物,周围四个格子,以及中间权重随之改变,如图。
2024-08-03 09:24:55
307
原创 2017 ACM-ICPC Asia Xi‘an Regional Contest G - Sum of xor sum
划定区间的某个异或和为1的时候有贡献,可以发现区间内1的个数为奇数的时候这个区间就是对答案有贡献的,于是考虑一下求按位异或的前缀和,这样就可以发现,下面红框为奇数个1,也就相当于大蓝框的最右边(假设为k)为和小蓝框的最右边(假设为j)异号即可,假设前缀和数组为qian[]也就相当于abs(qian[j]-qian[k])=1,代表红框这个区间有贡献,最后也就可以发现相当于[l,r]区间的按位前缀和中所有的0和1都要相互连边,产生的贡献也就是(0的数量)*(1的数量)
2024-07-31 21:42:37
243
原创 kuangbin专题1 简单搜索:D Fliptile
为了满足"如果有多个方案,输出字典序最小的方案"这个条件,可以发现,如果用状压的方式枚举,可以做到第一行的字典序一定是从小到大枚举的,然后第一行确定了后面几行的操作数也唯一确定了,所以说按照for(int i=0;给定n,m,接下来是n*m的图,1代表黑色,0代表白色,每次可以选定一个点进行翻转,同时这个点的上下左右位置都会翻转,问最后得到白色格子最多的翻转方案(如果有多个方案,输出字典序最小的方案)基本上是一样的,只不过这道题是要存储一下操作的位置在哪里。
2024-07-30 22:20:46
245
原创 The 2023 ICPC Asia Hangzhou Regional Contest (The 2nd Universal Cup. Stage 22)H - Sugar Sweet II
输入T组,每组输入n个,接下来3行每行n个整数,第一行代表初始糖果数量,第二行代表对应的编号,第三行代表满足条件的奖励糖果数量,要求:在任意事件发生的顺序下,每个人能得到的糖果数量的期望(如果当前编号的糖果数小于对应编号的糖果数,当前编号获得奖励糖果)然后在前面的基础上,假设A又要在C得到奖励糖果之后才能得到奖励糖果,那么C又必须在A之前,也就是说B要获得奖励糖果,要满足C->A->B的顺序。②:假设编号A得到奖励糖果之后,B才能得到奖励糖果,按照事件发生顺序来说,A必须发生在B之前。
2024-07-29 21:37:27
498
原创 2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest:F - Honeycomb
题意:T组样例,每组输入n,m然后输入一个(4*n+3) x (6*m+3)的由'+','-','/','\',' '组成的一个图形,问从起点S走到终点T最少多少步(包括S和T)(PS:输入的每一行不包含最后的空格)那么当(i-1)%4==0的时候如果(j-3)%12==0,那么是①⑤类型坐标更新为((i-1)/4+1,(j-3)/6+1))那么当(i-3)%4==0的时候如果(j-1)%12==0,那么是⑥⑦类型坐标更新为((i-3)/4+1,(j-1)/6+1))行列编号都从1开始,枚举行i,列j。
2024-07-27 21:36:38
358
原创 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G - Pyramid
(1+2)*(n-1)+(1+2+3)(n-2)+(1+2+3+4)(n-3)+...+(1+2+3+4+...)*1个三角形。化简一下就是(n(n+1)+(n-1)*(n)+(n-2)(n-1)+...+1*2)/2。:给定大三角形的层数n(1<=n<=1000000000),数大三角形中正三角形的个数。(1+2+3+4)个第(n-3)层的三角形。(1+2+3+4+...)个第1层的三角形。(1+2+3)个第(n-2)层的三角形。(1+2)个第(n-1)层的三角形。那么第n层所有的三角形就有。
2024-07-26 01:01:55
413
原创 2015 ACM/ICPC Asia Regional Changchun:E - Rebuild
PS1:由于我的函数double cal(double r)中只是由d1,d2,d3...d(n-1)推出来的所有r。由1.2.3.4得r1=d1-d2+d3-r4>=0 由于r4>=0,所以r1<=d1-d2+d3。由1.2.3. 得r1=d1-d2+r3>=0 由于r3>=0,所以r1>=d1-d2。由于其他所有的r都可以转化为r1的形式所以s其实是关于r1的一个一元二次方程,可以想到用三分来找到极小值。所求r1的范围就是三分的范围(PS:如果求到的左端点l大于右端点r说明无解)
2024-07-20 21:40:14
303
原创 HDU 2842 Chinese Rings(矩阵快速幂+递推矩阵的计算)
同理,首先取下第1,2,3,4个也就是(+F(n-2)),然后取下第6个(+1),然后复原第1,2,3,4个(+F(n-2)),最后再操作F(n-1)次(+F(n-1));③[5,10,21]*C=[10,21,42](为了计算方便也可以写[0,1,2]*C=[1,2,5],因为0,1,2也满足递推的规律)一定只能使用第二种操作,也就是此时第1,2个取下,第3个未取下,才能取下第4个。一定只能使用第二种操作,也就是此时第1个取下,第2个未取下,才能取下第3个。首先很容易得到F(1)=1,F(2)=2。
2024-01-25 12:43:08
1528
原创 [蓝桥杯 2019 省 B] 后缀表达式
给定 N 个加号、 M 个减号以及 N+M+1 个整数 A1,A2,⋯,A N+M+1,小明想知道在所有由这 N 个加号、 M 个减号以及 N+M+1 个整数凑出的合法的后缀表达式中,结果最大的是哪一个。这道题的侧重点不在于后缀表达式,而是根据正负号的数量以及括号的添加推出最优的解。第二行包含 N+M+1 个整数A1,A2,⋯,AN+M+1。对于所有评测用例,0≤N,M≤1e5,−1e9≤Ai≤1e9。1:一个‘+’和一个正数的时候,放在②区域。4:一个'+'和一个负数的时候,放在①区域。
2023-12-26 18:45:30
290
3
原创 ACM基地第四次招新标程
比如金币数量为6那么最优解就是分为三堆,然后两个两个比然后如果重量相同就是另外没比的两个金币中有假金币,如果不同就是轻的那一堆中有假金币。(暴力循环也可以卡过,也就是每输入一个数在n个数中循环一遍找到差最小的那个差,然后答案res+=那个差)推出结论:初始感冒的蚂蚁的左边向右爬的都会被感染,初始蚂蚁的右边向左爬的都会被感染。只需要判断x这个数是否在n个数的前k项和和n个数的后k项和之间即可。给n个数排序,然后每输入一个数二分查找离他最近的一个数。5:爱打球的wahewing。6: 烦恼的高考志愿!
2023-12-17 11:55:27
403
2
原创 ACM基地招新第三次机试标程
王子如何确定公主:首先如果a>b+c,先询问2*(b+c)个问题,最坏情况是说假话的有b+c个人都说在i号房间,说真话的有b+c个人说在j号房间(i不等于j),此时还需要问一次(此时只剩下说真话的人),下一个人说在j号房间,此时公主就一定在j号房间。总花费>84(3*28)的部分全部用来买%85的巧克力(一定是最赚的),剩余的情况需要在草稿纸上枚举可能出现的所有情况,并且排除花费高并且价值低的情况(划线的为排除掉的)(三个循环的内层循环都是一样的,主要是外层循环的i的不同)4:这是一条水中的鱼(
2023-11-26 00:24:26
410
2
原创 蒙德里安的梦想(状压DP),原题+详细过程+注释
求把 N×M 的棋盘分割成若干个 1×2 的长方形,有多少种方案。例如当 N=2,M=4时,共有 5 种方案。当 N=2,M=3时,共有 3 种方案。
2023-07-20 15:35:36
518
1
原创 石子合并(动态规划 区间DP)+详细注释
设有 N 堆石子排成一排,其编号为 1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有 4 堆石子分别为1 3 5 2, 我们可以先合并 1、2堆,代价为 4,得到4 5 2, 又合并 1、2堆,代价为 9,得到9 2,再合并得到 11,总代价为 4+9+11=24;
2023-07-15 17:33:18
1437
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人