2019暑假补题
_ 泛白
QQ1204731545
展开
-
牛客暑假多校训练第一场 E ABBA
题目描述:Bobo has a string of length 2(n + m) which consists of characters A and B. The string also has a fascinating property: it can be decomposed into (n + m) subsequences of length 2, and among the (...原创 2019-07-18 20:47:10 · 710 阅读 · 4 评论 -
2019杭电多校第五场补题
1001:fractionbx≡a(mod p)可以转换为:bx-kp = a.因为a的范围是(0,b),则列出不等式又因为1<x<p,所以两个端点 0,b 都不可能取到。则有px<=bk<=px−1\frac{p}{x}<=\frac{b}{k}<=\frac{p}{x-1}xp<=kb<=x−1p。据说...原创 2019-08-06 11:53:23 · 238 阅读 · 0 评论 -
ICPC SWERC 2018 Travel Guide (最短路+CDQ分治)
题目描述:Paris counts many hotels. Some are very close to the Orly airport, which is very useful to spend a night before an early flight. Some are very close to the Notre-Dame cathedral which allows tour...原创 2019-08-06 16:21:41 · 676 阅读 · 0 评论 -
2019杭电多校第七场补题(1007,1008,1010)
1007:Getting Your Money Back(DP)用DP[0][x]表示区间长度为x,区间中不一定有钱时,确认已经拿完所有钱的最小花费,DP[1][x]表示区间长度为x,区间中一定有钱时,确认已经拿完所有钱的最小花费。考虑转移:此时钱的可能范围是[0,x],你选择取数量为i的钱,那么如果成功,花费a,并且剩下的区间[i,x]未知,且不知道其中有没有钱,确认它的代价是DP[0][x...原创 2019-08-13 17:21:14 · 213 阅读 · 0 评论 -
2019杭电多校第九场部分题解(1002,1005,1006)
1002: Rikka with Cake可以发现,答案=线段之间交点的个数+1。把x坐标离散化,把线段按起点的y坐标排序,先从下往上,求每个down的线段和多少个线段相交。再从上往下,求每个up的线段和多少个线段相交。#include<bits/stdc++.h>#define ll long long#define lowbit(x) ((x)&(-(x)))#d...原创 2019-08-19 18:33:15 · 158 阅读 · 0 评论 -
2019杭电多校第八场
感觉慢慢陷入了疲态……依旧是努力签到的一天1009:Calabash and Landlord各种分类讨论,交上去,wa,造数据,找到bug,改一改,交上去,wa,造数据,改一改,wa,改一改,wa…循环多次后ac,然后自己也不知道自己写的是个啥了。。后来听群里老哥们说只要离散化到5*5的格子里然后dfs就好了,明天补补看吧Orz#include<bits/stdc++.h>...原创 2019-08-14 19:29:19 · 161 阅读 · 0 评论 -
2019中国大学生程序设计竞赛(CCPC)- 网络选拔赛(部分题解)
1001:^ & ^对第i位,如果A和B的第i位都是1,那么C的这一位需要为1,否则取0.C必须为正数,所以C可以取0的时候,要看A和B最小的一个为1一个为0的位出现的位置last,让C为1<<last(这样才能保证(A ^ C)&( B ^ C)最小)。如果没有这样的位置,就让C为1.#include<bits/stdc++.h>#define ll...原创 2019-08-23 18:39:37 · 598 阅读 · 0 评论 -
2019杭电多校第六场补题
补了四题:1002,1005,1006,10111002:Nonsense Time先求总的LIS,记录一个LIS。然后考虑时间倒流,每次删除一个点,如果这个点在求得的LIS里面,就暴力重新求一次LIS。因为数据随机,所以LIS期望长度是 n\sqrt{n}n,求一次LIS复杂度O(nlogn)O(nlogn)O(nlogn),总复杂度O(nnlogn)O(n\sqrt{n}logn)O(n...原创 2019-08-11 10:38:00 · 153 阅读 · 0 评论 -
2019杭电多校第九场补题(1001, 1003, 1007, 1008)
1003:Rikka with Mistan的大小为40,那么折半搜索,得到前一半数字可以凑出的所有数字存在a中,和后一半数字可以凑出的所有数字存在b中。对每一位考虑有几个4。设当前考虑到第pos位,那么对于a中第pos位是i的数字来说,它和b中的某个数字相加要得到4有两种情况:1.不进位,相加后第pos位为4.那么b中的那个数字这一位是(14-i)%102.进位,相加后第pos位为4.那...原创 2019-08-20 19:26:50 · 393 阅读 · 0 评论 -
hdu6710 Kaguya(2019CCPC网络赛1009)概率DP
题目链接设左边为白点,右边是黑点。假设我们求的是1号和2号之间的路径期望长度(1号是白的2号是黑的)我们可以从1号结点出发跑一个BFS,如果第i层黑色结点个数为l,那么2号就有l/m的几率是这一层的结点。设dp(i,j,k,l)dp(i,j,k,l)dp(i,j,k,l)为BFS到第i层的时候,已经用掉了j个白色结点,k个黑色结点,并且第i层的结点个数为l的概率。我们可以枚举下一层的结点个...原创 2019-08-25 00:44:05 · 775 阅读 · 0 评论 -
2019杭电多校第七场
1001,1006,10111001: A + B = C把后导零去掉之后,最大的那个数字一定是可以不动的(需要想一下),然后枚举a,b,c是否不动,设ta,tb,tc为a,b,c变动后的结果。当c不动的时候,c的高位或次高位一定和ta或者tb高位对齐,枚举这四种清空。当a不动的时候,a的最高位一定和c的最高位或者次高位对齐,枚举一下。b和a同理。#include<bits/st...原创 2019-08-12 20:06:26 · 122 阅读 · 0 评论 -
2019杭电多校第八场补题(1006,1008)
1006:赛场上想的比较麻烦的写法:先把a,b做差,得到x,第一个取得到收益为x,第二个取得到收益-x。fi[i][0]表示第一个人先取,取i为起始点,可以获得的最大收益,se[i][0]为对应的次大收益。fi[i][1]表示第二个人先取,取i为起始点,可以获得的最大收益,se[i][1]为对应次大收益。转移就是,第一个人取了i之后,第二个人要在i的儿子v里面取fi[v][1]最大的去转...原创 2019-08-16 16:08:37 · 124 阅读 · 0 评论 -
2019杭电多校第十场部分题解(1003,1005,1009)
1003: Valentine’s Day贪心选择概率大的礼物,如果能使得1次惊喜的几率变大则加入,否则结束。(凭感觉莽的,没有仔细证明#include<bits/stdc++.h>#define ll long long#define lowbit(x) ((x)&(-(x)))using namespace std;const int maxn = 1e4 + ...原创 2019-08-21 18:15:28 · 272 阅读 · 0 评论 -
2018SEERC Points and Rectangles (CDQ分治)
题目描述:You have an empty infinite two-dimensional plane and qq queries. There are two types of queries:• <<1,x,y>><< 1, x ,y>><<1,x,y>&...原创 2019-08-01 23:02:27 · 252 阅读 · 3 评论 -
2019杭电多校第五场
没有完成签到……场上三题:1004:equation给你n个ai和bi,给你C,求解方程:画个图可以发现,每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一次方程,然后判断解是否在这个区间内。要特判a=0的情况。#include<bits/stdc++.h>#define ll long long#defi...原创 2019-08-05 21:38:59 · 613 阅读 · 6 评论 -
2019杭电多校第一场C Milk (难写的DP)
题意:一个n*m的网格上有k个牛奶,饮用牛奶iii要花费tit_iti的时间,移动到相邻的各种需要花费1,只有在每一行的中点才可以往下移动一格,求饮用iii个牛奶需要花费的最小时间(i=1,2,..,k)i=1,2,..,k)i=1,2,..,k).n,m<=1e9,k<=1e4n,m<=1e9,k<=1e4n,m<=1e9,k&...原创 2019-07-24 09:39:05 · 145 阅读 · 0 评论 -
牛客暑假多校训练第一场 B Integration
题目描述:(n <= 1000)题解:连乘不好处理,如果连乘可以变成累加就好了。于是想到裂项,要求出n个cic_ici满足:Π1ai2+x2=Σciai2+x2\Pi\frac{1}{a_i^2 + x^2} =\Sigma\frac{c_i}{a_i^2+x^2}Πai2+x21=Σai2+x2ci先试着求一下c1c_1c1:两边同乘a12+x2a_1^2+x^...原创 2019-07-19 23:01:52 · 94 阅读 · 0 评论 -
牛客暑假多校训练第一场 H XOR
题目描述:题意:给一个数组,求所有异或和为零的子序列的长度和。题解:前置知识:线性基问题等价于:对于每一个数字,求有多少包含它的异或和为零的子序列。先求出整个数组的线性基r,对于这r个基底之外的n-r个数字,它们可以和除了这r个基底之外的所有数字任意搭配,然后再用基底去抵消成0,所以这n-r个数字对答案的贡献是(n−r)∗2n−r−1(n-r)*2^{n-r-1}(n−r)∗2n−r...原创 2019-07-20 09:17:15 · 189 阅读 · 0 评论 -
2019杭电多校第二场
今天也是一条咸鱼ORZ场上三题:E,J,KE:题解:一个长度为n的排列的逆序期望为C(n, 2)/2 ,因为每一对下标的贡献都是1/2.然后设dp[i]dp[i]dp[i]为长度为iii的随机排列的culculate函数值,则由题可得dp[n]=C(n,2)2+Σi=0nC(n,i)∗dp[i]dp[n]=\frac{C(n,2)}{2}+\Sigma_{i=0}^nC(n,i)*dp[i...原创 2019-07-24 18:28:07 · 183 阅读 · 2 评论 -
2019杭电多校第三场
1004:Distribution of books求最大值的最小值,明晃晃的告诉我们用二分。二分答案,然后考虑怎么check设当前检查答案lim是否合法:用dp来检验。dp[i]dp[i]dp[i]表示[1,i]这个区间在满足每个小朋友的愉悦值不超过lim的情况下最多可以分给几个小朋友。那么转移为:dp[i]=max(dp[j]+1)dp[i]=max(dp[j]+1)dp[i]=max...原创 2019-07-29 19:55:04 · 188 阅读 · 0 评论 -
牛客暑假多校第二场H Second Large Rectangle
题目描述:题意:给一个n*m的01矩阵,一个矩阵中如果全是1则它是合理的,求这个矩阵第二大的合理子矩阵。题解:按层来考虑,考虑以第i层为底面的时候,对于第j列来说,从(i,j),(i−1,j)..(i,j),(i-1,j)..(i,j),(i−1,j)..往上的连续h个1组成一个高为h,底面为1的柱子。那么对于每一个柱子,用单调栈求出以该柱子为高的矩形的最大面积。但是这样可能会重复...原创 2019-07-20 20:01:42 · 101 阅读 · 0 评论 -
2019杭电多校第二场补题
B: Beauty Of Unimodal Sequence(树状数组+贪心)用dp[i][0]dp[i][0]dp[i][0]表示以a[i]a[i]a[i]开头的最长递减子序列,dp[i][1]dp[i][1]dp[i][1]表示以a[i]a[i]a[i]开头的最长单峰子序列,这两个东西可以从后往前用树状数组 O(nlogn)O(nlogn)O(nlogn)求出来。这样我们得到了最长单峰子序...原创 2019-07-25 22:56:02 · 252 阅读 · 1 评论 -
2019杭电第三场补题
1002:Blow up the city(支配树)反向拓扑建立支配树,可以说是学习拓扑序的支配树的模板题吧。#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1e5 + 50;struct node{ int v, nxt;}e[maxn*2];int...原创 2019-07-31 10:08:04 · 142 阅读 · 0 评论 -
2019杭电多校第一场
在场上只写了两题: D ED: Vacation(模拟)问题描述:Tom and Jerry are going on a vacation. They are now driving on a one-way road and several cars are in front of them. To be more specific, there are n cars in front ...原创 2019-07-22 17:19:33 · 272 阅读 · 0 评论 -
2019杭电多校第四场
场上四题,1001,1007,1008,10101001:AND Minimum Spanning Tree贪心,选择数字i的最低位0,设它为第j位,那么它的父亲就是(1<<j),边权为0.如果1<<j比n大,那么它只能选1作为它的父亲。#include<bits/stdc++.h>#define ll long longusing namespace...原创 2019-07-31 18:08:16 · 244 阅读 · 0 评论 -
2019杭电多校第一场补题
A:BlankB: Operation题意:两种操作:0 l r: 从al,al+1..,ara_l,a_{l+1}..,a_ral,al+1..,ar中选择任意个,求能组成的最大异或和1 x:在数组的末尾添加一个数x题解:维护n个前缀线性基,即对于第i个线性基,它是由a1,a2..aia_1,a_2..a_ia1,a2..ai这i个数字构成的。同时维护线性基的每一位出现的最...原创 2019-07-23 11:36:11 · 254 阅读 · 0 评论 -
2019杭电多校第六场
真实自闭。。场上两题1008,10121008: TDLf(n,m)f(n,m)f(n,m)代表与n互质且大于n的第m个数字,题目给出m,k,求满足(f(n,m)−n)⊕n=k(f(n,m)-n)⊕n=k(f(n,m)−n)⊕n=k的最小n。把式子化一下:f(n,m)=k⊕n+nf(n,m)=k⊕n+nf(n,m)=k⊕n+n。因为gcd(a+b,b)=gcd(a,b),所以此处k⊕nk⊕...原创 2019-08-07 22:13:44 · 115 阅读 · 0 评论 -
2019杭电多校第十场补题(1008,1011)
1011:Make Rounddog Happy方法1:启发式分治。考虑一种比较暴力的做法:对于每个值,找到以它为最大值的区间左端点/右端点,此时我们可以枚举包含它的区间的左端点或者右端点来统计这个值作为最大值对答案的贡献。这样的复杂度是O(n^2)。用启发式分治来优化它。什么是启发式?在这题中,对于一个最大值,你可以选择枚举包含它的区间的左端点,也可以选择枚举右端点,你只要挑一种就可...原创 2019-08-22 12:21:46 · 149 阅读 · 0 评论