随笔分类 - ACM相关-模拟
摘要:"传送门" 题意 给出一个数组A,你有一个数组B(一开始全为0),询问多少次操作后B转化为A 一次操作:选择一段区间,加上某个正整数 分析 构建一个栈, 输入一个数,若当前栈空或栈顶元素比输入小,则加入栈中,否则若大于栈顶元素,则删去栈顶元素,放入输入元素,复杂度O(n) trick 代码 incl
阅读全文
摘要:"传送门" 题意 分析 可知对与某个数x,设其可发送信息的边界为[L,R],那么随着x的递增,[L,R]也右移,故可对输入数排序,做一次双指针即可 trick 代码 //1. Aj 8 Ai + 8 或者 //3. Ai 88888 / i不会给j发消息当且仅当 8 a[j]8 a[i]+8 a[i
阅读全文
摘要:"传送门" 题意 分析 每次插入人名与邮箱的时候,做一次并查集,然后做一次sort即可 trick 3 a 1 first@hihocoder.com b 1 second@hihocoder.com c 2 first@hihocoder.com second@hihocoder.com 代码 i
阅读全文
摘要:"传送门" 题意 给出N,K,给出N对数a[i],b[i],选择一些数使得or和小于k且$max\sum b[i]$ 分析 枚举k的每一个1位,将其删去并让低位全为1,对于每一个这样的数c,如果a[i]|c==c,那么就加上b[i],最后取最大值即可 trick 代码 include using n
阅读全文
摘要:"传送门" 题意 给出一个排列,定义$value为\sum_{i=1}^{n 1}abs(f[i+1] f[i])$ $swap(a[i],a[j])(i≠j)为一次交换$,询问最少的交换次数使得value最大 分析 如果f[i+1] f[i],答案就+f[i+1] f[i]; 如果f[i+1]n/
阅读全文
摘要:"传送门" 题意 略 分析 由低位向高位考虑,令f(n)为n的扩展二进制数表示数 1.当前数为偶数,末位为0或2,那么f(n)=f(n/2)+f(n/2 1) 2.当前数为奇数,末位为1,那么f(n)=f(n/2) 3.n==0,返回1 其他 思路1 "高位向低位考虑" 思路2 "dp转移"
阅读全文
摘要:"传送门" 题意 给出n种袜子,每种袜子个数a[i],两只相同种类袜子配成一对,询问至少拿出多少只袜子能 确保 配出k对袜子 分析 In order to find out the minimum number of socks needed, we should analyse the worst
阅读全文
摘要:某科学的打麻将 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 113 Accepted Submission(s): 33 Problem D
阅读全文
摘要:"传送门" 题意 给出n个数,计算在进行n 1次右移中$min\sum_{i=1}^nabs(p_i i)$ 分析 我们设置cnt[p[i] i]为一个数p[i]与它标准位置(如1的标准位置为1)的左偏差,用L记录一个数在标准位置左边/上的个数,R为在右边的个数,关键在于n 1次移动中如何更新$mi
阅读全文
摘要:"传送门" 题意 给出正n多边形和一个数a,寻找与a最接近的角,输出角编号 分析 找出多边形上所有角,一一比对即可 trick 1.判断的时候注意精度,i.e.x eps 0 2.double与double相除时不要立刻转化成int,可能会有误差 代码
阅读全文
摘要:"传送门" 题意 对于n个女孩,每次分成x人/组,每组比较次数为$\frac{x(x+1)}{2}$,直到剩余1人 计算$$\sum_{i=l}^{r}t^{i l}f(i)$$,其中f(i)代表i个女孩的最少比较数 分析 难度在于如何计算f(i),f(i)每次除的是素数,详情见 "题解" 那么我们
阅读全文
摘要:"传送门" 题意 分析 考虑将区间按右端点排序,再遍历区间,操作即可 建议以加方式写 trick 1.不需要判区间重合 代码
阅读全文
摘要:"传送门" 题意 给出x个a区间和y个b区间,询问a和b交区间的子区间长度为m的个数 分析 类似于双指针,具体见代码 trick 代码
阅读全文
摘要:"传送门" 题意 略 分析 枚举合成ab的数量,在此基础上合成bc和ac,复杂度$O(n)$ trick 代码 include include using namespace std; define ll long long int t; ll a,b,c,ab,ac,bc,ans,ret; int
阅读全文
摘要:"传送门" 题意 给出m个面的骰子扔n次,取最大值,求期望 分析 暴力算会有重复,而且复杂度不对。 考虑m个面扔n次得到m的概率,发现只要减去 (m 1)个面扔n次得到m 1的概率 即可,给出example说明 得到公式 $$\sum_{i=1}^m{i (i^n (i 1)^n)/m^n}$$ 代
阅读全文
摘要:"传送门" 题意 给出一个只包含'(',')'的字符序列,询问有多少个$RSBS$ 分析 首先需要知道一个公式 $$\sum_{i=0}^{min(x,y)}C_x^i C_y^i=C_{x+y}^x$$ 接下来我们观察第i个'(',假设它左边有x个'(',右边有y个')',那么 包含它 的RSBS
阅读全文
摘要:Problem A 题意 给出l(房子宽度),d(pole距离房子的垂直距离),s(绳子长度),求可覆盖的面积 分析 一共四种情况 $$1.ssqrt(d d+l l/2)+l/2$$ 说一下第四种,第四种要减去一个重叠部分,重叠部分面积为2个(扇形 三角形),具体见代码 代码 Problem B
阅读全文
摘要:Problem A 题意 一对兔子每月生一对兔子,兔子在$m$月后成熟,问$d$月后有多少兔子 分析 可以发现,第i月的兔子数量取决于第i 1月与i m月,故 $a[i]=a[i 1]+a[i m],a[0]=1$ 然后还需要高精度(捂脸),于是找了个高精度板子就好了 Problem D 题意 给出
阅读全文
摘要:题目链接:G. New Roads 题意:给出n个结点,t层深度,每层有a[i]个结点,总共有k个叶子结点,构造一棵树。 分析: 考虑一颗树,如果满足每层深度上有a[i]结点,最多能有多少叶子结点 那么答案很简单,就是对(a[i]-1)求和再加1(每一层的结点都集中在上一层的一个结点上) 同理,我们
阅读全文
摘要:题目链接:OX 题意 :给出一个3X3的黑白棋棋盘,棋盘上有若干黑白子,再给出下一个下的人,问下一个下的人能否赢 分析:考虑到只有39种状态,故用一个数保存目前棋盘的状态,记为value,再枚举空位DFS,每次 DFS先判该状态是否已到达(剪枝),再拆分状态用c[3][3]储存,判断是否有赢的状态,
阅读全文