Codeforces
笑对这个世界的志贵
这个作者很懒,什么都没留下…
展开
-
CodeForces - 287B Pipeline 二分搜索
Problem Description 给你n个用户,和k-1个管道转换器,分别1转换为2,3,……k; 问你至少需要多少个转换器就可以满足用户需求Input 4 3 5 5 8 4Output 2 1 -1代码:#include<iostream>using namespace std;long long n, k;//sum = 1 + 2翻译 2017-04-25 11:58:30 · 325 阅读 · 0 评论 -
【前缀和 && 思维转换】ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)Molly's Chemicals
Problem Description 输入n, k代表有n个元素,问你任意取一段区间和 满足k的m次方(m是任意正整数)让你求出:有多少段不同的区间和?思路: 第一想法能想到的就是前缀和然后 sum[i] - sum[j] = pow[k] i: 1 to n; j : 0 to (i - 1); k : 0 to m;这样复杂度肯定会超时。于是就没想到了,然后百度借鉴借鉴。将公式转化成翻译 2017-10-03 10:42:19 · 702 阅读 · 0 评论 -
【思维】Codeforces Beta Round #97 (Div. 1) C - Zero-One
Problem Description 给你一个串,只有’0’, ‘1’, ‘?’三个字符构成,’?’代表它可能是’0’or’1’。 两个人在玩游戏,A这个人删除一个字符想让这个串尽可能的小,B这个人删除一个字符想让这个串尽可能的大。A先操作。直到剩下的字符还有两个的时候,停止操作。输出所有的可能结果,重复的只输出一遍。 例如1?1,串可能是111,或者101。A先操作,111的时候翻译 2017-12-20 17:24:03 · 191 阅读 · 0 评论 -
【二分答案 && 贪心】codeforces-847E Packmen
Problem Description 输入n, 接着给你一个长度为n的字符串。 *代表包装, P代表人, .代表为空, 人移动一单位距离需要花费一秒,人可以向左或者向右移动。人只要走到包装的位置,就会把包装吃掉,问你最少需要多少秒。所有的包装就被人全吃完。思路: 二分答案 + 贪心。 对于每个二分的答案mid。从左往右暴力,如果第一个遇到的是P, 那么P下标+mid都可以到翻译 2017-11-24 21:31:44 · 590 阅读 · 1 评论 -
【树形dp】CodeForces - 767C Garland
Problem Description 输入n代表有n个灯泡。接下来n行,第i行 给你i的父亲灯节点,和i这个灯的温度。 问你能不能用剪刀,剪两刀,将其分成三个部分,使得每个部分的温度和相等。 如果可以输出剪的边的儿子点。 否则输出-1。思路: 自己强行用dfs模拟出来了,看了学长的代码突然发现自己弄麻烦了,因为它就是一棵树。 找出根节点,然后dfs遍...翻译 2017-11-24 21:43:48 · 278 阅读 · 0 评论 -
【数学期望】Gym 101137L Lazy Coordinator
Problem Description 给你n个事件,接下来2*n行,给你任何事件可能的开始时间,和任何事件可能的结束时间。 让你输出每个事件存在时间的数学期望思路: 这道题有两个核心点。 一:算期望的时候,事件时间差 两两相减的话,O(n*n)会超时。我们需要对公式进行处理。我们拿例子来说明把。 例如样例 3 + 4 + 10 - 11 +翻译 2017-11-27 19:35:52 · 929 阅读 · 0 评论 -
【恶心的模拟 && 找时刻问题】CodeForces - 883A Automatic Door
Problem Description 给你n+m个人,n个人是雇员,m个人是客户,给了你他们每个人进来的时刻。n个人进来的时间分别为 c, 2*c, 3*c … n*c。m个人进来的时间直接给出。 他们进来的时候如果门是关的,门就会打开,然后他们通过。 如果他们进来的时候门是开的,他们就会通过。 门打开后持续时间d秒,才关门。 问你所有人通过,至少得打开门多少次。思路翻译 2017-11-27 20:20:45 · 424 阅读 · 0 评论 -
【bfs && 如何想到bfs】2014 Benelux Algorithm B - Button Bashing
Problem Description 输入T,代表有T组测试数据。每组测试数据输入n, t代表有n个按钮,煮好食物需要t秒以上。接下来n个数,代表每个按钮能够增加烹饪的时间。问你煮好食物至少需要按多少次按钮,至少超出几秒。优先接近t秒,秒数一样,再考虑按钮次数少的。思路: 一开始也有思考到bfs, 第一反应认为状态太多,是不是应该有目的性搜索,敲个A*,但是自己A*不稳,没敲过几次。所以翻译 2017-10-10 20:43:06 · 267 阅读 · 0 评论 -
【01背包 && 记录路径 && 约束】Codeforces Round #436 (Div. 2) E. Fire
Problem Description 发生火灾了,家里有n件物品,每件物品有把它就救出来的时间,烧坏的所需时间,没烧坏的价值。 问你你拯救的最大价值,同时输出拯救的物品数量,和物品。 Input 3 3 7 4 2 6 5 3 7 6 Output 11 2 2 3 思路: 达到烧坏所需的时间后,这个物品就没有价值...翻译 2017-12-22 20:53:32 · 198 阅读 · 0 评论 -
【tarjan思想 && 离线处理】Codeforces Round #436 (Div. 2) F - Cities Excursions
Problem Description 给你n个城市m条单向的道路,q个访问。 问你u城市到v城市字典序最小的路径的第k个城市。 不存在路径的情况: u->v城市的过程中存在一个使字典序一直变小的环。 u根本无法到达v。思路: 一开始想到肯定是dfs,但是不知道如何跑,看了一些大佬的博客才知道如何处理。 我们预处理一下,所得dfs所走的下一个点,一定是字典序最翻译 2017-12-23 10:15:35 · 224 阅读 · 1 评论 -
【思维】CodeForces - 724B Batch Sort
Problem Descipriont 给你n*m的矩阵,对于每一行,你只能交换两个元素一次。对于整个矩阵,你只能交换两列一次。 给你一个n*m的矩阵,问你能否经过交换使得矩阵每一行都是递增序列。思路: 参考了别人博客。 我认为的核心点:对于一个可以经过交换得到的矩阵,无论列交换在过程中什么时候进行,都可以得到这个结果。原因应该是题目条件。找了很多样例都成立,具体证明不会,多思翻译 2018-01-03 20:42:47 · 275 阅读 · 0 评论 -
【树 && 倍增求到祖先距离】Codeforces Round #480 (Div. 2) E. The Number Games
Step1 Problem: 给出一颗n个节点树,让你删除k个节点,使其还是一棵树,并且要求Σ(2^i)最大,i是剩下的节点的编号。题意参考 数据范围: 1 &lt;= k &lt; n &lt;= 1e6.Step2 Ideas: 显而易见,剩下的节点编号越大越好。 从编号大到小选择, 到第 i 节点 如果选择后 构成树的节点数量 没超n-k,则选择...翻译 2018-06-01 21:00:49 · 152 阅读 · 0 评论 -
【几何】CodeForces - 140A New Year Table
Problem Description 给你n, R, r分别代表有n个半径为r的圆,和一个半径为R的圆,问你小球只能放在打球的内切位置,问你能不能放完n个小球* Input * 4 10 4 5 10 4 1 10 10Out put YES NO YES代码:求一个小球占多少角度,然后看看360度能分成多少个小球#include<bits/stdc++.翻译 2017-06-07 11:35:26 · 335 阅读 · 0 评论 -
【状态压缩 && 思维转换】Codeforces Round #438 868C Qualification Rounds
Problem Description 输入n, k代表有n个问题,k个队伍。接下来输入一个n*k的矩阵,如果为1代表第j个队伍知道第i个题如何做,0代表不知道如何做。你想要找到一个关于这n道题的非空子集,每个参加队伍知道的题目不超过总数的一半。问是否能找到这么个子集。 思路: 如果存在一道题全部队伍都不知道,那么yes,否则就得找两道题,如果为yes,最坏情况就是每个队伍都知道一道题。如翻译 2017-10-06 17:01:03 · 221 阅读 · 0 评论 -
【博弈】Alice and Bob CodeForces - 347C
Problem Description 给你一个长度为n的序列。Alice先动,选择序列中随便的两个数,求他们差的绝对值。如果和序列的数不重复就加入序列。如果找不到这样的两个数就算输思路:4 8 10,最大长度也就 2 4 6 8 10。 4 12, 最大长度也就 4 8 12。3 5 10, 最大长度1 2 3 4 5 6 7 8 9 10。草稿纸想一想画一画,你就会序列最大长度就等于 最大翻译 2017-06-17 10:16:38 · 386 阅读 · 0 评论 -
【映射 && 优先队列】CodeForces - 140C New Year Snowmen
Problem Description 输入n,然后给你n个雪球半径,让你堆雪人,每个雪人由三个球组成,而且球不能一样,问你最多能堆出几个。代码:用map求出每个相同的雪球出现了几次,然后存入优先队列(按出现次数多到少存),每次取出最多的三种小球,组成雪人,这样才能保证雪人最多。#include<bits/stdc++.h>using namespace std;struct node{翻译 2017-06-07 11:43:23 · 391 阅读 · 0 评论 -
【模拟】CodeForces - 140B New Year Cards
Problem Description 输入一个n,代表Alexander有n个朋友,接下来输入n行,每行n个数,代表n个朋友每个朋友喜欢贺卡的排序,从左到右递减(最左边是朋友最想得到的贺卡),但是每个朋友不能够得到自己发出去的贺卡,第一个朋友发出贺卡1,第二个发出贺卡2,以此类推。最后一行输入,Alexander最想要发出的卡片从左到右递减(最左边是Alexander最想发出的贺卡)。如何发出翻译 2017-06-08 09:57:26 · 421 阅读 · 0 评论 -
【模拟】CodeForces - 127C Hot Bath
Problem Description 输入t1, t2, x1, x2, t0分别代表冷水的温度,热水的温度,冷水的总量,热水的总量,目标温度。让你求y1,y2分别代表冷水的量,热水的量。 公式t = (t1*y1 + t2*y2) / (y1 + y2); 问你y1,y2多少的时候,t 尽可能的接近接近t0(t >= t0).如果t一样,(y1 + y2)越大越好。代码:首先有三个温翻译 2017-06-08 15:06:03 · 328 阅读 · 0 评论 -
【水题】CodeForces - 148A Insomnia cure
Problem Description 输入k,l,m,n,d。d代表dragon的数量。不满足k,l,m,n倍数的恐龙不能消除。让你求最多能消除几只龙代码:#include<bits/stdc++.h>using namespace std;int main(){ int a, b, c, d; while(~scanf("%d %d %d %d", &a, &b, &翻译 2017-06-15 09:11:35 · 474 阅读 · 0 评论 -
【模拟】CodeForces - 148B Escape
Problem Description 输入vp,vb,t,f,c分别表示公主的速度,龙的速度,一开始公主可以走的时间,恐龙捡到财宝回去放后休息时间,起点到城堡的距离。让你求公主最少需要扔多少次财宝才能到达城堡(龙不能追上公主,否则公主就被吃掉)。代码:按要求模拟就可以了#include<bits/stdc++.h>using namespace std;int main(){翻译 2017-06-15 09:18:13 · 269 阅读 · 0 评论 -
【思维 && 构造】CodeForces - 148C Terse princess
Problem Description 让你写出一个序列,满足长度是n,里面含有a个«Oh…» b个«Wow!» 。。«Wow!» 代表你加进去的这个数比前面所有数的和都大。«Oh…» 代表你加进去的这个数比前面任何一个数都大。特别注意同时满足«Wow!» 和«Oh…» 优先«Wow!» 。第一个数不理。**代码:构造等比数列1,2,4,8….这样可以满足加进来这个数比前所有数的和都大。#in翻译 2017-06-15 09:26:33 · 304 阅读 · 0 评论 -
【水题】CodeForces - 233A Perfect Permutation
Problem Description 给你一个n,让你制造出一个序列满足ppi = i &&pi ≠ i. 想要满足ppi = i && pi ≠ i.就是两个下标交换一下位置。所以n为奇数的时候是满足不了的。n为偶数的时候,直接交换输出序列就好了。代码:偶数直接2,1,4,3….的输出就可以满足序列了#include<bits/stdc++.h>using namespace std;翻译 2017-06-15 09:30:37 · 281 阅读 · 0 评论 -
【数学思维】CodeForces - 233B Non-square Equation
Problem Desciption x2 + s(x)·x - n = 0核心这个公式,让你找出最小的根,满足这个公式,其中s(x)表示的是x的各位数的和。代码:这题想了很久,一开始正常思维,TLE就开始各种优化,思路就朝着缩小x的范围优化。然而就差一点就对了。后面还是在时间内没A出来,看了下人家的博客,发现和自己思路很接近。还是有点收获的。#include<bits/stdc++.h>u翻译 2017-06-15 09:37:39 · 246 阅读 · 0 评论 -
【组合数学思维】CodeForces - 233C Cycles
Problem Desciption 输入一个k,代表有k个三角形。问你至少需要几个结点能组成k个三角形。同时输出k个结点连线后的邻接矩阵。代码:有n个结点最多可以构成几个三角形。Cn3 = n * (n - 1) * (n - 2) / 6; 有n条边最多可以构成几个三角形。Cn2 = n * (n - 1) / 2;先找出大于构成k个三角形需要几个结点,后面结点-1.再加边就好了#incl翻译 2017-06-15 09:46:54 · 319 阅读 · 0 评论 -
【bfs && 反向建边】2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) Jumping
Problem Description 输入T代表有T组测试数据,输入n代表有n个商城分别是1-n。每个商城都有一个值num,在这个商城可以直接跳到i-num的商城 or i+num的商城。问你每个商城到n这个商城最少需要跳几次,如果不能到输出-1。思路: 看到这个题第一反应想到的是记忆化搜索,因为求的一个商城的最少跳跃距离,就可以用数组保存起来,下次在访问到直接返回值就可以了。也许是个人翻译 2017-10-03 15:55:57 · 419 阅读 · 0 评论 -
【扩展欧几里得 && 数学】Codeforces Round #499 (Div. 2) E. Border
Step1 Problem 有 n 种面值的钱,每种面值的钱有无数张。 你可以选择任意张钱,求和 % k,输出所有不一样的结果。 数据范围: 1 <= n <= 1e5, 2 <= k <= 1e5. 1 <= 面值大小 <= 1e9. 例: input: 2 8 12 20 output: 2 ...翻译 2018-07-27 16:29:36 · 183 阅读 · 0 评论