首页
博客
源码
资源
博客
源码
写文章
发布博客
发布资源
登录
X
codeforces
相关资讯
热门
最新
代码人生
01-01 08:00
代码人生
CodeForces 13E. Holes 分块处理
CodeForces 13E. Holes 分块处理,正解是动态树,太难了,只好分块处理水之。看了看status大概慢了一倍之多。分块算法大体就是在找一个折衷点,使得查询和修改的时间复杂度都不算太高,均为o(sqrt(n)),所以总的时间复杂度为o(m*sqrt(n))。分块的大体思想就是将整段区间分成sqrt(n),每次修改影响所在段内的sqrt(n)个点,每次查询遍历sqrt(n)段,然后搞出
113
代码人生
01-01 08:00
代码人生
Codeforces Round #736 (Div. 2)C. Web of Lies(结论)
Codeforces Round #736 (Div. 2)C. Web of Lies(结论) 题目大意: 一张图,若于a相连点的序号都比a大则a可删除。 q次询问 od=1 x,y 给xy连边 od=2 x,y 给xy删边 od=3 询问几个点没被删除 题解:发现有连锁反应,只要某点所连接的点中有序号比它大的就一定会被删除。 #include<bits/stdc++.h> using namespace std; const int
111
代码人生
01-01 08:00
代码人生
CodeForces - 1252H Twin Buildings(贪心)
CodeForces - 1252H Twin Buildings(贪心) 题目大意 ??在n块\(W\times H\)的地里建两个建筑,可以建在同一块地,也可分开,建筑与边界平行。 解题思路 ??建在同一块地很好算,主要是建在不同的地里怎么算。首先将长边从大到小排序,然后开始遍历,将当前的长边当作建筑的一边,而将之前的最长的短边与现在的短边取最小值,显然之前遍历过的地里就有包括当前的情况的地。 ??还有一点需要注意的就是,
110
代码人生
01-01 08:00
代码人生
Codeforces Round #731 (Div. 3) D. Co-growing Sequence(位运算/贪心)
Codeforces Round #731 (Div. 3) D. Co-growing Sequence(位运算/贪心) include <bits/stdc++.h> using namespace std; int n; int x[200005], y[200005], xr[200005]; int main() { int t; cin >> t; while(t--) { cin >> n; for(int i =
98
百科问答
01-01 08:00
百科问答
CodeForces 230B
CodeForces 230B CodeForces 230B 关键问题: 可被三个除数整除的数<=>素数的平方,其三个除数为(1,n,prims)。那么问题就转化为寻找【0,10^6】内的所有素数(筛法)的平方集,然后在集中搜索输入值; 我的解法 埃式筛法 #include <iostream> #include <vector> #includ
66
代码人生
01-01 08:00
代码人生
Codeforces Round #721 (Div. 2)
Codeforces Round #721 (Div. 2) Codeforces Round #721 (Div. 2) 来源:https://codeforces.com/contest/1527 A. And Then There Were K 不妨打一个表看看有没有什么规律. 发现每个数字 $\mathrm{x}$ 的答案是 $\mathrm{x}$ 二进制
65
百科问答
01-01 08:00
百科问答
Codeforces Round #743 (Div. 2)题解
Codeforces Round #743 (Div. 2)题解 A,B,C过得还算艰险,主要是昨天cf炸的有点厉害....一直在打第四题的时候,才知道B,C错了,又得回去调... 简化题意:给定一个长度为n的0/1序列,每次可以将连续的三个数变成他们异或后的值,问是否存在一种构造方案使得操作次数<=n,并且使得序列中的所有元素都为0. 首先想到的就是将所有的情况罗列下来: 000 -> 111, 110
58
代码人生
01-01 08:00
代码人生
Codeforces Global Round 16
Codeforces Global Round 16 思路: 因为一共有n个数,然后我们要让中位数最大,而题目定义的中位数是第(n+1)/2个数,从这个开始数,到第n个数,一共有cnt= n/2+1个数,我们只要保证后面的数都是s/cnt,这时s/cnt即为所得的最大中位数 #include <bits/stdc++.h> using namespace std; int main(
55
百科问答
01-01 08:00
百科问答
codeforces CF 1574E (combinatorics,组合数学,思维题)
codeforces CF 1574E (combinatorics,组合数学,思维题) 第一步 从简化问题入手,我们先考虑所有位置都能自己填的情况,即初始情况: 尝试以行为单位来从上往下一行一行填数字,很显然当前行的方案数只与上一行的填写情况(即上一行的状态)有关。但是状态太多了,我们找一下规律。 比如上一行是这么填的: 10110001 很显然,如果上一行出现了连续的1,下一行对应位置就必须是连续的0,反过来同理。 因此下一行目前是这样:
55
«
1
2
»