09 2018 档案

摘要:题意:有N种物品,每种物品有价值$a_i$,每种物品可选任意多个,求拿k件物品,可能损失的价值分别为多少。 分析:相当于求$(a_1+a_2+...+a_n)^k$中,有哪些项的系数不为0.做k次FFT求卷积求卷积肯定爆炸,考虑用分治的形式计算,因为中间计算的时候会重复计算一些幂次,所以用记忆化搜索 阅读全文
posted @ 2018-09-30 14:34 xiuwenL 阅读(188) 评论(0) 推荐(0)
摘要:题意:一个N M的棋盘上,放置N个皇后,皇后(i,j)可以攻击整行整列和两条对角线.求放完这N个皇后,棋盘上还有多少个点不会被攻击到. 分析:除了行和列之外,还要考虑对角线.对于每一个格点$(x,y)$,都有其对应的主对角线$x+M j$(保证编号 0).如果行i和列j都不会被占据,那么点$(i,j 阅读全文
posted @ 2018-09-30 13:01 xiuwenL 阅读(166) 评论(0) 推荐(0)
摘要:题意:给N个数,不重复地选3个数,求能够组成的数有多少种选法. 分析:若只选两个数就比较好求,FFT后减去两个相同的数构成的情况,再将每种情况除2(2个数排列有两种不同可能)即可. 选3个数也是类似地用容斥的方法计算,首先无限制地情况下,多项式中多计算了两个数相同和3个数相同的情况.有式:$\sum 阅读全文
posted @ 2018-09-30 09:54 xiuwenL 阅读(236) 评论(0) 推荐(0)
摘要:题意:给一个方格,每行每列都有对白色格子中的数之和的要求。每个格子中的数范围在[1,9]中。现在给出了这些要求,求满足条件的解。 分析:本题读入和建图比较恶心... 用网络流求解。建立源点S和汇点T,设列之和的点为A,行之和的点为B,白色格点为C。 由{A}向{C}建边,因为每个白色格点的容量不超过 阅读全文
posted @ 2018-09-29 15:29 xiuwenL 阅读(272) 评论(0) 推荐(0)
摘要:题意:树上每个节点有权值,定义一棵树的权值为所有节点权值异或的值。求一棵树中,连通子树值为[0,m)的个数。 分析: 设$dp[i][j]$为根为i,值为j的子树的个数。 则$dp[i][j\oplus k] = dp[i][j\oplus k] +dp[i][j] dp[v][k]$ ,但暴力枚举 阅读全文
posted @ 2018-09-28 21:48 xiuwenL 阅读(175) 评论(0) 推荐(0)
摘要:题意:求一个序列中,有多少三元组$(i,j,k)ihttps://www.cnblogs.com/xiuwenli/p/9719425.html 在该题的基础上加了i using namespace std; typedef long long LL; const int MAXN = 1e5 + 阅读全文
posted @ 2018-09-28 16:47 xiuwenL 阅读(149) 评论(0) 推荐(0)
摘要:链接:http://acmoj.shu.edu.cn/problem/533/ 题意:求一个序列中,有多少三元组(其中元素不重复)在 任意的排列 下能构成等差数列。 分析:等差数列:$A_j A_i=A_k A_j$,即$2A_j=A_i+A_k$,枚举$A_i+A_j$的所有情况对应的个数,再扫一 阅读全文
posted @ 2018-09-28 16:30 xiuwenL 阅读(351) 评论(0) 推荐(0)
摘要:题意:给一个N M的0 1矩阵,可以进行若干次操作,每次操作将一行或一列的0和1反转,求最后能得到的最少的1的个数. 分析:本题可用FWT求解. 因为其0 1反转的特殊性且$N\leq20$,将每一列j视作一个N位二进制数$A[j]$,则一共有M个N位数,则可以统计出每个二进制数i的个数$num[i 阅读全文
posted @ 2018-09-28 10:00 xiuwenL 阅读(159) 评论(0) 推荐(0)
摘要:题意:一个N M的场地,有K个人要站到场地上去,遵循以下条件: 1) 一个格子只能站一个人 2) 首行,末行以及首列,末列都必须有人站 求有多少种方案(人可以看做无区别). 分析:直接统计符合的方案数不太容易,可以反过来计算不符合的方案数,再用全部方案数减去. 不符合的方案数用容斥的方法计算.设二进 阅读全文
posted @ 2018-09-27 19:51 xiuwenL 阅读(134) 评论(0) 推荐(0)
摘要:题意:有四种花色的牌,每种花色的牌中只能使用数值的约数个数大于2的牌.现在遗失了c张牌.每种花色选一张,求值在区间[a,b]的每个数值的选择方法有多少. 分析:约数个数大于2,即合数.所以先预处理出50000内的所有素数. 然后根据给出的c个遗失牌和素数与否.构造生成多项式,因为上限是b,所以每个多 阅读全文
posted @ 2018-09-27 15:09 xiuwenL 阅读(224) 评论(0) 推荐(0)
摘要:链接:http://acmoj.shu.edu.cn/problem/24/ 分析:设$dp[i][j]$为矩阵$A[i:j]$所需的最少乘法次数,则有dp方程:$dp[i][j]=min\{dp[i][k]+dp[k+1][j]\}(i\leq k using namespace std; con 阅读全文
posted @ 2018-09-26 19:03 xiuwenL 阅读(692) 评论(0) 推荐(0)
摘要:题意:给N个数a[i],再给M个数,问这M个数中有多少满足:出现在N个数中或能表示成某两个数之和. 分析:FFT求出能够生成的数的系数,给出的M个数若在生成的项中系数不为0,则计数+1 include using namespace std; typedef long long LL; const 阅读全文
posted @ 2018-09-26 16:15 xiuwenL 阅读(170) 评论(0) 推荐(0)
摘要:题意:给N个数,求任意选三个数能构成三角形的概率 分析:枚举两条边之和的复杂度$O(N^2)$,显然不行,所以要更高效地做到枚举出两边之和. 所以用生成函数搭配FFT在$O(NlogN)$的时间内计算两边之和对应的个数.设$cnt[i]$为值$i$出现的次数.先不考虑元素的重复使用情况,则卷积的两个 阅读全文
posted @ 2018-09-26 14:38 xiuwenL 阅读(174) 评论(0) 推荐(0)
摘要:题意:K个不同数组成的集合,每个数都不超过S且它们的gcd 1。求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复。譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就重复了,所以对于6,10这种质因子个数为2的,要减去。而对于4,8,9这样同一质因子出现超过1次的,不用考 阅读全文
posted @ 2018-09-24 11:27 xiuwenL 阅读(231) 评论(0) 推荐(0)
摘要:题意:对于给定的物品,求两个在高度上单调不递增,权值上单调不递减的序列,使二者长度之和最大。 分析:可以用费用流求解,因为要求长度和最大,视作从源点出发的流量为2的费用流,建负权边,每个物品只能取一次,且花费为 1。将每个物品拆成入点和出点,中间建容量为1,费用为 1的弧。建源点s和超级源点S,S到 阅读全文
posted @ 2018-09-23 15:14 xiuwenL 阅读(202) 评论(0) 推荐(0)
摘要:题意:有N栋楼,每栋楼有$val_i$个人要避难,现在有M个避难所,每个避难所的容量为$cap_i$,每个人从楼i到避难所j的话费是两者的曼哈顿距离.现在给出解决方案,问这个解决方案是否是花费最小的,若不是,则给出比这个更优的解. 分析:若只是要我们求一个最优解的话就用费用流做.现在要求判断是否最优 阅读全文
posted @ 2018-09-21 22:26 xiuwenL 阅读(160) 评论(0) 推荐(0)
摘要:题意:给一张无向图,每个点有其点权,边(i,j)的cost是$val_i\ XOR \ val_j$.现在只给出K个点的权值,求如何安排其余的点,使总花费最小. 分析:题目保证权值不超过32位整型,按每一位k上的值(0 or 1),将点分为两个集合X和Y,X中为1的点,Y为0的点.如果X中的点到Y中 阅读全文
posted @ 2018-09-21 18:03 xiuwenL 阅读(225) 评论(0) 推荐(0)
摘要:题意:判断最小割是否唯一. 分析:跑出最大流后,在残余网上从源点和汇点分别dfs一次,对访问的点都打上标记. 若还有点没有被访问到,说明最小割不唯一. https://www.cnblogs.com/ka200812/archive/2011/07/30/2121872.html 这里面的鬼畜图说的 阅读全文
posted @ 2018-09-21 13:45 xiuwenL 阅读(142) 评论(0) 推荐(0)
摘要:题意:给一张图,现在要删去所有的边,删去一个点的所有入边和所有出边都有其对应$W_{i+}$和$W_{i }$.求删去该图的最小花费,并输出解 分析:简而言之就是用最小权值的点集去覆盖所有的边. 模型转化到网络流的建图中,将图中的边视作点,并将其一拆为二,出点作为X部,入点作为Y部,若有边(u,v) 阅读全文
posted @ 2018-09-21 10:07 xiuwenL 阅读(140) 评论(0) 推荐(0)
摘要:题意:N M个格点,K个位置会有敌人.每行每列都有一门炮,能打掉这一行(列)上所有的敌人.每门炮都有其使用价值.总花费是所有使用炮的权值的乘积.求最小的总花费. 若每门炮的权值都是1,就是求最小点覆盖的问题,参考:http://poj.org/problem?id=3041 将行视作X部,列视作Y部 阅读全文
posted @ 2018-09-20 20:54 xiuwenL 阅读(169) 评论(0) 推荐(0)
摘要:要选出一些点,这些点之间没有相邻边且要求权值之和最大,求这个权值 分析:二分图带权最大独立集. 用最大流最小割定理求解.其建图思路是:将所有格点编号,奇数视作X部,偶数视作Y部,建立源点S和汇点T, S向X部的点建边,Y部向T建边,容量为该点权值. 相邻的一对点(肯定是一奇一偶),由X中的点向Y中的 阅读全文
posted @ 2018-09-20 19:24 xiuwenL 阅读(221) 评论(0) 推荐(0)
摘要:题意:一棵树上有m个红色结点,树的边有权值。q次查询,每次给出k个点,每次查询有且只有一次机会将n个点中任意一个点染红,令k个点中距离红色祖先距离最大的那个点的距离最小化。q次查询相互独立。 分析:数据量很... 最大值最小化,二分搜答案。将ST表求lca的dfs函数加一点东西,求出每个点到其最近红 阅读全文
posted @ 2018-09-19 19:52 xiuwenL 阅读(186) 评论(0) 推荐(0)
摘要:题意:有n(n更详细的说明:https://blog.csdn.net/sdj222555/article/details/7797257 分析:因为n很小,枚举人数是一种可行的做法,网络流求解。具体的建图方法是: 1.从源点向每个选手i建一条容量为val[i]的弧; 2.将每场比赛视作点,由每场比 阅读全文
posted @ 2018-09-19 19:17 xiuwenL 阅读(126) 评论(0) 推荐(0)
摘要:``` #客户端 import socket import threading import tkinter sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 5550)) flag = False class Connection: def __init__(self)... 阅读全文
posted @ 2018-09-19 16:36 xiuwenL 阅读(194) 评论(0) 推荐(0)
摘要:很明显的区间K覆盖模型,用费用流求解.只是这题N可达1e5,需要将点离散化. 建模方式步骤: 1.对权值为w的区间[u,v],加边id(u) id(v+1),容量为1,费用为 w; 2.对所有相邻的点加边id(i) id(i+1),容量为正无穷,费用为0; 3.建立源点汇点,由源点s向最左侧的点加边 阅读全文
posted @ 2018-09-15 18:46 xiuwenL 阅读(258) 评论(0) 推荐(0)
摘要:树链剖分若不会的话可自行学习一下. 前两种操作是线性变换,模$2^{64}$可将线段树全部用unsigned long long 保存,另其自然溢出. 而取反操作比较不能直接处理,因为其模$2^{64}$的特殊性,可将其转化为线性变换. 显然 $$ x\equiv (2^{64} 1) x (mod 阅读全文
posted @ 2018-09-15 18:25 xiuwenL 阅读(285) 评论(0) 推荐(0)
摘要:题意:求一个图的最大权闭合子图 教科书:https://blog.csdn.net/can919/article/details/77603353 最小割模型的应用,源点向正权点建容量为该权值的弧;负权点向汇点建容量为该权值绝对值的弧;有偏序关系的点对之间建容量为正无穷的弧. 跑出最大流,根据最大流 阅读全文
posted @ 2018-09-14 20:49 xiuwenL 阅读(134) 评论(0) 推荐(0)
摘要:线段树节点维护区间最小值,查找时优先从左侧的区间寻找. 每一次循环都在树中不停寻找第一个小于等于当前持有数的值,然后抹去,直到找不到为止. include include include include define lson rt 1; build(Lson); build(Rson); push 阅读全文
posted @ 2018-09-14 18:45 xiuwenL 阅读(120) 评论(0) 推荐(0)
摘要:传送门:https://acm.ecnu.edu.cn/contest/105/problem/Q/ 一棵树,支持两种操作:给一条路径上的节点加上一个等差数列;求两点路径上节点和. 很明显,熟练剖分.用线段树维护链上的区间和,每个节点中记录等差数列的首项,公差和区间和.因为两个等差数列叠加之后还是等 阅读全文
posted @ 2018-09-14 11:08 xiuwenL 阅读(196) 评论(0) 推荐(0)
摘要:题意:要在n天里给m个女生拍照,每个女生有拍照数量的下限Gi,每天有拍照数量的上限Di,每天当中每个人有拍照的上限Lij和Rij。求在满足限制的基础上,所有人最大能拍多少张照片。 分析:抛开限制,显然是一道最大流的问题,需要新建虚拟源点s和虚拟汇点t。加上上下界限制后就是有源汇点的上下界最大流问题。 阅读全文
posted @ 2018-09-12 21:33 xiuwenL 阅读(176) 评论(0) 推荐(0)
摘要:题意:一个树,支持两种操作:1.将深度为L的节点权置加上X;2.求以x为根节点的子树上节点权置之和.根节点深度为0. 分析:考虑用树状数组维护节点权置,按dfs序下标查询.记录每个深度节点的个数.如果每次都暴力维护子树上每一层的节点,则会超时. 要用分块来解决.对于节点数量小于$\sqrt{N}$的 阅读全文
posted @ 2018-09-12 16:41 xiuwenL 阅读(168) 评论(0) 推荐(0)
摘要:注意题目保证不会有一个矩形完全包括另一个矩形的情况 时间序上从后往前看,一个坐标$(x,y)$加进来之前,如果已经有$x_i define X first define Y second using namespace std; typedef long long LL; pair vz[50005 阅读全文
posted @ 2018-09-10 22:04 xiuwenL 阅读(175) 评论(0) 推荐(0)
摘要:题意:一个N M的矩形,每个格点到其邻近点的边有其权值,需要构建出一个迷宫,使得构建迷宫的边权之和最小,之后Q次查询,每次给出两点坐标,给出两点之间的最短路径 分析:可以把每个格点视作视作图的点,隔开两点的边视作图的边,则构建迷宫可以视作求其生成树,剩余的边就是组成迷宫的墙.因为要花费最小,所以使删 阅读全文
posted @ 2018-09-09 17:01 xiuwenL 阅读(432) 评论(0) 推荐(0)
摘要:可推出$a_n = n^2+n, $ 设$S_n = \sum_{i=1}^{n} a_i$ 则 $S_n = \frac{n(n+1)(2n+1)}{6} + \frac{n(n+1)}{2}$ 需要求出$[1,N]$中与$M$互质的下标的和 可以容斥计算答案,$O(1)$时间算出$S_n$,需要 阅读全文
posted @ 2018-09-08 18:40 xiuwenL 阅读(608) 评论(0) 推荐(0)
摘要:题意:N个boy和N个girl,每个女孩可以和与自己交友集合中的男生配对子;如果两个女孩是朋友,则她们可以和对方交友集合中的男生配对子;如果女生a和女生b是朋友,b和c是朋友,则a和c也是朋友.每一轮配对结束后(每个人都找到自己的对象),在开始新的一轮配对.求最大能进行多少轮完整的游戏. 分析:用最 阅读全文
posted @ 2018-09-07 21:27 xiuwenL 阅读(105) 评论(0) 推荐(0)
摘要:``` include using namespace std; using namespace std; typedef long long ll; const int MAXN = 10005; define inf 0x3f3f3f3f3f3f3f3f struct ISAP{ int n;/ 阅读全文
posted @ 2018-09-07 21:07 xiuwenL 阅读(310) 评论(0) 推荐(0)
摘要:题意:有N个婚礼,每个婚礼可以在两段时间内举行,要求N段婚礼的时间没有相交,可行则输出方案 分析:2 SAT求解.建图就是若婚礼i的第一段时间与婚礼j的第一段时间相交则选i1则必选j2,以此类推. Tarjan跑出强联通分量之后,反向缩点建边并染色,最后输出可行解 2 SAT输出方案可作为模板,其思 阅读全文
posted @ 2018-09-07 18:55 xiuwenL 阅读(126) 评论(0) 推荐(0)
摘要:题意:有N个指针头,M个标记,用这N个针头扫描所有的标记,针头之间互不影响,求扫描完M个标记的最短时间 分析:二分搜答案,mid为时间限制,则只要所有的点在mid秒内被扫描到即可. 对于每个指针,若其左方没有待扫描标记,则它只需一路向右即可.若有需要扫描的标记,则有两种方式可以扫描,第一是先向左扫描 阅读全文
posted @ 2018-09-07 12:30 xiuwenL 阅读(258) 评论(0) 推荐(1)
摘要:题意:有N M的矩形,每个格点有一个柱子,每根柱子有高度c,允许蜥蜴经过这根柱子c次,开始有一些蜥蜴在某些柱子上,它们要跳出这个矩形,每步最大能跳d个单位,求最少有多少蜥蜴不能跳出这个矩形。 分析:转化为求最多有多少蜥蜴能跳出,则变为最大流问题。经典的建图思路,将每个柱子视作点,将其拆为入点和出点, 阅读全文
posted @ 2018-09-05 16:36 xiuwenL 阅读(119) 评论(0) 推荐(0)
摘要:题意:给出序列[a1..aN],整数M和k,求对1 M中的每个整数d,构建新的序列[b1...bN],使其满足: 1. $1 \le bi \le M$ 2. $gcd(b 1, b 2, …, b N) = d$ 3. 恰好有k个位置 $bi!=ai$ 求对每个d,有多少种满足条件的序列 分析:对 阅读全文
posted @ 2018-09-05 12:46 xiuwenL 阅读(197) 评论(0) 推荐(0)
摘要:题意:N个人要参加一个局,每个人有自己的好朋友,如果他的好朋友来,他才有可能来。N个人的关系不够成环。Q次查询,问若x来了,y是否肯定来。 分析:若点y是x的祖先,则y肯定回来。一次dfs确定每个点覆盖的区间,若点x的dfs序在y的覆盖区间内,则y肯定会来。 include using namesp 阅读全文
posted @ 2018-09-02 18:38 xiuwenL 阅读(391) 评论(0) 推荐(0)
摘要:题意:有N个问题,解决问题i之前要先解决si个问题;每分钟只能解决一个问题;每分钟必须解决一个问题,否则比赛结束。结束时获得的得分是$\sum_{}{ai t+bi}$,i是解决的问题编号,t是解决该问题的时间。 分析:N不超过20,将解决问题的情况状压,用数组dp[i][s]表示第i个问题为最后解 阅读全文
posted @ 2018-09-02 11:29 xiuwenL 阅读(359) 评论(0) 推荐(0)
摘要:诶,比赛时差一点就debug出来了 阅读全文
posted @ 2018-09-01 21:26 xiuwenL 阅读(330) 评论(0) 推荐(0)
摘要:题意:$f(i):i$能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子。每次给出n,求$\sum_{i=1}^{n}f(i)$ 分析:$1 \le n \le 2e7$,每次查询若都$O(n)$统计,肯定超时,必须打表。 类似打欧拉函数表的方式,对于数$d$以及素数$p$,$f( 阅读全文
posted @ 2018-09-01 19:37 xiuwenL 阅读(814) 评论(0) 推荐(0)
摘要:题意:N个点,M条带权有向边,求可以免费K条边权值的情况下,从点1到点N的最短路。 分析:K using namespace std; typedef long long LL; const int maxn =1e5+5; const LL INF =(1ll rhs.d;} }; LL dist 阅读全文
posted @ 2018-09-01 19:03 xiuwenL 阅读(734) 评论(0) 推荐(0)