Codeforces Round #275

483 A. Counterexample

做题感悟:这题开始一看数据范围就暴力了一下,虽然过了,但是一看题解顿时无语,想的太少了。

解题思路:

如果区间范围小于 3  或者等于3且第一个数为奇数则输出 -1 ,否则的话,输出从第一个偶数开始的三个数就可以了。为什么可以这样呢?因为相邻的两个数一定互素,偶数的话一定不互素。

代码~~>

483 B. Friends and Presents

做题感悟:这题做的时候一不小心看到旁边的标签,结果就轻松AC了,看来以后要拉到某个地方再做。

解题思路:

先来张图:

这题二分好想 ,但是判断二分的值是否合法不好判断 。如上图( A代表 x 的倍数,B 代表 x 与 y 的共同的倍数 ,C代表 y 的倍数 ),假设你二分到  M ,首先去除 x * y  的倍数,x * y  的倍数都不能用给,然后 y 的倍数应该给 x 的那个人,同理 x 的倍数给 y 的那个人,这样才做到不浪费。这样以后如果第一个人从第二个人的倍数得到的数的个数还不能满足要求,就从 M -  A - B - C 中取 cnt1  - C ,否则取 0 ,同理 第二个人也这样,那么,最后只要判断
M - A - B - C 是否大于等于 两个人在从对方拿到若干个数后还需要的数的总个数。剩下的就是二分了。

代码~~>

时间: 2024-10-13 12:17:31

Codeforces Round #275的相关文章

Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造

Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/482/problem/A Description Permutation p is an ordered set of integers p1,   p2,   ...,   pn, consisting of n distinct posi

Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)

题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation 题意:一串排列1~n.求一个序列其中相邻两项差的绝对值的个数(指绝对值不同的个数)为k个.求序列. 思路:1~k+1.构造序列前段,之后直接输出剩下的数.前面的构造可以根据,两项差的绝对值为1~k构造. AC代码: #include <stdio.h> #include <string.h> int ans[200010]; bool vis[100010]; i

Codeforces Round #275 (Div.1) Solution

好久没做题了,开场Virtual热热身. A 构造,我的方法是,取1,2,3...,k这几个差值,前k+1个数分别是 1, k+1, 2, k, ...., 之后就k+2, k+3, ..., n B 因为题设是与操作.我们按照每一位来,如果有一个限制某位是1,则将那段区间标志1,没有限制的位全部置零即可,然后检验为0的位是否全是1.标志一段区间可以用标记法,检验可以求和看差值. C 我做完之后看了CF tutorial 跟我的做法不同.我的做法比他给的复杂度低一点,不过题解好帅,而且跑出来速度

Codeforces Round #275 (Div. 2)

链接:http://codeforces.com/contest/483 A. Counterexample time limit per test 1 second memory limit per test 256 megabytes Your friend has recently learned about coprime numbers. A pair of numbers {a,?b} is called coprime if the maximum number that divi

Codeforces Round #275 (Div. 2) A

题目传送门:http://codeforces.com/contest/483/problem/A 题意分析:在l到r的范围内找三个数,a,b,c . a和b互质,b和c互质,但a和c不是互质. 因为r-l<=50.所以直接暴力枚举三个数就行了. 代码: #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <iostream>

Codeforces Round #275 (Div. 2) B

题目传送门:http://codeforces.com/contest/483/problem/B 题意分析:在1-v的范围内找到一些数分为两个集合,满足第一个集合的元素不能被x整除且个数为cnt1, 第二个集合的元素不能被y整除且个数为cnt2,求最小的v: 二分答案,然后用只满足整除x,只满足整除y和既可整除x又可整除y这三个元素的关系去check一下 代码: #include <cstdio> #include <algorithm> #include <cstring

Codeforces Round #275 (Div. 2) C

题目传送门:http://codeforces.com/contest/483/problem/C 题意分析:题目意思没啥好说的. 去搞排列列举必须TLE,那么就想到构造. 1,n,2,n-1,3,n-2这个样子.k/2就是需要交换的元素对数,还需要考虑一下k的奇偶去判断没交换的元素是顺序输出还是逆序输出.自己尝试下几个数据就明白了. 代码: #include <cstdio> #include <algorithm> #include <cstring> #inclu

[Codeforces Round #275 (Div. 2)]B - Friends and Presents

最近一直在做 codeforces ,总觉得已经刷不动 BZOJ 了? ——真是弱喵 你看连 Div.2 的 B 题都要谢谢题解,不是闲就是傻 显然我没那么闲 ╮(╯_╰)╭ 我觉得这题的想法挺妙的~ 大意是你需要分别给 a 和 b cnt1 和 cnt2 个数字 但是 a 不要被 x 整除的数 ,as well as,b 不要被 y 整除的数 然后求需要给的最大数的最小值—— 最值的最值?那不是典型的二分吗? 但是——坑爹的英文题导致我完全没有意识到这一点…… 二分答案 v ,因为 a 不要被

Codeforces Round #275 (Div. 2) D

题意 : 一个数组 给出m个限制条件 l r z 代表从l 一直 & 到 r 为 z  问能否构造出这种数组 如果可以 构造出来 因为 n m 都是1e5 而l r 可能输入进去就超时了 所以刚写完线段树课件的我想了很久想出来了线段树解法 ... 想法是这样的 每次输入 update 结束后 全部query一遍 看看是否和期望一样 一开始的想法是 存下每个数组的&值 一开始是1<<31 - 1 然后每次进行update 都求出这个区间在树上区间没有被更新到的点的& 三者

Codeforces Round #275 (Div. 1)

A 题意:给一个N和一个K,求一个1到N的排列,使得abs(a1-a2),abs(a2-a3)...abs(an-1-an)为k个不同的值. 题解:易知我们最大可以凑出N-1个不同的值只要这样1,N,2,N-1,3,....即可 所以我们还按照这个方式来,到凑出来k-1个数之后,把剩下的数从小到大输出即可,这样第k个值为1. #include <cstdio> #include <cmath> #include <iostream> #include <cstri