随笔分类 -  数学--------------------------

摘要:【算法】离散化+容斥原理 【题意】给定大矩阵,可以每格都可以任意填1~m,给定n个子矩阵,要求满足子矩阵内的最大值为vi,求方案数。 n<=10,h,w<=1w。 【题解】 此题重点之一在于离散化,因为有效坐标很少,离散化后遵循左闭右开计算矩阵点数。 然后对于每个格,能填的最大值是min(m,vi) 阅读全文
posted @ 2017-09-13 17:06 ONION_CYC 阅读(388) 评论(0) 推荐(0)
摘要:【算法】数学+线段树/树状数组 【题解】 首先三个操作可以理解为更相减损术或者辗转相除法(待证明),所以就是求区间gcd。 这题的问题在线段树维护gcd只能支持修改成一个数,不支持加一个数。 套路:gcd(a,b,c,d,e)=gcd(a-b,b-c,c-d,d-e,e),也就是所有数的gcd可以转 阅读全文
posted @ 2017-09-10 18:58 ONION_CYC 阅读(268) 评论(0) 推荐(0)
摘要:【链接】F - Sandglass 【题意】给定沙漏A和B,分别装着a和X-a的沙子,开始时A在上B在下,每秒漏1,漏完不再漏。给定n,有n个时刻ai沙漏倒转。给定m个询问,每次询问给定初值a和时刻t,求A中沙子量。 【算法】数学(函数) 【题解】 先不考虑时刻,令ft(a)表示沙子初值a时,当前A 阅读全文
posted @ 2017-09-08 07:35 ONION_CYC 阅读(228) 评论(0) 推荐(0)
摘要:【算法】模拟 【题意】http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置。(还是乖乖啃原题意去吧233) 【题解】 两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=x 阅读全文
posted @ 2017-09-06 14:08 ONION_CYC 阅读(274) 评论(0) 推荐(0)
摘要:【算法】高斯消元-异或方程组 【题解】良心简中题意 首先开关顺序没有意义。 然后就是每个点选或不选使得最后得到全部灯开启。 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的。 异或中1可以完美实现取反。 故令xi表示第i盏灯的开关情况,然后对每盏灯的亮灭列方程,即 (1*x1)^(1*x2) 阅读全文
posted @ 2017-08-31 20:45 ONION_CYC 阅读(493) 评论(0) 推荐(2)
摘要:【算法】01分数规划-最优比率环 【题意】给定有向图,点有收益,边有代价,重复经过的话收益不叠加而代价叠加,求从任意点开始最后回归该点的(收益/代价)最大。 【题解】 和普通的分数规划不同,这里的方案选择必须是一个环。首先有一个重要的结论:答案一定是一个简单环。 (简单证明:假设当前复杂环为两个简单 阅读全文
posted @ 2017-08-30 14:22 ONION_CYC 阅读(334) 评论(0) 推荐(1)
摘要:【算法】数学 【题意】a数组初始为0,t=1~n,每次01翻转t的倍数,最终为0的数字定义为好数,求好数个数 【题解】一个数字为好数的条件是翻转偶数次,也即一个数是好数当且仅当有偶数个因子时。 因子都是两两配对的,只有完全平方数才拥有奇数个因子。 对于n以内的数字,1~√n的平方就是所有完全平方数。 阅读全文
posted @ 2017-08-29 18:10 ONION_CYC 阅读(234) 评论(0) 推荐(0)
摘要:【算法】二分+矩阵快速幂 【题意】给定矩阵A和整数k,MOD,求A^0+A^1+A^2+...+A^k。 【题解】 定义题目要求的答案为f(n),即: $$f_n=\sum_{i=0}^{n}A^i$$ 当n为偶数时,可以拆成两半,后一半由前一半集体乘A(n/2)得到,即: $$f_n=f_{\fr 阅读全文
posted @ 2017-08-28 22:00 ONION_CYC 阅读(215) 评论(0) 推荐(0)
摘要:【题意】给定n个点和m条无向边(有重边无自环),每个点有权值di=-1,0,1,要求仅保留一些边使得所有点i满足:di=-1或degree%2=di,输出任意方案。 【算法】数学+搜索 【题解】 最关键的一步:★【%2转取反】。 首先考虑在树上做这样的问题,就显得十分朴素了。每当选择一条边,边的两端 阅读全文
posted @ 2017-08-22 22:02 ONION_CYC 阅读(269) 评论(0) 推荐(1)
摘要:【题意】对于n个数,找出一些数使得它们的和能被n整除,输出任意一组方案,n<=10^6。 【算法】构造/结论 【题解】引用自:http://www.cnblogs.com/Sakits/p/7407103.html by Sakits 对n个数求前缀和,即sum[i]=sigma(a[1~i])%n 阅读全文
posted @ 2017-08-22 18:48 ONION_CYC 阅读(189) 评论(0) 推荐(0)
摘要:第一题 模拟送分。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using namespace std; int read() 阅读全文
posted @ 2017-08-21 12:00 ONION_CYC 阅读(361) 评论(0) 推荐(0)
摘要:【题意】给定n个节点的树,每个节点有一个m位二进制数,数字可以随时按位取反,每个数位有一个价值,定义每个点的最大价值是从根到这个点路上的数字(可以取反)或起来的数字中,1有价值0无价值,加起来得到的最大价值。 得到所有点的最大价值后,相邻点若同价值则断边,最后求长度为d的路径数量(边长1),d取遍0 阅读全文
posted @ 2017-08-15 08:59 ONION_CYC 阅读(169) 评论(0) 推荐(0)
摘要:【题意】给定大矩阵的边长H和W,给每格填数(<=|10^9|),要求大矩形总和为正数,而每个h*w的小矩形总和为负数,求构造方式。 【算法】数学 【题解】结论题。 ★当h|H&&w|W(H是w的倍数,W是w的倍数)时,每个小矩阵之和加起来翻倍刚好成为大矩阵,无解。 当不为倍数时,显然会有多余的行列, 阅读全文
posted @ 2017-08-14 16:53 ONION_CYC 阅读(225) 评论(0) 推荐(0)
摘要:【算法】数学+堆 【题意】给定n个数的排列,每次操作可以取两个数按序排在新序列的头部,求最小字典序。 【题解】 转化为每次找字典序最小的两个数按序排在尾部,则p1和p2的每次选择都必须满足:p1在当前序列的奇数位置,p2在当前序列的偶数位置且位于p1之后。满足条件的情况下每次找最小。 每次找到p1和 阅读全文
posted @ 2017-08-14 06:54 ONION_CYC 阅读(408) 评论(0) 推荐(1)
摘要:第一题 题意:给定n*m网络,定义两个棋子在同行同列则相互攻击,同时要求两个棋子的行和列不能一小一大,求满足条件的最大摆放的方案数。 题解:ans=C(max(n,m),min(n,m)),就是在max中取min个数字的组合,组合内排序构成一种方案。 #include<cstdio> #includ 阅读全文
posted @ 2017-08-13 19:48 ONION_CYC 阅读(215) 评论(0) 推荐(0)
摘要:【算法】数论,二分图最大匹配 【题意】有无限张牌,给定n张面朝上的牌的坐标(N<=100),其它牌面朝下,每次操作可以选定一个>=3的素数p,并翻转连续p张牌,求最少操作次数使所有牌向下。 【题解】 1.定义bi,当ai和ai-1的朝向相同时,bi=0,否则bi=1。特别的,a0朝向下。 则问题转化 阅读全文
posted @ 2017-08-13 09:03 ONION_CYC 阅读(528) 评论(0) 推荐(2)
摘要:【题意】求DAG上最多的点使得互不可达。 【算法】floyd+最大匹配 【题解】 链是DAG上的一个点集,集合内的点相互单向可达。 反链是DAG上的一个点集,集合内的点相互不可达。 题目显然是求最长反链,转化为最小链覆盖。 最小链覆盖只要求可达,最小路径覆盖却要求相连。 所以floyd传递闭包(用f 阅读全文
posted @ 2017-08-12 19:19 ONION_CYC 阅读(440) 评论(1) 推荐(0)
摘要:【关键字】偏序,数点,树状数组,线段树,扫描线。 因为涉及多种算法,所以整合到一起。 【扫描线】 二维数点,偏序 ★数点问题 ★关于偏序问题的一些总结 扫描线是一维离线的做法的统称,常用于解决k维偏序问题。 离线:将其中一维的询问排序后按顺序处理,从而实现按时间顺序处理的过程中可以O(1)统计空间上 阅读全文
posted @ 2017-08-12 11:11 ONION_CYC 阅读(1012) 评论(0) 推荐(1)
摘要:【题意】抽象模型后转化为:给定n个直线,ans+=C(x,4)*8,x为每个经过直线数>=4的点的直线数,不存在平行直线。 【算法】数学 【题解】 运用了一个很简单的道理:经过同一个点的线段互相相交。 O(n^3),枚举直线i和j相交,然后枚举后面直线判断是否过交点的条数x,将C(x,2)累加入答案 阅读全文
posted @ 2017-08-11 16:50 ONION_CYC 阅读(216) 评论(0) 推荐(0)
摘要:【题意】给定长度为n的序列A,求最长的区间满足区间内存在数字能整除区间所有数字,同时求所有方案。n<=5*10^5,Ai<2^31。 【算法】数论??? 【题解】首先一个区间的基准数一定是最小的数字。 以一个数字为基准数,左右扩展到的区间内的数字都不能再作为基准数(不会超过此时的区间,为同一个)。 阅读全文
posted @ 2017-08-10 16:38 ONION_CYC 阅读(154) 评论(0) 推荐(0)