Codeforces Round #365 (Div. 2)

5/5

这场CF有毒啊!!好在不计rating(/▽╲)

题A Mishka and Game

题意:略

题解:略

题B Mishka and trip

题意:给你一个图,告诉你一开始围成一个环,然后每个点都有自己的权值,然后两个点的路径权值为这两个点的乘积,然后告诉你某些点是中心点,然后问你权值之和。

题解:这题有点意思,第一题太水了,反而觉得不太好。

(1)先算出对于那些中心点的所有权值,这样会重复,画图发现重了的地方就是多算了一次这些中心点形成的完全图,所以只要(2)减去这些中心点形成的完全图即可。(3)最后要加上那些不是中心点并且左边也不是中心点的点。

题C Chris and Road

题意:给你一个凸多边形,然后告诉你人在原点,最大速度为u,凸多边形的速度为v,可以碰到这个多边形的边,但是不能够进去内部,问你时间t。

题解:刚开始我看这道题没什么思路,div2第三题都不会做了,好弱~~

现在站在上帝视角,的确是div2第三题,如果一开始就往这个方向想的话。。。。

先假设一定要等到凸边型过去了才能过去,考虑凸边型的一个端点(a,b),假设这个点是最慢的点(不一定是最下边的点),那么这个点经历的时间是a / v,然后我们到达这个点的时间是b / u,显然我们要等到这个点过去了才能过去,所以你u再快也没卵用,u慢也没影响,因为等你过去了,它也已经过去了,所以我们做个时间差,a / v - b / u,这个时间差最大的时候就说明这个点是最慢的点,然后一定要等这个点过去了,后面一定可以以u的速度跑到终点(可以联系凸的性质),所以最后的答案是a / v - b / u + w / u;还有一种情况没说,就是假设我们在凸边型到达y轴之前就先过去了不就可以了,所以记录一个a / v - b / u最小的点,然后如果这个a / v - b / u >= 0就说明可以一直以u的速度前进。

题D Mishka and Interesting sum

题意:给你一串数,然后有q个询问,问你[l,r]出现偶数次数的数的异或和。

题解:通过这道题我学会了离线处理区间问题的姿势。假设预处理一个前缀和,显然只能够得到这个区间的奇数次数的数的异或和,如果有这个区间所有不同的数的异或和的话就可以异或起来得到偶数次数的异或和。处理的方法就是树状数组(当然也可以线段树)。先按照r排个序,然后先把数插入到树状数组,但是如果遇到之前出现过的数,那么就把那个位置的数删掉即可(仔细推敲一下还是可以的)。通过这样离线处理这个不重复的数还是很有效的(套路)。之前训练遇到一道题强制在线(用了分块或者kdtree),感觉这样积累套路还是不错的。

题E Mishka and Divisors

题意:给你n个数和k,让你从这n个数里面挑最少的数形成k的倍数,如果个数一样就使得数的和最小。

题解:dp(i,j)表示前i个数得到j的倍数的最小的个数,最后答案是dp(n,k)。这个k这么大,用Hash一下即可,比较简单的E题。

时间: 2024-10-27 12:01:05

Codeforces Round #365 (Div. 2)的相关文章

Codeforces Round #365 (Div. 2) D - Mishka and Interesting sum(离线树状数组)

http://codeforces.com/contest/703/problem/D 题意: 给出一行数,有m次查询,每次查询输出区间内出现次数为偶数次的数字的异或和. 思路: 这儿利用一下异或和的性质,在一个区间中,我们如果把所有数字都异或的话,可以发现最后偶数次的数字异或后都变成了0,只剩下了奇数次的数字异或. 举个例子,{1,2,3,2,3,5} 异或和是1^2^3^2^3^5=1^5 因为最后要计算偶数次数字的异或和,那么最后我们只需要再异或上该区间内所有不同数字即可. 那么我们可以先

Codeforces Round #365 (Div. 2) C

链接:http://codeforces.com/problemset/problem/703/C 分析:  这题其实是个大水题,只要短短的几行就可以搞定的, 首先需要直觉判断一点,就是只要判断最左边的点和最下面的点 以及和他们相邻边的右边的点 第二部我们就需要判断人与这两个边有没有交点,如果人与上面的有交点,那么人肯定就需要在下面的那条边等待  等待的时间是 max(x - y*1.0*v/u) 那么我们所需要做的还有一步就是判断就是需不需要等待 ,当min(x - y*1.0*v/u) >=

Codeforces Round #365 (Div. 2) A

Description Mishka is a little polar bear. As known, little bears loves spending their free time playing dice for chocolates. Once in a wonderful sunny morning, walking around blocks of ice, Mishka met her friend Chris, and they started playing the g

Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)

题目链接:http://codeforces.com/contest/703/problem/D 给你n个数,m次查询,每次查询问你l到r之间出现偶数次的数字xor和是多少. 我们可以先预处理前缀和Xor[i],表示1~i的xor和.因为num^num=0,所以Xor[r] ^ Xor[l - 1]求的是l~r之间出现奇数次的数字xor和. 那怎么求偶数次的呢,那我们可以先求l到r之间不重复出现数字的xor(比如1 1 2 求的是1 ^ 2),然后再xor以上求出的Xor[r] ^ Xor[l

Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum 树状数组

D. Mishka and Interesting sum 链接: http://codeforces.com/problemset/problem/703/D 题意: 给一个序列 每次询问一个区间 求区间中出现次数为偶数次的数的异或和 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<map> 5 using namespace std; 6 7 str

Codeforces Round #365 (Div. 2) B

Description Little Mishka is a great traveller and she visited many countries. After thinking about where to travel this time, she chose XXX — beautiful, but little-known northern country. Here are some interesting facts about XXX: XXX consists of n 

Codeforces Round #365 (Div. 2) D 树状数组+离线处理

D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megabytes input standard input output standard output Little Mishka enjoys programming. Since her birthday has just passed, her friends decided to present her wit

Codeforces Round #365 (Div. 2) D.Mishka and Interesting sum

题目链接:传送门 题目大意:给n个数,m次询问,每次询问区间 l,r 内出现偶数次数的异或和 题目思路:前缀和+离线处理+树状数组 首先可以知道, l,r 内出现奇数次的数的和,就是把 l,r内所有数异或起来就是答案,那么出现偶数次的数就可以 先求出区间 l,r 内有多少不同的数,将这些数异或起来,再异或上区间内出现奇数次的数的异或和就是答案.(出现偶数次的数异或后为0,奇数次的数异或后是本身   然后离线处理询问,对询问按右端点 sort,因为树状数组保存的是数出现的最后位置.离线处理询问后便

Codeforces Round #365 (Div. 2) ABCD

A. Mishka and Game 题解: 水题..比较大小即可 代码: #include<bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define se second #define fs first #define ll long long #define CLR(x) memset(x,0,sizeof x) #define SZ(x) ((int)(x).size())