随笔分类 - 数学 数学技巧/思维题
摘要:【题目】E. Logical Expression 【题意】令x=11110000(2),y=11001100(2),z=10101010(2),n次询问,每次要求用[与][或][非][括号]构成含至多各1个xyz的表达式使得结果等于给定的数字(0~255),要求表达式最短(一样短时字典序最小)。n
阅读全文
摘要:【题目】C. Party Lemonade 【题意】给定n个物品,第i个物品重量为2^(i-1)价值为ci,每个物品可以无限取,求取总重量>=L的最小代价。1<=30<=n,1<=L,ci<=10^9。 【算法】数学(二进制原理) 【题解】实际上每个物品的重量对应答案的一个二进制位,先对物品进行预处
阅读全文
摘要:【题意】定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同。 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙。n,m<=500,T<=10^5。 【算法】数学 【题解】 可以证明每个矩阵是巧妙的当且仅当其每个2阶子矩阵均是巧妙的: 必要性:若该矩阵有
阅读全文
摘要:【题目】E - Papple Sort 【题意】给定长度为n的小写字母串,只能交换相邻字母,求形成回文串的最小步数。n<=2*10^5。 【算法】数学 【题解】官方题解 本题题解中有以下重要的思想: ①分析多复杂因素相互干扰的问题时,先排除无关因素,然后转化关联因素为独立因素后逐个分析。 ②位置移动
阅读全文
摘要:【题目】D - Wide Flip 【题意】给定n个数字的01序列,要求每次翻转>=k个数字使得全0,求最大的k。n<=10^5 【算法】数学 【题解】有两个角度可以得到等价的结论: 1.对于不同的数字a[x]和a[x+1],必须要k>=max(x,n-x)才能使它们相同,所以k=min(max(x
阅读全文
摘要:【题目】B. Bear and Tower of Cubes 【题意】有若干积木体积为1^3,2^3,...k^3,对于一个总体积X要求每次贪心地取<=X的最大积木拼上去(每个只能取一次)最后总体积恰好为X,求给定的1~m内使积木数量最大的X,相同取X较大者。m<=10^15。 【题解】对于一个给定
阅读全文
摘要:【题意】一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶。 2.丢掉车上指定编号的红茶。 3.将最早丢出去的红茶捡回来。 每次操作后求编号最小的不在车上的红茶。 【算法】单调队列 【题解】本题最重要的性质在于早丢早捡。 因此,当进行丢
阅读全文
摘要:【题意】LibreOJ 【算法】乱搞 【题解】容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列最后一项>10^7时退出。 2.可能第一要求项就比你枚举的大,需要特判。 3.要求项的枚举不能等于最
阅读全文
摘要:【题意】给定三个长度为n的排列,求在三个排列中顺序相同的数对个数。 【算法】逆序对 【题解】很容易联想到NOIP火柴排队,涉及顺序问题显然和逆序对息息相关。 一个数对如果在三个排列中顺序不同,一定是1+2或2+1,也就是只在两数列之间顺序相同。 所以对三个数列两两求逆序对总数num,则不满足要求的数
阅读全文
摘要:【题意】两列n个火柴,分别有高度ai和bi(同一列高度互不相同),每次可以交换一列中的两个相邻火柴,定义距离为∑(ai-bi)^2,求使距离最小的最少交换次数,n<=10^5。 【算法】逆序对 【题解】∑(ai-bi)^2=∑ai^2+∑bi^2-∑ai*bi,其中∑ai^2和∑bi^2为常数,则要
阅读全文
摘要:【题目】C. Qualification Rounds 【题意】给定n个问题和K个人,给定每个人知道的问题列表,求能否找到一个非空问题集合,满足每个人知道的集合中问题数量都不超过集合总题数的一半。n<=10^5,k<=4。 【算法】数学结论 【题解】当k<=4时,结论:若存在合法方案,则一定存在选择
阅读全文
摘要:【题意】给定n头牛,k个特色,给出每头牛拥有哪些特色的二进制对应数字,[i,j]平衡当且仅当第i~j头牛的所有特色数量都相等,求最长区间长度。 【算法】平衡树+数学转化 【题解】统计前缀和sum[i][j]表示前i头牛特色为j的数量,则区间i~j平衡需要满足: sum[j][1]-sum[i-1][
阅读全文
摘要:【题意】给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色。 【算法】结论+矩阵变换 【题解】 曼哈顿距离是一个立着的正方形,不方便处理。d=|xi-xj|+|yi-yj| 将矩阵旋转45°,转为切比雪夫距离(正方形)。d=max{|xi-xj|,|yi-yj|} (图
阅读全文
摘要:【算法】DP+数学优化 【题意】把n个1~m的数字分成k段,每段的价值为段内不同数字个数的平方,求最小总价值。n,m,ai<=40000 【题解】 参考自:WerKeyTom_FTD 令f[i]表示把前i个数分成若干段的最小价值。 转移中我们定义,从i开始往前到有j个不同的数的最小位置为b[j]。
阅读全文
摘要:【算法】动态规划+组合数学 【题意】有一个h行w列的棋盘,定义一些格子为不能走的黑点,现在要求从左上角走到右下角的方案数。 【题解】 大概能考虑到离散化黑点后,中间的空格子直接用组合数计算。 然后解决容斥问题就很重要了。 定义f[i]为走到第i个黑点且不经过其它黑点的方案数。 f[i]=calc(x
阅读全文
摘要:【算法】并查集+平衡树+数学+扫描线 【题解】 经典曼哈顿距离转切比雪夫距离。 曼哈顿距离:S=|x1-x2|+|y1-y2|<=c 即:max(x1-x2+y1-y2,x1-x2-y1+y2,-x1+x2+y1-y2,-x1+x2-y1+y2) 令X1=x1+y1,Y1=x1-y1,则转化为 切比
阅读全文
摘要:【算法】离散化+容斥原理 【题意】给定大矩阵,可以每格都可以任意填1~m,给定n个子矩阵,要求满足子矩阵内的最大值为vi,求方案数。 n<=10,h,w<=1w。 【题解】 此题重点之一在于离散化,因为有效坐标很少,离散化后遵循左闭右开计算矩阵点数。 然后对于每个格,能填的最大值是min(m,vi)
阅读全文
摘要:【算法】数学+线段树/树状数组 【题解】 首先三个操作可以理解为更相减损术或者辗转相除法(待证明),所以就是求区间gcd。 这题的问题在线段树维护gcd只能支持修改成一个数,不支持加一个数。 套路:gcd(a,b,c,d,e)=gcd(a-b,b-c,c-d,d-e,e),也就是所有数的gcd可以转
阅读全文
摘要:【链接】F - Sandglass 【题意】给定沙漏A和B,分别装着a和X-a的沙子,开始时A在上B在下,每秒漏1,漏完不再漏。给定n,有n个时刻ai沙漏倒转。给定m个询问,每次询问给定初值a和时刻t,求A中沙子量。 【算法】数学(函数) 【题解】 先不考虑时刻,令ft(a)表示沙子初值a时,当前A
阅读全文
摘要:【算法】模拟 【题意】http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置。(还是乖乖啃原题意去吧233) 【题解】 两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=x
阅读全文