CodeForces专题提供CodeForces的最新资讯内容,帮你更好的了解CodeForces。
题意:在 n×m 的二维图上,有三种操作: 1 r1 c1 r2 c2 表示沿着 (r1, c1, r2, c2) 所表示的矩形的外边框建围墙。(其中 (r1, c1) 为矩形左上角,(r2, c2) 表示矩形右下角)。 2 r1 c1 r2 c2 表示取消 (r1, c1, r2, c2) 所示矩形的围墙。(保证最初图不存在围墙,删除的围墙一定是之前通过操作 1 建立的)。 3 r1 c1 r2
题意:给你n个数,m次询问,每次询问一个区间[l, r],问这个区间内元素出现个数等于元素本身的有几个。(n, m <= 1e5) 思路:裸的莫队,因为每个数比较大,离散化下就好了。 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+5; int n, m, uni
Codeforces Round #439 (Div. 2) A. The Artful Expedient 由于 xi⊕yj=xk⟺xk⊕yj=xi ,所以一定是偶数个。 Karen B. The Eternal Immortality 差超过5的一定是0,否则暴力就好。 #include <bits/stdc++.h> using namespace std; long long a, b;
题意:给定一个长度为n(n<=2e5)的数组,分别求出长度为(1~n)的所有区间的最小数的最大值。 思路:ans[i]表示长度为i区间的答案,我们可以知道如果i<j,那么ans[i]>=ans[j],所以可以用长度大的区间答案去更新长度小的,所以对于每个元素,只要找到他能覆盖的最大区间长度,然后只更新这个长度的答案即可,最后再整体用长度大的更新小的一次。求每个元素他能贡献的最大的长度可以用单调栈。
http://codeforces.com/contest/869 1 给定两个数组,问你是否存在a[i]^b[j] 存在与a或b数组中。 规定,这2*n个数字都是不同的 统计符合条件的 数对 为奇数还是偶数。。 模拟。。 或者,ai xor bj = ak,那么ak xor bj = ai。 所以一定是偶数。。。 还wa了一次,两个数异或,是可能大于这两个数的max的。。 #include <b
原题链接: C. The Intriguing Obsession 大意: 有若干个小岛,由三种颜色组成,现在在小岛之间添加桥,桥的长度为1,要求相同颜色的小岛之间的路长度不小于三,求有多少的方法。 思路: 可以看成一个三棱柱,每条棱代表一个颜色,易得棱上没有线段相连,那么考虑一个面上的线段连法。易得 不能有两个 A 棱上的点同时连到 B棱上的相同点。 线段数 i 从 0~min(a,b) ,对于
原题链接: B. Maximum of Maximums of Minimums 大意: 分成 k 个不重合的连续子串,即一个“划分”,求最小值的最大值。 分析: 被坑了,给自己长个记性,答案初始化成 0 了,最大最小值都记得初始化为inf,把答案忘了,务必把所有ans,minn,maxn初始化输入的值。 写的话两头各扫一遍求出 MIN[]数组 具体实现: #include <bits/stdc+
http://codeforces.com/contest/867/problem/E 之所以叫好题,无非代码特别短。。。 给定每天的价格,你可以买或者卖或者什么也不干。 问你最大的收益。 直接用优先队列是不可以的。(事实上没有过第二组样例) 对于一个数字,如果之后的的数字如果比这个数字还大,那么我们可以当作之前买了一个,然后现在卖出去,可是这样的做法存在问题,比如1,2,3,66,按照那样的做法
A. Trip For Meal time limit per test 1 second memory limit per test 512 megabytes input standard input output standard output Winnie-the-Pooh likes honey very much! That is why he decided to visit his
0x00 前言 哇,真的是好久好久没有打Codeforces了呢…… 距离上一次(2015-04-14 23:47)竟然已经过了两年半之久… 嘛,总之……还凑合QvQ…… 0x01 A. Trip For Meal 题目传送门:http://codeforces.com/contest/876/problem/A 题目大意 有三个小伙伴,姑且称作A、B、C吧~ A家到B家为a米,A家到C家要走b米
http://codeforces.com/contest/876 1 给定三个人屋子之间的距离,你要去m个人的屋子里蹭饭,因为开始默认再某一个家里,你只需要再去m-1个。规定,不能再一个家里连续吃两顿饭。问你为了这m个饭,走的最短的距离。 直接暴力暴利的模拟。。 #include <bits/stdc++.h> using namespace std; /* 三个人。 */ int a[3];
http://codeforces.com/contest/851/problem/C 记得有几次的没写是div1还是div2,不过我tm怎么会做div1.。。 A 直接算。连循环都没有。 规律可以直接看下面的讲解。 #include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,k,t; int main() {
原题链接: sort the coins 大意: 一排硬币排成一排,有两种硬币,把其中一种按照两两交换的规则归到右侧,求需要归并多少次才能把所有这种硬币归到右侧。 分析: 由于硬币是按照时间顺序放的,容易想到第n个答案和n-1个答案必然存在某种关系。 找规律可以发现: 每次放置一个新的点,答案都比前一个多一,当这个点放在末尾时,相当于回退一个。 每次移动后 每个硬币就是在它的下一个非法硬币的前一个
http://codeforces.com/contest/872 A 给定俩数组,要求你输出一个数,这个数字至少包含每个数组中一个元素,并且要求最小 当两个元素有两个相同的,那么就输出就好了qwq 否则 输出俩数组中最小值组成的数。 #include <bits/stdc++.h> using namespace std; /* 直接写。 */ int m,n; int a; int vis[1
http://codeforces.com/contest/872/problem/C 给定m个数。 问每个数最多由多少个合数相加而来。。 1.n%4==0  这个时候直接输出n/4即可。 2.n%4==2  这个时候还是直接输出n/4,因为n%4==2相当于(n-6)%4==0,而6也是合数。 3.n%4==1 || n%4==3  那么n自然是个奇数,这个时候我们找个最小的奇合数处理下就行(n
A. Borya's Diagnosis time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output It seems that Borya is seriously sick. He is going visit n doctors to
B. Table Tennis time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output n people are standing in a line to play table tennis. At first, the first
B. Table Tennis 题意看错好几次。。。 n people are standing in a line to play table tennis. At first, the first two players in the line play a game. Then the loser goes to the end of the line, and the winner pla
http://codeforces.com/contest/877 不告诉你们我写了几个qwq A 写了比较麻烦了, 不过差不多,用了find函数来找的。 #include <bits/stdc++.h> using namespace std; string s; string w="Danil"; string w2="Olya"; string w3="Slava"; string w4=
http://codeforces.com/contest/877/problem/D 给定一个点,问你从x点到y点,需要的最少时间。 没秒可以走小于等于k步。 暴力的bfs也是没谁了。。怎么可能过。 后来又写了一种方案,枚举每个点往前后左右的最大可移动距离,还是t (再51nod见过一道类似这种方法的。) 百度之,好多方法。 ① 剪枝,相同方向剪,维护局部最小距离剪。 ② 把vis变量分为四个方