
♪(・ω・)ノ2017多校联合
美团外卖
乘风破浪
展开
-
2017第二次多校联合hdu6053Tirck Gcd
假装这里有链接题意:给出A的序列,然后根据A的序列去确定B的序列。 B的序列满足1≤Bi≤Ai1 \le B_i \le A_i且对于任意B的子集的gcd≥ \ge2.解:首先考虑任意B的子集的gcd≥ \ge2这个条件。它代表的含义即B中任意两个数不互质。那个B中的数都是倍数关系。然后再来看A,已知了A序列,那我们可以枚举小于A但是大于1的所有数。拿样例来看,A的序列为4 4 4 4,然后从原创 2017-07-31 14:40:53 · 426 阅读 · 0 评论 -
2017第三次多校联合HDU6059
题目看了无数人的博客,冥思苦想终于搞明白了,都是泪啊。 题意:给你一个序列aa,然后让你计算有多少个三元组(i,j, k),满足i<<j<<k且((A[i] xor A[j])<(A[j] xor A[k]))。题解:字典树。 用字典树处理前k-1个数,当前是第k个数。显然,我们要寻找的i,j需要满足的条件可以转化为:Ai与AkA_i与A_k的最高不同位t,而AjA_j的第t位与AiA_i的第原创 2017-08-04 16:03:28 · 694 阅读 · 1 评论 -
2017第二次多校联合 hdu6052 tobemyboyfriend
假装这里有链接题意:给你一个矩阵,每个格子有种颜色,求任意大小子矩阵的期望。解:期望=所有子矩阵颜色数和/子矩阵个数。那首先要解决的就是子矩阵个数,如果已知矩阵右下角(i,j),那左边界和上边界一定在(0,0)~(i,j)里,就是i*j。 然后解决所有子矩阵颜色数和,可以求每个颜色包含在多少矩阵里,因为可能会重复,所以自上而下,自左而右考虑。便利每个点,假设便利到(x,y),便利x的左边界(因为自原创 2017-08-01 19:15:50 · 267 阅读 · 0 评论 -
2017第二次多校联合Funnyfunction
题目 题意:这个题意就不用说了吧 题解:矩阵快速幂 dalao博客#include<bits/stdc++.h>using namespace std;#define ll long longconst ll mod=1e9+7;struct bbq{ ll a[2][2];};bbq mx(bbq a,bbq b){ bbq ans; memset(a原创 2017-07-31 16:03:53 · 271 阅读 · 0 评论 -
2017第一次多校联合 hdu6035Colorful Tree
假装这里有链接题意:给你一棵树,树上每个节点都有颜色,然后要统计每种颜色参与了多少路径。题解:首先,这题是真的难。(菜~菜~菜~…….)有看到网上有dalao说这题真的不难。。。。要统计每种颜色参与了多少路径,那就算没参与多少路径,然后用总的减去就好了。 sum[x]表示的遍历到当前位置,颜色为x的高度最高一批结点为根的子树大小总和。 具体思路借鉴了这篇博客:链接#include<bits/st原创 2017-07-31 15:09:17 · 304 阅读 · 0 评论 -
2017第二次多校联合Regular polygon
假装这里有题目。 题意大概就是给你一些整数点集,然后判断里面有多少正多边形。因为一定是整数,所以必定只有正方形,然后锁定两个点,可以知道其他两个点可能的位置,然后去搜索这两个点存不存在就好了,要预处理一下,排个序,然后二分就好了。 唯一搞不明白的是这个题为什么是poj2002.。。。。#include<bits/stdc++.h>using namespace std;const int m原创 2017-07-31 09:23:49 · 314 阅读 · 0 评论 -
2017第二次多校联合hdu6047Maximum Sequence
题目 题意:给了两个序列{ai} \lbrace a_i \rbrace和{bi} \lbrace b_i \rbrace,各有n个数,要求an+1a_{n+1}到a2na_{2n}的和。ana_n满足ana_n≤\lemax{aja_j-j|bk≤b_k\lej<\lti},b只能选用一次。答案要取模1e9+7. 题解:先将b排序,然后将已给a序列和要求的a序列看成两部分,将a序列转换成aja原创 2017-07-28 16:49:17 · 287 阅读 · 0 评论 -
2017第二次多校联合 hdu6045Is Derek lying?
题目 题意:总共有N个题,然后给你两个得分X和Y,分别代表两个人的得分,但是第一个人会撒谎,所以要判断他是不是撒谎了; 题解:所有答案分为两种,两个人相同的答案和两个人不同的答案(简写为相同题和不同题)。于是我们可以根据第二个人的得分推出第一个人的得分范围,假设第二个人的相同题全对,那么第一个人相同题也全对,然后不同题数减去第二个人剩下得分就是第一个人不同题得分,这是第一个人得分最多的情况,同理原创 2017-07-28 15:43:38 · 291 阅读 · 0 评论 -
2017第一次多校联合 1006Function
题目题意:给一个公式f(i)=bf(i)f(i)=b_f(i),然后根据a[i]a[i]与i的关系,能求出几个公式,这时候可以试着把b[i]b[i]赋给f(i)f(i),这样可以推出其他所有。思路:这样可以找循环节,(虽然不明白什么是置换。。)而且可以求出循环节的长度,并且只有在b的循环节的长度是a的循环节长的的因子的时候,可以得出答案就是b的循环节长度,然后全部加起来。#include<cstdi原创 2017-07-26 19:04:45 · 335 阅读 · 0 评论 -
2017第一次多校联合 1001Add More Zero
题目题意:有那么一个超级计算器可以计算0-2m2^m -1的数,但是这个人他只想用1-10k10^k的数。即要求小于2m2^m-1的最大的k。两边取对数,稍一化简就好了.(刚开始以为是找规律。。。。)#include<cstdio>#include<cmath>using namespace std;int main(){ int m,cnt; cnt=1; whil原创 2017-07-26 15:07:34 · 281 阅读 · 0 评论 -
2017第一次多校联合 1011KazaQ's Socks
题目题意:要穿袜子,你有n双袜子,袜子有编号,然后问第几天穿第几双袜子。做法:把345双袜子的10天内穿法,找到了不像是规律的规律,强行写。 前n-1天正常穿,第n天穿第n双,第k*n(k>=2)天穿第n-1双。 每n-1是一个周期,每一个周期内穿法是x,1,2,….,x和第几个周期有关,如果是偶数个则是n,如果是奇数个则是n-1;#include<cstdio>#include<algori原创 2017-07-26 15:00:37 · 404 阅读 · 0 评论 -
2017第一次多校联合Balala Power!
题目题意:给了你许多字符串,要给他们赋权值,对应成了许多个26进制数,然后求和,求最大。(ps:不能有前导零)思路:首先要选择赋最大值,如何选取最大值对应的字母呢?首先先存下每一位上的每种字母出现的次数,但是这样选择也不是很容易选取,所以需要进位,即如果某一位上一个数字出现次数超过了26次,那么比他高一位的+1,它这一位减去26. 。进位这里要注意,数组要开大一点,因为有可能正常处理完的最高位的数也原创 2017-07-26 14:51:35 · 371 阅读 · 3 评论 -
2017第四场多校联合 hdu6069
题目题意:给你l,r,k,要求(∑i=lrd(ik))mod998244353。题解:首先要知道的知识点是:对于一个知识点N,如果它可以被分解为pa11∗pa22.....pannp_1^{a_1}*p_2^{a_2}..... p_n^{a_n},那么d(N)(即它的因子个数)=(a1+1)∗(a2+1)∗....∗(an+1)d(N)(即它的因子个数)=(a_1+1)*(a_2+1)*....*原创 2017-08-04 20:11:30 · 302 阅读 · 0 评论 -
2017第三次多校联合hdu6060
题目题意:给你一棵树,树的边有边权,然后把点分为几个部分,然后这个部分与1相连,问如何分最后的最小斯坦纳树值最大。题意:好像不需要最小斯坦纳树的什么东西。。。 分法:对于一个点来说,如果它不是1点,那就把他分成min(与他相连的边数,给定的部分数)。然后乘以边权累加就好了。具体看代码吧,应该挺好理解的。#include<bits/stdc++.h>using namespace std;con原创 2017-08-04 20:23:58 · 310 阅读 · 0 评论 -
2017第八次多校联合hdu6143
题目题意:m个颜色,两个涂色板格子数均为n,要在两个涂色板上涂色,要求两个涂色板上没有相同颜色,求有多少种方式。题解:第二类Stirling数来做。 第二类Stirling数 S(p,k) S(p,k)的一个组合学解释是:将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。k!S(p,k)是把p个人分进k间有差别(如:被标有房号)的房间(无空房)的方法数。假设第一个涂色板原创 2017-08-18 16:57:50 · 275 阅读 · 0 评论 -
2017第八次多校联合hdu6140(阅读题)
题目题意:就是给你一些数,如果他对应的是N那他可以加也可以减,如果是L就是加,如果是D就是减。题解:(出题人好强啊。。。愣是用这么长的题面和语言陷阱干死了好多人。。。。)(比赛时候一直在怼1002,看了题解才知道原来这不是我能做的题,好想哭啊。。ORZ)。 就是按他给的所有的值扩大区间,最后看看k在不在区间里就好了。 具体多项式的理解:大佬博客 (但是也学到东西了,原来用%c读入的时候前面加一原创 2017-08-17 20:59:51 · 269 阅读 · 0 评论 -
第七次多校联合hdu6121Build a tree
题目题意:有一棵nnn个点的有根树,标号为000到n−1n-1n−1,iii号点的父亲是⌊i−1k⌋\lfloor\frac{i-1}{k}\rfloor号点,求所有子树大小的异或和。题解:思路和代码都来自这个人→传送门但是这位大佬好像没有提到满k叉树,好像弄错了完全k叉树的定义。。。。。。(不敢造次)大致思路就是分别讨论满k叉树的情况和完全k叉树的情况。递归一下。代码还是比较好弄明白的。 (大致原创 2017-08-17 11:04:25 · 317 阅读 · 0 评论 -
第七次多校联合hdu6129Just do it(题名好棒)
题目(有点小感言说一下吧,在刚看这个题的题解的时候,没有好好理解消化,看不懂,所以总是觉得别人的博客写的不好,但是真正弄懂了之后,觉得别人写的就很对了,错还是自己身上,所以还是努力提高自己吧。)题意:给一个a序列,然后进行m次前缀异或,得到b序列。题解:先找一下规律: (字母后面的数字是表示个数)容易得出第i行第j个等于第i-1行第j个加上第i行第j-1个。 那规律就是:原创 2017-08-16 19:14:50 · 205 阅读 · 0 评论 -
第七次多校联合hdu6127
题目题意:平面直角坐标系上有nnn个整点,第iii个点有一个点权vali,坐标为(xi,yi)(x_i,y_i)(xi,yi),其中不存在任意两点连成的直线经过原点。这些整点两两之间连有一条线段,线段的权值为其两端点的权值之积。你需要作一条过原点而不过任意一个给定整点的直线,使得和这条直线相交的线段的权值和最大。题解:按斜率排序(如果不额外存下斜率的话需要重载运算符,否则会超时),枚举每原创 2017-08-16 11:13:24 · 284 阅读 · 0 评论 -
第七次多校联合hdu6130 Kolakoski
题目据说这是签到题。完全没看这个题(估计看了也不一定会。。)名字居然就是这个序列的名字,甚至还有百度百科?因吹斯听。(高中生好强大。。。。)百度百科就是根据这个位置的值去给序列尾加元素,这个位置的值控制加几个,序列尾元素控制下一个是什么。#include<bits/stdc++.h>using namespace std;vector<int> a;const int maxn=1e7+2;原创 2017-08-15 19:42:56 · 285 阅读 · 0 评论 -
2017第六次多校联合hdu6103
题目题意还是比较好理解的,就是求小于所给m的最大dis的子串最大长度。题解:首先正方向枚举每一个点,固定这个点作为开始的左边界。然后分别从这个左边界和最后一个点开始拿,直到dis>m,这时候更新长度最大值,然后把已经前面已经拿的点减去,直到dis#include<bits/stdc++.h>using namespace std;const int maxn=5000+100;char s[m原创 2017-08-11 14:37:37 · 264 阅读 · 0 评论 -
2017多校联合第6次hdu6105Gameia
题意:有一颗大小为n的树,有两个人A,B可以在树的节点上涂颜色,A涂白色,B涂黑色,B是VIP,所以B在一个节点涂色之后与这个节点相连的节点也会变成黑色,然后B拥有k个可以切除一条边的机会。题解:n为奇数必败。这个自己写一写就知道。然后n为偶数的时候,用vis数组记下节点i作为父节点的次数,然后用结构体数组存下i的儿子和i的儿子个数,再去便利i的儿子有没有作为父节点的情况。 这里其实是找这个树中是原创 2017-08-10 16:40:06 · 467 阅读 · 3 评论 -
2017第四次多校联合hdu6070
题目(比赛的时候题意读错了好几次,终于最后明白了题意的时候,wtf,这是什么,怎么做。不知道。。。。泪。。。 然后比赛完了,看到群里好多大神在说这是一眼题。。。心好累,我怎么这么菜) 题意:给你一个序列,数字代表题号,然后这是提交的情况,让你从中选取一个序列,问那时的正确率最低。题解:正确率即size()r−l+1≤mid\frac{size()} {r-l+1} \le mid,这里的size原创 2017-08-08 10:20:22 · 352 阅读 · 0 评论 -
2017第四次多校联合hdu6078
题目题意:给你a,b两个序列,想要找出两个序列f,g(均为递增序列),使afi=bgia_{f_i}=b_{g_i},且af1,af2......afna_{f_1},a_{f_2}......a_{f_n}是波浪型},计算·有多少种f,g序列。题解:固定aia_i,去找bib_i,只需要考虑相等的情况,不相等的情况只需要相加就好了。 波浪一定会有波峰和波谷,如果对于一个aia_i来说,如果在b中原创 2017-08-08 09:53:24 · 323 阅读 · 0 评论 -
2017第三次多校联合hdu6058
题目 题意:给你n,k和序列A,求∑nl=1∑nr=1f(l,r,k)\sum_{l=1}^n \sum_{r=1}^nf(l,r,k)题解:便利数组元素,找每一个点aia_i左右各K个比它的大的数,记下与 aia_i的距离,然后组合一下看看有多少种可能能组成使aia_i成为第K大数,然后求和。 ps:这个方法是巧妙的暴力。如果运气不好会超时。。。#include<bits/stdc++.h>原创 2017-08-04 20:34:52 · 356 阅读 · 0 评论 -
第十次多校联合hdu6178Monkeys(输入输出挂)
题目比赛时候请假回家了,听说都挂机了就没再做(2333)。思路还是比较好想的(?)就是先找出有多少组点-线-点。然后再判断与k的关系。关键还是在于输入挂(随便从网上扒了一个输入挂模板t到死。。难受。。。。。ORZ)#include<bits/stdc++.h>using namespace std;const int maxn=1e5+100;vector<int> e[maxn];int v原创 2017-08-29 20:21:41 · 273 阅读 · 1 评论