![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CF
_pkm_
love coding
展开
-
CF 343D D. Water Tree(树链剖分,简单题)
题目链接 题意:给出一个树;三种操作 1 v 表示把v及其子树全部变为1 2 v 表示把v及其祖先全部变为0 3 v 查询v的值 数组尽管开吧,,, 然后,祖先就是1到该点,不要想太多- - 子树的编号在剖分的编号中是连续的,[p[x],p[x]+size[x]-1]#pragma comment(linker, "/STACK:102400000,102400000")//#inc原创 2016-10-29 14:55:55 · 609 阅读 · 0 评论 -
Codeforces Round #280 (Div. 2)D. Vanya and Computer Game(二分)
题目链接 题意:A,B俩人一起打怪,A一秒打X次,B一秒打Y次,(每个人的攻击是对所有的怪物都有效果),每个怪物被打ai下就会死掉,问最后一下是谁打的。 解法 :A打一次是1/X 秒 B打一次是1/Y秒,浮点数不好计算,我们把二者乘以XY,那么 A打一次就是Y秒,B打一次就是X秒。然后二分怪物被打死的时间t.条件是t/X+t/Y>=a#define CF#if原创 2015-12-02 11:29:48 · 423 阅读 · 0 评论 -
Codeforces Round #280 (Div. 2)C. Vanya and Exams(贪心)
题目链接 题意:告诉你某人有n们课程,每一门的课程有分数上限r,以达到及平均分avg,才能拿奖学金,然后给出每门课当前的得分ai,以及如果你写bi篇文章的话,会使你的该们课程的分数提升一点,。 解法:贪心,按照bi小的开始贪心的选择。#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#inc原创 2015-12-02 10:56:42 · 360 阅读 · 0 评论 -
Codeforces Round #280 (Div. 2) E. Vanya and Field (数学GCD)
题目链接 题意:给你n*n的地图,假若你在(x,y)这个点,那么下次你可以到达点 ((x+dx)%n,(y+dy)%n),其中gcd(dx,n)==gcd(dy,n)==1,然后告诉地图上有m个点有苹果树,问你怎么选择起点可以经过最多的苹果树,多解输出一组即可 解法:gcd(dx,n)==gcd(dy,n)==1这个条件的存在,我们先看一维的情况,假设dx=3,n=5; 从0出发0–>3–>原创 2015-12-02 12:08:16 · 377 阅读 · 0 评论 -
Codeforces Round #280 (Div. 2)A. Vanya and Cubes(简单计算)
题目链接 题意:搭积木,告诉你第i层需要i*(i+1)/2个,然后给你总数n个,问你可以搭几层 题解:直接计算#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<iostream>#include<set>原创 2015-12-02 10:49:41 · 257 阅读 · 0 评论 -
Codeforces Round #334 (Div. 2)C. Alternative Thinking(贪心)
题目链接 题意:给你一个长度是n的01序列,然后你可以选择一个非空子串,进行反转操作,0变1,1变为0(只能操作以次),最后能形成的最长的交替序列,一共有多长。 解法:写几个情况分析下,就会发现,每次最多只能增加2,对于这个长度2的产生。 一:明显只要原来的序列存在长度不小于3的颜色一样的子串,就可以增加2,比如0[111]0–>01[0]10 二:(比赛的时候没有想到的),就是原来序列没有原创 2015-12-02 16:13:09 · 352 阅读 · 0 评论 -
Educational Codeforces Round 2D. Area of Two Circles' Intersection(计算几何+圆相交的面积)
题目链接 题意:计算圆的相交面积 解法:模板来一发,但是坑的是,精度。用long double ,cout.precision(9);设置输出精度9位#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#else#include<bits/stdc++.h>#e原创 2015-11-29 16:37:29 · 426 阅读 · 0 评论 -
Educational Codeforces Round 2C. Make Palindrome(贪心构造)
题目链接 题意:给你一个字符串,你可以任意的改变字母。和调整顺序,但是,调整顺序不计操作次数。要求操作次数最小,的时候字典序最小的回文串。 解法:考虑到是回文串,字符串里面最多只有一种奇数字母,我们统计好字母的个数,把后面的奇数的字母减少一个变为前面的是奇数的字母,这样既保证了操作次数小,也保证了字典序。#define CF#ifndef CF#include<cstdio>#includ原创 2015-11-29 16:32:47 · 396 阅读 · 0 评论 -
Educational Codeforces Round 2B. Queries about less or equal elements(二分查找)
题目链接 题意:给你一个数组a ,然后给你一个数组B,让你找出b[i]在A中有多少是小于他的 解法:排序a数组,二分查找即可#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#else#include<bits/stdc++.h>#endif // CFu原创 2015-11-29 16:24:59 · 334 阅读 · 0 评论 -
Educational Codeforces Round 2 A. Extract Numbers(模拟)
题目链接 题意:给你一个字符串,其中逗号,封号分开的是单词,现在要把由纯数字(多位数字的话不能以0,或者-开头)的单词选择出来组合为A串,剩下的是B串,如果某个串是空输出’-“ 解法:模拟,先把单词分割出来,然后,写一个判断是不是数字的函数#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#in原创 2015-11-29 11:53:15 · 276 阅读 · 0 评论 -
Codeforces Round #282 (Div. 1) A. Treasure (贪心)
题目链接 题意:给你一个序列,要变为完美序列,完美序列是这样的,每个位置的i左括号的个数要大于等于右括号的个数,最后左括号和有括号的数量必须相同,#可以变为1个或者多个右括号,多组解的话输出一个就可以啦。 解法:贪心,除了最后的一个#,其他的都变为1个右括号,然后检查一下。#define CF#ifndef CF#include<cstdio>#include<algorithm>#inc原创 2015-11-26 22:59:16 · 256 阅读 · 0 评论 -
Codeforces Round #278 (Div. 1) B. Strip(Dp+multiset维护)
题目链接 题意:给你n个数,然后把他们分成区间,要求区间尽量少,区间长度不小于L,区间的最大减去最小不小于S。 解法:官方题解: We can use dynamic programming to solve this problem. Let f[i] denote the minimal number of pieces that the first i numbers can b原创 2015-11-26 22:02:22 · 361 阅读 · 0 评论 -
Codeforces Round #330 (Div. 2)D. Max and Bike (二分)
题目链接 题意:有一个轮子做匀速运动。然后轮子上有一点,可以在任何位置,现在问,这一点从s位置到f位置的最小时间, 解法:二分时间t,然后轮子装过的角度是v*t%2*pi*r 然后在转化为弧度。轮子走对称的应该时间少,总距离就是v*t+2*r*sin(angle)#include<bits/stdc++.h>using namespace std;#define LL long long原创 2015-11-20 10:17:36 · 556 阅读 · 0 评论 -
Codeforces Round #332 (Div. 2)A. Patrick and Shopping(简单题)
题目链接 题意:给出家到A,B超市的距离,以及超市之间的距离,问去了A,B超市,再回家的最小路径。 解法:枚举四种情况,手残用了inf(初始化不够大= =)#include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define X first#define Y second#原创 2015-11-21 10:16:26 · 347 阅读 · 0 评论 -
Codeforces Round #330 (Div. 1) C. Edo and Magnets(暴力+矩形覆盖点)
题目链接 题意:n个点,可以删除K个点,然后找一个平行于坐标轴的矩形,覆盖所有的点,面积最小 解答:暴力枚举删除4个边界上的点 AAA:码力不足,参考网上#include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back-#define X first#define Y second原创 2015-11-21 00:06:54 · 626 阅读 · 0 评论 -
Codeforces Round #278 (Div. 1) A. Fight the Monster( 暴力)
题目链接 题意:就是A,B俩人打架,每个人有血量HP,攻击力a,防御d, 然后有商店可以花钱买,血量,攻击力, 防御值. 问A打败B最少花多少钱。A能打败B就是B血量不大于0,A的血量大于0。 解答:题目给出的范围是0-100。首先我们加血是没什么用的,应该加攻击力或者防御力。然后我们枚举加攻击力和防御力的组合情况。结合题目的数据范围,我们知道防御最大也就是加到100,然后攻击力,我们可能的原创 2015-11-25 20:15:54 · 379 阅读 · 0 评论 -
Codeforces Round #334 (Div. 2)A. Uncowed Forces(简单计算)
题目链接 题意:告诉CF的rating计算公式,让你计算一个人的分数, 解答:直接double,免除一切烦恼#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<iostream>#include<set>#原创 2015-12-02 15:59:28 · 388 阅读 · 0 评论 -
Codeforces Round #280 (Div. 2)B. Vanya and Lanterns(贪心)
题目链接 题意:告诉你借到的长度是L,然后有m个街灯位置,然后问你街灯的半径R至少多大,才能够使整个街道每个位置都有灯光覆盖。 解答:贪心,先计算最大的2个街灯之间的距离,然后再看下端点处#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<st原创 2015-12-02 10:52:58 · 262 阅读 · 0 评论 -
Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph (并查集 STL)
题意链接 题意:给出一个图,告诉每个点之间的边的颜色(有重边),问你任意两点之间有多少边连接。 解法:并查集处理,f[x][c]:表示与x 链接且颜色是c的顶点y AAA:姿势不对 会超时,正确的姿势是unordered_map,其暴力遍历的时候要循环小的#include<bits/stdc++.h>using namespace std;#define LL long long#de原创 2015-11-18 18:40:55 · 397 阅读 · 0 评论 -
HDU 5901 Count primes (区间素数个数)
题目链接 题意:计算区间[1,1e11]中的素数的个数 题解上给出了一些相关的知识 1,icpc 2, cf ,F. Four Divisors 3,cf,题解是一道论文题目了,拿来当做模板好了本题目: 模板1O(n(3/4))#include <bits/stdc++.h>#define ll long longusing namespace std;ll f[340000],原创 2016-09-21 09:15:30 · 802 阅读 · 1 评论 -
Codeforces Beta Round #51 D. Beautiful numbers(数位dp)
题目链接问区间[L,R] 之间有多少个数满足,这个数能够整除这个数的每一个数位,比如36可以整除3和6,所以是符合要求的数字。直接看来,一个数每一位还没有确定的时候,就无法知道这个数能不能整除自己的每一位。假如这个数是可以整除自己的每一位,也就是说这个数是自己每一位的公倍数,比如一个满足的数X组成是abc的形式,那么X是a的倍数,b的倍数,c的倍数,也就是X%lcm(a,b,c)==0。然后1-9的原创 2016-09-22 10:36:44 · 282 阅读 · 0 评论 -
Codeforces Round #368 (Div. 2)(D. Persistent Bookcase 离线 转化DAG)
题目链接给出n*m的书架,4种操作 1,x,y,如果(x,y)空,该位置则放一本书 2,x,y,如果(x,y)不空,该位置拿走一本书 3,x, 把这一层有书的拿出,没书的放上书,即反转 4,x, 返回到第x操作后的书架的状态初始书架是空的,要注意一点的是,题目可能在没书的地方拿书,有书的地方放书,明显这样的操作是不成功的,没影响的,所以要标记一下。麻烦的是第4操作,无法记录每次操作的原创 2016-08-21 11:09:46 · 321 阅读 · 0 评论 -
Codeforces Round #368 (Div. 2)(C. Pythagorean Triples 勾股数规律)
题目链接给出一个数,输出2个数,使得这三个数是勾股数形如2n,n^2-1,n^2+1可以组合成勾股数,这是偶数的情况 奇数的时候看个例子 3,4,5 4 = (1+3) * 1 5,12,13 12 = (1+5)*2 7,24,25 24 = (1+7)*3 9,40,41 40 = (1+9)*4 … 第二列数就是第一列数在以3为首项原创 2016-08-21 10:53:19 · 250 阅读 · 0 评论 -
Codeforces Round #368 (Div. 2)(B. Bakery 贪心)
题目链接给出n个城市,m条道路,然后选择k个城市中的一个作为仓库,然后选择k个城市之外的一个城市作为商店,问这2个城市最短距离,图可能是不连通的,误解输出-1直接贪心,遍历一遍k个城市,找到与之相连的且不是这k个城市之一的,最短的一个城市#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))原创 2016-08-21 10:43:23 · 292 阅读 · 0 评论 -
Codeforces Round #368 (Div. 2)(A. Brain's Photos)
题目链接给出一个n*m的图,判定是不是黑白图像,黑白图像是只含有W,B,Y的一种或多种要认真读题,很多人hack成功,因为很多人没看到Y#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie原创 2016-08-21 10:37:33 · 193 阅读 · 0 评论 -
Codeforces Round #328 (Div. 2) D. Super M (树的直径,虚树的直径)
题目链接 题意:在一棵树上有几个关键点,现在要把这几个点都遍历一遍,问最小的开销 解答:先用一颗子树T,使得这个子树能够包涵所有的关键点,然后我们知道,如果从一点出发遍历完所有点在回到该点那么路径就是2倍的边的个数,假若我们不再回到起点,那么可以减少走的路径,这么才能使得这个路径减少的最多,就是选择2个点,使得,这两个点之间的距离是树的直径,那么以这两个点任何一个为起点,就可以,2次dfs可以求原创 2015-11-03 21:00:44 · 556 阅读 · 0 评论 -
Codeforces Round #366 (Div. 2) A. Hulk (简单模拟)
题目链接给出一个n表示,说n次,说话的规律是第一次I hate ,第二次是 I love 判断奇偶输出#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define原创 2016-08-08 07:06:45 · 383 阅读 · 3 评论 -
Codeforces Round #366 (Div. 2) C. Thor(模拟)
题目链接一开始理解错了第三个的类型的意思, 手机上有n个应用,q个事件发生。 类型1:应用发生了一个通知 类型2:使用者读完了到目前为止应用x的发出的所有通知 类型3:使用者按照时间先后,读取t个通知 输出每次事件发生后未读通知的数量#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(原创 2016-08-08 07:21:27 · 355 阅读 · 5 评论 -
CF #364 (Div. 2) (B. Cells Not Under Attack 标记)
题目连接 在一个n*n的网格上,若果某个位置上放了一个棋子,那么棋子所在的行和列就算被覆盖了,每次放一个棋子问剩余的没有覆盖的点有几个使用,两个数组分别标记行和列,在用两个变量保存X集合的可用数,Y集合的可用数,那么放入一个棋子,检查下X,Y集合就好了#include<cstdio>#include<algorithm>#include<iostream>#include<vector>#原创 2016-07-28 08:21:38 · 272 阅读 · 0 评论 -
CF #364 (Div. 2)(C. They Are Everywhere 尺取法)
题目链接 题目描述的是抓取精灵,转化一下,就是问在一个长度是n的字符串里面,你选择最短的字串,使得这个字串包涵该字符串中所有的字母至少一次。假设我们知道区间[s,t]的不同字母个数,那么可以计算出[s+1,t1],那么t1>=t, 也就是直接尺取法搞一下就好了#include<cstdio>#include<algorithm>#include<iostream>#include<vecto原创 2016-07-28 09:11:28 · 298 阅读 · 0 评论 -
CF #364 (Div. 2)( A. Cards 简单模拟)
题目连接 n<=100直接暴力计算#include<cstdio>#include<algorithm>#include<iostream>#include<vector>#include<queue>#include<cstring>#include<bits/stdc++.h>#include<map>#include<string>using namespace std;原创 2016-07-28 08:17:19 · 285 阅读 · 0 评论 -
Educational Codeforces Round 2 E. Lomsat gelral(启发式合并map)
题目链接 题意:给你一个树,然后每个节点有一个颜色,然后问你每个节点为子树的颜色出现最多的,权重和,权重是颜色值。 解法:把小的map合并到大的map里面,(新姿势),官方题解,说这个很有用耶 官方题解#include<bits/stdc++.h>using namespace std;#define pb push_back#define LL long longconst int原创 2015-12-04 12:27:47 · 595 阅读 · 0 评论 -
Codeforces Round #334 (Div. 2)B. More Cowbell(二分+贪心)
题目链接 题意:给你n个物品的大小,和k个盒子,每个盒子最多只能放2个物品。 物品的大小按照升序给出,问你最小的盒子是多大 解答:二分盒子的大小S,然后判断下体积是S时需要的盒子数量是不是小于K的。这个地方要贪心,正确的方法是把体积大的和体积小的放在一起#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cs原创 2015-12-02 16:03:26 · 388 阅读 · 0 评论 -
Codeforces Round #333 (Div. 2)C. The Two Routes(最短路)
题目链接 题意:给你n个点,m边的地图,这m边是u到v之间有铁路,然后,没有给出的任意2点之间是马路。。问一个走铁路,一个走马路,从1点出发,最后2人都到达n点的时间,(他们每条路花费时间是一样的,但是二人不能同时到达某一点,一条边可以走多次) 解法:因为是完全图,必然有一个人可以直接1到n,那就在另一种类型的边上跑最短路#define CF#ifndef CF#include<cstdio>原创 2015-11-25 12:45:16 · 427 阅读 · 0 评论 -
Codeforces Round #333 (Div. 2)A. Two Bases(模拟,计算进制)
题目链接 题意:给你n位,b进制的数,有2 个,比较大小 解答:模拟#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#else#include<bits/stdc++.h>#endif // CFusing namespace std;#define L原创 2015-11-25 12:27:04 · 300 阅读 · 0 评论 -
Codeforces Testing Round #12C - Subsequences (dp+树状数组优化)
> 题目链接 题意:在n个数中,找出长度是k的上升子序列个数,(n个数都不相同) 解答:dp[i][j]:表示以i结尾的长度是j的上升序列的个数,那么dp[i][j]=dp[1][j-1]+dp[2][j-1]+dp[3][j-1]+….+dp[i-1][j-1];由于是区间求和 ,所以我们可以使用树状数组优化。#include<bits/stdc++.h>using namespace s原创 2015-11-12 15:56:41 · 460 阅读 · 0 评论 -
Codeforces Testing Round #12 A. Divisibility( 容斥原理 )
题目链接 题意:给你一个数x,和一个区间,然后再区间里面有几个这个数的倍数 解答:区间 [1-n]里面是x的倍数为n/x;所以我们可以就算区间[a,b]里面是x的倍数的个数是b/x-(a-1)/x; 但是要注意的一点事,我们需要考虑0的情况,所以分类考虑即可#include<bits/stdc++.h>using namespace std;#define LL long longco原创 2015-11-12 15:48:11 · 336 阅读 · 0 评论 -
Codeforces Testing Round #12 B - Restaurant ( 贪心 )
题目链接 题意:给出n个不相交的区间,求出不相交区间的最大个数 解答:先按照区间右断点排序,再按照区间左端点排序#include<bits/stdc++.h>using namespace std;#define LL long longconst int maxn=500002;struct node{ int l,r; bool operator<(const nod原创 2015-11-12 15:51:33 · 397 阅读 · 0 评论 -
Codeforces Round #327 (Div. 2) (A. Wizards' Duel 简单数学)
A. Wizards' Dueltime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputHarry Potter and He-Who-Must-Not-Be-Named engaged in a fight to原创 2015-10-26 14:12:12 · 459 阅读 · 0 评论 -
Codeforces 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest B题 (排序贪心)
B. Layer Caketime limit per test6 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputDasha decided to bake a big and tasty layer cake. In order to d原创 2015-10-26 08:39:16 · 874 阅读 · 0 评论