随笔分类 - 奇技淫巧
摘要:题链 题链 Description 给一个排列,要求每个激光打到指定的接受器上,最大化这个数量,你的手段只有在n*n的位置上放平面镜。 Sol 我们发现一行要么只放‘/’要么只放‘\’,又发现answer=n||answer=n-1,这可以倒着合并。 Description #include<bit
阅读全文
摘要:题链 Description Description 给一张方格图,对于上下移动无限制,左右移动数分别不能超过L,R,求能到多少点。 Sol 发现 新的y坐标=老坐标-左移操作数+右移操作数 所以我们只需最小化左移操作数即可,最短路。 Code #include<bits/stdc++.h> #de
阅读全文
摘要:题链 Description 给一个字符串,对其重排列,令回文子串最多。 Description 给一个字符串,对其重排列,令回文子串最多。 Sol 发现把所有元素相同的放一起最优。易证这就是上界。 Code
阅读全文
摘要:Description Description Sol 暴力了解一下,对每个底数容斥,发现容斥结果只跟 x=floor(log(A)/log(i))有关。 那我们单独把系数拿出来容斥。 看起来是2^29的,但是实际上远远不到。 #include<bits/stdc++.h> using namesp
阅读全文
摘要:不妨设a>b。 当c>a || gcd(a,b)!=gcd(a,b,c) 时无解。 我们考虑倍增法。 a%b 这一操作可以从此转移而来: a b a-b b a a-2b a 2b a-2b 2b a-2b 2b …… 我们先求出gcd(a,b)(倍增法取代%) 然后再对a减去(a-c) (同样用倍
阅读全文
摘要:SOL: 我们可以对于 x,y的奇偶性进行讨论。 我们注意到,当x=3的时候,无论y是什么,最优策略肯定是先吃x=2这一行,剩下的一个一个吃。 发现当x为奇数时,都可以采取这样的策略,达到最优解。 记f[x][y]为x行y列的矩形的答案。 f[x][y]=Max(max(f[x][j]+f[x][y
阅读全文
摘要:Description Description 圆上有 2 ∗ n 个点和连接这些点的 n 条弦,这些弦不会在圆上相交。这2 ∗ n 个点按照在圆上的位置顺序依次标号为 1,2,...,2 ∗ n。请求出有多少个无序的三元组,使得对应的三条弦可以通过距离的缩放中心对称。 Input 第一行一个数 n
阅读全文
摘要:SOL: 我们参考最近点对的做法,分治加当前最优解剪枝。
阅读全文
摘要:input 一行两个整数n,k。 output 一行一个整数,表示达到相同状态时小W 需要的移动次数。 30%的数据,n<=10。100%的数据,1<=n<20,0<=k<2^n。 SOL:我们发现N不大,对于标准做法我们暴力模拟。对于w的做法我们发现一次solve_w(N)的代价是3^N-1, 那
阅读全文
摘要:我们发现我们可以对每一个点维护其还没有用过的矩形中最小的几个,记得判重。
阅读全文
摘要:SOL: 我们可以前面写背包,后面组合数。
阅读全文
摘要:T1 : 同 BZOJ 3658 可以扫描线(非要写可持久化数据结构也不拦着你)。 我们先处理在直线下方的东西。 先把所有点都按x轴排序。相同颜色的点用链表连起来。那么答案就应该在相邻的两个同色点之间的全部点或同色中最前或最后的点和边界之间的所有点。这个我们可以统计出来。 我们按照y轴排序,一排一排
阅读全文
摘要:T1 : 修复道路 (path.cpp) 时限:2s 内存:128MB 题目描述 夜深了,xcy正做着美梦((~﹃~)~zZ)…… 20年后,xcy成为了伟大的设计建筑家。他所在的城市有N个区域,这些区域是通过M条道路连接的(然而这些道路都已损坏),每条道路都有一定的长度。市长希望他将一些道路修复(
阅读全文
摘要:(⊙o⊙)… SOL: 我们显然可以二分,我们考虑二分每一个由城堡出来的路径的贡献,必然是一条线段。 用ST表check就好了。
阅读全文
摘要:SOL: 手玩+A*+模拟退火。 point 1,16,18,19这种比较简单或者障碍物很多的手玩就好了。 point 10,17,15 这种步数比较多的跑退火,因为不一定跑的完,所以先跑一个比较劣的解,再迭代逼近。 剩下的跑A*还是很快的。
阅读全文
摘要:SOL: 这道题长得像一个多阶差分,并且事实上这道题就是这样做的。 我们通过跑两遍单调栈求其左边最远的比其小的和右边的最远的比其小的。 冷静一下,发现若一个点比其左右都大的话,它在下一行的贡献会变多,只有一边大的话会不变,比两边都小的话会变小。 对差分进行差分就好啦。
阅读全文
摘要:神题(⊙o⊙)… SOL: 先胡一波自己的看法: 有三个引理: 1.只会在一天内死狗,不会有不同的两天都死了狗。因为死狗是基于一个事实:你们中至少有一条狗有病。那么一天死狗后这个事实就不一定成立了。 2.死狗的情况至少要有一个人能看见剩下所有人。我们称之为重要人物。 3.我们可以每次把全部的重要人物
阅读全文
摘要:SOL : 我们发现 ha[i]=ha[i-1]*26-head*26^(len+1)+head head是指当前把这玩意扔到队尾的东东。就好了。 还有就是考虑没有逆元的情况。
阅读全文

浙公网安备 33010602011771号