摘要: 题目大意 : 给你一堆线段 问你是否存在这样一条直线 使得所有线段在直线上的投影均有公共部分 有输出Yes 没有输出No 性质1 只要我们找到一条直线能够穿过所有线段 那就是yes 这个可以感性理解 性质2 对于两条线段 我们可以枚举他们的端点穿成的不同的直线 判断是否穿过所有线段 与上面是等价的 阅读全文
posted @ 2018-10-15 21:08 Patrickpwq 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 传送门 设点a 假如a在一个板子1的左边 那他肯定也在一个板子2左边 而且板子还是按顺序排的 满足单调性 可以二分 考虑check 判断点a在直线L左边 只需判断a到直线L的端点1 端点2两个向量的叉积小不小于0 阅读全文
posted @ 2018-10-15 16:54 Patrickpwq 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 我们已经知道 两个向量的叉积就是他们所构成的平行四边形的面积 如果多边形是凸的 于是就可以从第一个顶点出发 把凸多边形分成n-2个三角形 通过叉积把面积加起来 其实多边形是凹的也适用 因为叉积算的是有向面积 一正一负便会抵消 阅读全文
posted @ 2018-10-15 15:29 Patrickpwq 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 很好的一道题 就是代码几百年都调不出来 首先可以想到树链剖分维护 其次怎么维护呢?我们可以魔改一下线段树 联想到线段树求最大子段和的做法 另外维护左右两个端点 合并的时候特判一下 这道题也是类似 我们维护左右端点的颜色 在合并左右儿子时候 如果左儿子的右端点=右儿子的左端点 那么当前节点的连续颜色数 阅读全文
posted @ 2018-10-15 11:16 Patrickpwq 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 我擦。。。有毒吧。。好久没调代码调过这么久了。。。 题目的难点就在于每个人打饭的顺序不是一定的 这点特别阻碍思想 注意到一个人的容忍度最多为7 联想到状压 考虑dp数组的定义 首先我们可以把一个人及其后面的7人打没打饭的状态压缩 其次肯定要记录当前到打饭到哪个人了(即1~i-1都打完了饭) 但是似乎 阅读全文
posted @ 2018-10-14 19:46 Patrickpwq 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 拿到题目首先想到:一个强连通分量里的点都可以互相走到 所以我们先缩点 缩完点后只需用spfa跑一遍最长路 最后再统计一下有哪些含有酒吧的强连通分量 取最大值 就是代码有点冗长 阅读全文
posted @ 2018-10-14 11:14 Patrickpwq 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 坐标SC tg 在ss考 上午在机房里做了会儿初赛题 感觉要爆零(flag 然后中午顶着寒风下楼买了个大鸡排吃 又回机房 本来想打题的 奈何突然紧张 又去看了看初赛知识点(事实证明毫无卵用 然后1.40了 和 @luositing @luositing 瞎逛找了一波人 然而啥都没有找到 中途遇到教练 阅读全文
posted @ 2018-10-14 09:52 Patrickpwq 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 传送门QWQ 由于一个环上点和边的个数是一样的 所以选了一条边后 点也就知道了 所以有判定函数 F(R)=∑Vi∗Xi−R∗∑Wj∗Xi 怎么判定F(R)的大小呢 按照道理 我们应该用V(u)−R∗W(u,v)来更新dis 有一个正环就可以减小r 但是spfa只能方便的判负环 所以取一下相反数即可 阅读全文
posted @ 2018-10-13 13:08 Patrickpwq 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 传送门here 这是一道01分数规划之最优比例生成树的入门题 类似的 我们对于每次check 预处理d数组(代码里是lowcost[])由于是稠密图 跑一遍prim 由于prim就是通过贪心,保证每次选的边最优来做的,所以只用统计最小生成树的权值有没有大于0 阅读全文
posted @ 2018-10-13 09:31 Patrickpwq 阅读(109) 评论(0) 推荐(0) 编辑
摘要: (小声bb:话说好像下周就可以停课了(flag)!终于可以去见学长们啦~ 虽然月考挂了) 在这里学习的分数规划——>传送门 简单总结一下 设函数f(r)=sigma(a[i]*x[i])-r*sigma(b[i]*x[i]) 变形 f(r)=sigma((a[i]-r*b[i])*x[i]) 假如r 阅读全文
posted @ 2018-10-11 23:08 Patrickpwq 阅读(139) 评论(0) 推荐(1) 编辑
摘要: (小声bb 我觉得带权并查集比较玄妙) 传送门QAQ 很容易想到用并查集来维护 设size表示当前队列的数量(以i为队头的数量),to_root表示当前节点到祖宗的距离 则对于每一个飞船,它到队头的距离,就等于它到它祖先的距离加上它祖先到队头的距离,而它的祖先到队头的距离,也可以变成类似的。可以在g 阅读全文
posted @ 2018-10-08 23:02 Patrickpwq 阅读(203) 评论(0) 推荐(0) 编辑
摘要: QWQ传送门 要在Splay中修改区间的话,可以先查找size值为l与r+2的两个节点,将一个旋转到根,另一个旋转到根的右儿子上,则要修改的区间就是根的右孩子的左子树 然后直接打翻转标记即可,翻转标记类似于线段树的懒标记,查第k大的时候pushdown,pushdown就是把左儿子,右儿子的位置交换 阅读全文
posted @ 2018-10-07 16:59 Patrickpwq 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 这是传送门 我的解法会被卡TLE 但是很有意义 子树查询+链上修改 对于链加,可以看作是一个点到根上的路径加。 一个修改 (x,W) 对 y 有贡献当且仅当 y 为 x 的祖先。且贡献为 (depx − depy + 1) ∗W。 拆开括号即为 depx ∗W+ (1 − depy) ∗W。(W是各 阅读全文
posted @ 2018-10-06 16:48 Patrickpwq 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 这是传送门 正难即反 我们先把所有安全的边先连起来, 然后倒序枚举每个攻击,对于一个攻击,并查集维护被攻击点与其他点的关系即可 阅读全文
posted @ 2018-10-06 11:22 Patrickpwq 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 【问题描述】 豪哥生活在一个 n 个点的树形城市里面,每一天都要走来走去。虽然走的是比较的 多,但是豪哥在这个城市里面的朋友并不是很多。 当某一天,猴哥给他展现了一下大佬风范之后,豪哥决定要获得一些交往机会来提升交 往能力。豪哥现在已经物色上了一条友,打算和它(豪哥并不让吃瓜群众知道性别)交 往。豪 阅读全文
posted @ 2018-10-05 23:37 Patrickpwq 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p q刚好为正整数m的阶乘,求m的最小值。 输入 共两行。 第一行一个正整数n。 第二行n个正整数a[i]。 输出 共一行 一个正整数m。 样例输入 1 6 样例输出 3 提示 样例解释: 当p=6,q=1时,p q=3! 【 阅读全文
posted @ 2018-10-05 16:06 Patrickpwq 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 【描述】 L因为业务繁忙,经常会到处出差。因为他是航空公司的优质客户,于是某个航空 公司给了他一个优惠券。 他可以利用这个优惠券在任何一个国家内的任意城市间免费旅行,当他的路线跨国 才会产生费用。 L有一个航空公司的价格表与航线。而且每个城市出发都能到所有的城 市, 2 个城市间可能有不止一个航班, 阅读全文
posted @ 2018-10-04 22:01 Patrickpwq 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 【题意】 在成都某中学有 m 个男生与 n 个女生排队,这个学校的女生比较古怪,从某个位 置(包含这个位置)开始往前数,男生的数量超过了女生的数量,女生会感觉不安全,于 是会大叫起来,为了构建和谐校园,安排队伍时应该避免这样的情况。请你计算出不会引 发尖叫的排队方案的概率。(排队方案不同定义:当且仅 阅读全文
posted @ 2018-10-04 15:04 Patrickpwq 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 【描述】 有 N 行 M 列的矩阵, 每个格子中有一个数字,现在需要你将格子的数字分为 A,B 两部分 要求: 1、每个数字恰好属于两部分的其中一个部分 2、每个部分内部方块之间,可以上下左右相互到达,且每个内部方块之间可以相互到达, 且最多拐一次弯 如: AAAAA AAAAA AAAAA AAB 阅读全文
posted @ 2018-10-02 22:22 Patrickpwq 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 【描述】 在成都的一条街道上,一共有 N 户人家,每个家庭有 Xi 个人,他们和谐的生活在 一起,作为全国和谐街道,他们经常会小范围组织活动,每次活动会选择一户作为聚点, 并要求某些家庭参加,为了方便通知,村长每次邀请位置连续的家庭。因为每户人数不 同,每个家庭之间有一定距离,村长希望你计算出每次邀 阅读全文
posted @ 2018-10-02 17:03 Patrickpwq 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 【题目描述】 在 L 的书架上,有 N 本精彩绝伦的书籍,每本书价值不菲。 M 是一个书籍爱好者,他对 L 的书籍早就垂涎三尺。最后他忍受不了诱惑,觉得去偷 L 的 书,为了迅速完成这件事,同时他不希望 L 很快发现书籍少了,他决定偷书时,对于任意 连续的 k 本书,他最多选 B 本, 阅读全文
posted @ 2018-10-01 22:31 Patrickpwq 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 【题意】 L最近喜欢上了一个卡片游戏,游戏规则是: 2 个人一共拿 2n 张卡片,编号 1..2n,每个人 n 张,然后进行 n 轮出牌,每轮 2 个 人都打一张牌,,点数大的玩家每次获 1分。 L可以预测到对方要打牌的顺序。 同时,L有一次机会选择了某个时间点,从那个时候开始,每回合点数少者获胜。 阅读全文
posted @ 2018-10-01 15:25 Patrickpwq 阅读(143) 评论(1) 推荐(0) 编辑
摘要: 设dis[i]表示根节点到i的距离(只经过树边),再设w[i]表示i到1这条边的距离 对于u和v我们考虑两种情况 ①.当u是v的祖先 则答案为dis[v] dis[u] ②.当u不是v的祖先,明确从1到v的路径是唯一的 又分两种情况 1.u通过自己,跳到了1节点,然后走这条唯一路径,答案为w[u]+ 阅读全文
posted @ 2018-09-29 23:36 Patrickpwq 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 很久以前做的了,今天拿出来重写一下 "传送门" 和普通的数位dp一致的采用前缀和思想:用[0,y]的个数 [0,x 1]的个数 我们发现windy数是可以从i位推到i+1位的,假设你现在知道了[100,199],[200,299],[300,399]....[900,999]中分别的windy数个数 阅读全文
posted @ 2018-09-29 22:43 Patrickpwq 阅读(858) 评论(0) 推荐(13) 编辑
摘要: 我们可以这样考虑 X 必定是由若干个立方数拼起来的 因此我们可以逆着求 只需关心每次取哪个立方数即可 设a是最大的 a 使得 a^3 不超过 m 分析样例 我们发现在第一次的时候 就可以取a或者a 1 那第一次取a 2 a 3....行不行呢? 1.用 a,剩下m a^3 2.用 a 1, X 最大 阅读全文
posted @ 2018-09-27 23:37 Patrickpwq 阅读(73) 评论(0) 推荐(0) 编辑
摘要: "传送门" 先来找一发规律 先把6张牌洗出来的各种顺序依次写下来 1 2 3 4 5 6 4 1 5 2 6 3 2 4 6 1 3 5 1 2 3 4 5 6 .... 发现是有周期性的,所以我们就看前三排好了 我们试图观察一下每个数字的走向 1:先是右移1 然后2 然后3 2:先是右移2 然后4 阅读全文
posted @ 2018-09-26 23:47 Patrickpwq 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 这道题真的很好啊!刚好把这几天学的东西结合在了一起 首先我们可以发现,一个k 斐波拉契数列的每一项就是普通的斐波拉契数列的倍数 因此问题转变成了k f[n] =1 (mod p) 求k 卧槽?这不就是求f[n]在mod p意义下的乘法逆元吗?? 卧槽?f[n]可以用矩阵快速幂跑出??右转洛谷P196 阅读全文
posted @ 2018-09-24 23:01 Patrickpwq 阅读(228) 评论(0) 推荐(0) 编辑
摘要: " 传送门 " 通过一段大力分析,我们发现其实转化成了 x,y + 2a || + 2b || +a,+b || +b,+a 其中,后两个操作分别最多进行一次(因为多了过后就可以转化成前两种操作) 此时我们可以联想到裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+b 阅读全文
posted @ 2018-09-15 23:01 Patrickpwq 阅读(138) 评论(0) 推荐(0) 编辑
摘要: "传送门" 大致思路: 找办法确定x的范围 我们联想到gcd,lcd对于唯一分解定理的运用 即a,b,gcd(a,b)分解质因数后,gcd(a,b)每个质因子的次数是min(在a中出现的次数,b中出现的次数) lcm变成max即可 那么也就是说 我们可以给a1,a0,b1,b0分解质因数,从而通过 阅读全文
posted @ 2018-09-13 23:17 Patrickpwq 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 欧拉筛,是一种可以O(n)筛出1~n范围内的素数的筛法,比naive筛的O(nlogn),埃式筛的O(nloglogn)都要快一些,还可以根据题目搞出一些最大约数啊之类的东西 代码: void Euler_pick(int n) { for(int i=2;i 阅读全文
posted @ 2018-09-09 22:46 Patrickpwq 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 我们不妨先来复习一下欧几里得辗转相除法是怎么求两个数的最大公约数的 证明: 代码实现 拓展欧几里得:对于不完全为0的非负整数a,b,若gcd(a,b)表示a和b的最大公约数,则必然存在整数对(x,y),是的gcd(a,b)=ax+by 证明: 代码实现: 你当前这一层所用到的x2,y2就是上一层递归 阅读全文
posted @ 2018-09-04 23:29 Patrickpwq 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 先画出杨辉三角,我们发现$C_{i}^{j}$都在$C_{n}^{m}$的左上角 那么怎么快速的找倍数呢,由于杨辉三角是加法递推下来的,因此从我们可以边递推边取模,如果余数为0则满足。同时维护二维前缀和,ans[i][j]——到了第i行j列的答案数量。 需要注意的:对于每一行,要加一句 ans[i] 阅读全文
posted @ 2018-09-04 00:17 Patrickpwq 阅读(115) 评论(0) 推荐(1) 编辑
摘要: "传送门" 很容易就可以看出,答案等于 $C_{k}^{n 1} a^n b^m$ (如果不懂的,可以自行研究一下${(ax+by)}^3$,${(ax+by)}^4$的系数规律) 然后...快速幂跑一下,杨辉三角一打就行了 cpp include define K 1005 define mod 阅读全文
posted @ 2018-09-04 00:10 Patrickpwq 阅读(163) 评论(0) 推荐(0) 编辑
摘要: "传送门" 读懂题意过后,我们会发现,难点就是在于最高位的选取,因为最高位的组成有w%k位,并不是简单的k位。 不过我们可以分开做,我们先算小于等于${{w} \over {k}}$的选取方案,也就是说除去最高位的。相当于就是从1~$2^k$ 1里选i个数,总方案数为 $\sum_{i=2}^{w/ 阅读全文
posted @ 2018-09-03 23:12 Patrickpwq 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 我们十分抱歉,博主由于文化课作业过于繁多,他滚去大力肝作业了(主要是那操蛋的语文,在这里恕我骂一句, 语文),因此他的博客将会暂时停止更新几天。 阅读全文
posted @ 2018-08-19 21:02 Patrickpwq 阅读(230) 评论(2) 推荐(2) 编辑
摘要: "传送门" 很新颖的一个布尔dp,我们用dp[i][j]表示选i个人 能否 构成j的血量 注意,是“能否”,也就是说dp存的是一个逻辑变量。 首先考虑一些细节,对于偶数的n,那么两个部队人数肯定是i/2,对于奇数,为i/2(向下取整)和i/2+1 考虑如何进行状态转移,dp[i][j]=dp[i][ 阅读全文
posted @ 2018-08-17 23:25 Patrickpwq 阅读(258) 评论(0) 推荐(0) 编辑
摘要: " 传送门 " 哎。。。心累。。。这道题改了好久 做法很好理解,就是运用dp的思想,设cnt[i]为到第i个点的最短路数量。 那么对于i的每条出边,如果zdl[i]+val=zdl[vis],说明还有另外若干条可以从i到达vis的路径,因此cnt[vis]+=cnt[i] 大概是下图这样的一个意思 阅读全文
posted @ 2018-08-16 22:42 Patrickpwq 阅读(249) 评论(0) 推荐(1) 编辑
摘要: "传送门" 本题要倒着推 即从大的时间往小的时间转移 因为 如果正着 在i的时候 i+t显然还没转移 求啥设啥 要求最大的空暇时间 那么设dp[i]为i~n分钟之内可以获得的最大空暇时间 方程显然: 如果没有任务是从当前时间开始的 则dp[now]=dp[now+1]+1; 否则 dp[now]=m 阅读全文
posted @ 2018-08-16 10:33 Patrickpwq 阅读(102) 评论(0) 推荐(0) 编辑
摘要: " 传送门 " dp方程很简单啊,dp[i]=max{dp[i r],dp[i r+1]...dp[i l]}+val[i]; 暴力找最大值只有60分,考虑优化,很明显,用单调队列维护一个滑动窗口即可。 起点至少是l,答案的来源最多是n l。 话说单调队列写起来好恶心啊。。。每次都写不对。。。还是要 阅读全文
posted @ 2018-08-16 00:24 Patrickpwq 阅读(117) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这个题意描述的狗屁不通。。。其实大概就是 然后思路就很简单啊,我们枚举最短路的边,依次断掉每一条同时再跑一遍最短路,统计一下最大值即可。 通过一个pre数组可以实现枚举最短路的边,原理很简单:最短路上的每一个点,最后被松弛的那一次就是最关键的边。 cpp include define N 阅读全文
posted @ 2018-08-14 22:27 Patrickpwq 阅读(152) 评论(0) 推荐(1) 编辑