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 跟我的做法不同。我的做法比他给的复杂度低一点,不过题解好帅,而且跑出来速度好像差不多。

我的做法是枚举friend使用每一个字符串,bfs看到哪些位能够刚好确定这个字符串!复杂度一直下不来。直到我发现了一个小技巧。有兴趣可以看http://codeforces.com/contest/482/submission/9351777

D 如果不考虑那个子树的染色顺序就是一个很水的题了。于是我考虑只要找到一些不管正着来反着来都一样的染色方案就行了,由于每棵子树从根节点开始染色,于是这种方案显而易见就是左兄弟子树所有染色节点的和等于右兄弟子树所有染色节点的和。很明显要么这些兄弟都是奇数个染色,要么都是偶数个。(因为若某个为奇数,左右和必然是偶数,则总体和为奇数,假如还有一个偶数,左右和为奇数,总体和偶数,则矛盾,偶数也是同理)之后就随意搞了。具体可看http://codeforces.com/contest/482/submission/9353680

时间: 2024-10-10 18:06:55

Codeforces Round #275 (Div.1) Solution的相关文章

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. 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)

链接: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 #282 (Div.1) Solution

上午考试,下去去参观教堂,回来睡大觉,搞到现在才有时间做,水平恢复中. A 倒过来扫括号匹配很容易理解 B dp[i]表示最后一个拿到i的数目,sum[i]表示前i项dp和,sum2[i]表示前i项sum和.显然.dp[i]=sum2[o], o是最右边的坐标使得s[o+1,i]能包含t. C Interesting,我建了个树,硬着dp搞得..还没优化就46ms,想来这种题数据也不好构造. D Editorial似乎说离线搞,不过我在线搞出来了.我存了每个节点子树平方和,子树和,整体和,整体平

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 #538 (Div. 2) solution (贪心,数学其他,二分,线段树)

已经写了100篇题解啦! link solution pdf #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; inline int read(){ int f=1,ans=0;char c; while(c<'0'||c>'9'){if(c=='-')f=-1;c