LINK:小V和字符串 容易想到只有1个数相同的 才能有贡献. 知道两个01串 那么容易得到最小步数 大体上就是 第一个串的最前的1和第二个串最前的1进行匹配. 容易想到设f[i][j]表示 前i位1的个数为j的贡献. 不过在 j-1 向 j进行转移的时候 两个集合的贡献无法得到 因为我们只知道其中一个串的最后一个1的位置. 考虑如果每次合并集合时 只统计最后一个1的贡献 那么这样无论怎么做都是错误的. 回到先前 还是考虑描绘出两个串长什么样子 然后 考虑如何统计答案. 问题变成了 逐位考虑 统…
LINK:小V和gcd树 时限是8s 所以当时好多nq的暴力都能跑过. 考虑每次询问暴力 跳父亲 这样是nq的 4e8左右 随便过. 不过每次跳到某个点的时候需要得到边权 如果直接暴力gcd的话 nqlogn就过不了了. 这里有两种解决办法: 一种是比赛的时候队友想的 一种是比较容易想到的方法. 前者套用树链剖分 只对重儿子的边进行修改 这样每次修改的复杂度为qlog. 考虑查询的时候沿着重链向上跳 这样重边可以O(1)得到答案 轻边暴力. 那么就得到了一个 nq+qlog^2的做法了. 当然可…
LINK:小V的序列 考试的时候 没想到正解 于是自闭. 题意很简单 就是 给出一个序列a 每次询问一个x 问序列中是否存在y 使得x^y的二进制位位1的个数<=3. 容易想到 暴力枚举. 第一个想法是在trie树上乱跳 但是可以证明 和直接暴力无异. 暴力是 mlog^3的. 可以两头枚举 枚举n的生成一次 枚举m的变化两次 利用hash存前者. 复杂度降到mlog^2. 这个做法 时间和空间两个都爆. 正解:二进制数有 64位 只要求三个位置不同 那么 我们画出这三个位置 可以发现 三个位置…
链接:https://ac.nowcoder.com/acm/contest/369/A 题目描述 若你摘得小的星星 你将得到小的幸福  若你摘得大的星星 你将得到大的财富  若两者都能摘得 你将得到永远的愿望  摘星是罪孽的宽恕 摘星是夜晚的奇迹  抓住它吧 你所期望的那颗星 无法触及,因而耀眼   明明触及了,却还是耀眼 ——<少女☆歌剧 Revue·Starlight> 题目描述 "我明白." 作为这命运剧场永远的观众,小D一直注视着这片星光璀璨的舞台,舞台上,少女们…
链接:https://ac.nowcoder.com/acm/contest/369/C 题目描述 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边连接的两个点之间再加一条边权相同的边),求所有可能新形成的图中欧拉路的最短长度 欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次 输入描述: 第一行一个数 n ,表示节点个数 接下来 n-1 行,每行三个整数 u,v,w,表示有一条 u 到 v 边权为 w 的无向边 保证数据…
题目链接:https://ac.nowcoder.com/acm/contest/375/A 分析:我写的时候竟然把它当成了DP....... 还建了个结构体DP数组,保存一二位,不知道当时脑子在抽啥... 事实上这题四重循环直接暴力就了过....... 在大佬博客里学到了一种只用三重循环的高级做法 看看最后一重循环吧,因为是从后往前的,只有满足第四个条件,就把now+1,等在前面遇到满足第3个条件的数,此时now的数目就是其后满足第四个条件数的个数,直接加到ans上面即可 #include<b…
LINK:VMware和基站 一道 做法并不常见的题目 看起来很难写 其实set维护线段就可以解决了. 容易想到 第二个操作借用启发式合并可以得到一个很不错的复杂度 不过利用线段树维护这个东西 在区间覆盖的时候并不能很好的维护. 一个想法是 分块 不过操作比较ex. 第一个操作和第二个操作连在一起会非常的难以处理. 这里给出的做法是:使用set来维护整段的线段 这样在第一个区间覆盖的情况下 每次区间至多增加两个或者可能减少. 在第一步中就是logn的时间内可以维护了.不过细节较多我分类讨论了好几…
点此看题面 大致题意: 有\(S\)张无编号的牌,可以将任意张牌锻造成\(n\)种步兵或\(m\)种弩兵中的一种,求最后步兵数量大于等于\(l\)小于等于\(r\)的方案数. 暴力式子 首先我们来考虑暴力式子. 假设我们确定了要选\(x\)个步兵数量,然后要求出此时的方案数. 则我们就要使用隔板法. 仔细思考,其实我们就相当于要求出把\(x\)个步兵分成\(n\)组和把\(S-x\)个步兵分成\(m+1\)组的方案数的乘积.(其中\(m+1\)组指的是\(m\)种弩兵以及不锻造这\(m+1\)种…
题意:给你一个3个数A, B, C问有多少对pair(i, j),1 <= i <= A, 1 <= j <= B, i AND j > C或 i XOR j < C.A, B, C范围为1e9. 思路:场上一看以为是推式子加什么筛做,无果.之后才知道是数位DP(以下思路来自学长的代码orz).首先,我们可以把问题转化为求i AND j < C并且 i XOR j > C的数对个数,用总数(A* B)减去这个数.我们在DP过程中设置几个变量:ok1, 之前已…
Pair 题意 给出A B C,问x取值[1,A]和y取值[1,B]存在多少组pair<x,y>满足以下最小一种条件,\(x \& y >c\),\(x\) xor \(y<c\) 分析 有关二进制位运算的操作肯定是和要联想到和位的关系的,我们可以考虑枚举每一位计数,但这样会复杂度爆炸,枚举每一位有没有想到什么?数位dp,我们可以考虑把题目条件装化,全集好求,那么求他的补集,求所有\(x \& y <=c\)并且\(x\) xor \(y>=c\),然后…