![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforces
oranges_c
落寞是岁月的痕迹
展开
-
Codeforces Round #374 (Div. 2)
A,B水题。 C. Journey 题目大意: 给你N个点M条边的DAG,有T的时间限制.接下来M行(u,v,t)代表从u到v的时间为t。你站在1点 ,问到n点,不超过T时间最多走过几个点,并输出路径。跟拓扑排序很像,加上dp。 dp[i][j] := 站在i点,走过j个点的最短时间。 显然dp[i][j] = min(dp[i][j] + t[i],dp[to[i原创 2016-10-01 12:23:22 · 304 阅读 · 0 评论 -
Codeforces Round #392 (Div. 2)-D. Ability To Convert(贪心+dp)
题目链接 题目大意: 给你一个进制数n,和一个不超过60位的数k。 以超过十的数代替字母。 问转换成十进制的数最小是多少。PS:果然dp的题懵逼时刻占大多数。dp[i] := 以第i个数结尾的最小的十进制数。 i枚举起点,j枚举起点往后不超过n的数,那么dp[j+1] = min(dp[j+1],dp[i]*n+x) 比如3^3+2*3^2+3^1 = ((3+2原创 2017-01-20 13:53:42 · 295 阅读 · 0 评论 -
Codeforces Round #393 (Div. 2) -B. Frodo and pillows(贪心)
题目链接题目大意: 有n张床,m个枕头。 每个人至少有一个枕头,相邻的床枕头数差不能超过1.问指定的床最多可以获得多少个枕头。先每张床都给一个。 当床两边都有相邻的床位时。 然后优先给指定的床位,当差超过1时,我们需要给相邻的床位一个枕头。 所以要让指定的床位有两个枕头,要从剩余的枕头里拿出1个。 要让指定的床位有三个枕头,要从剩余的枕头里拿出4个.有两个给旁边的原创 2017-01-23 20:30:28 · 220 阅读 · 0 评论 -
Codeforces Round #393 (Div. 2)-C. Pavel and barbecue(并查集)
题目链接PS:题目意思实在是难看懂。。题目大意: 有n个串,n个位置,初始一 一对应。 给你一个排列,p1,p2,...,pnp_1,p_2,...,p_n,表示在第ii个位置的串需要移动到第pip_i 给你一个01序列,b1,b2,...,bnb_1,b_2,...,b_n表示如果bib_i为1,那么移动到第ii个位置的串需要翻转。 问要改变排列或序列的个数为多少,原创 2017-01-23 20:45:22 · 270 阅读 · 0 评论 -
Codeforces Round #393 (Div. 2)-D. Travel Card(dp)
题目链接dp[i] := 表示以第i个旅行结尾的最少花费。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int maxn = 100000 + 10;int a[maxn],dp[maxn];int main(){原创 2017-01-23 21:01:11 · 308 阅读 · 0 评论 -
Codeforces Round #394 (Div. 2)-E. Dasha and Puzzle(dfs)
题目链接PS:看了半天题意没看懂。。题目大意: 给你N个点的树,问能否将这些点放在坐标平面上,要求边平行于坐标轴。首先一个点的度数不超过4。因为平面只有四个方向,若度数超过4,肯定不存在方案。 然后就以2^n为长度递减dfs放点。 ∑ni=12i<2n+1\sum_{i=1}^n2^i < 2^{n+1}#include <bits/stdc++.h>using na原创 2017-02-03 15:52:55 · 267 阅读 · 0 评论 -
ECPC16-A.The game of Osho(博弈)
题目链接题目大意: 有T组数据 给你G个子游戏,每个子游戏有一个数n,两个人轮流可以减去b的幂次,前提是小于等于n。不能再减就算输。 问最后谁赢。打sg表找规律。。 多个子游戏 ,则结果异或。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using names原创 2017-03-09 17:03:31 · 420 阅读 · 0 评论 -
ECPC16-E. Jumping(bfs)
题目链接题目大意: 给你n个数,a1,a2,...,ana_1,a_2,...,a_n表示在第i个点可以跳向i+aii+a_i点或i−aii-a_i点, 输出从每个点开始,跳向最后一个点步数。我们可以反着做,从最后一个点开始bfs,搜能跳向当前点的点。#include <bits/stdc++.h>using namespace std;#define ALL(v)原创 2017-03-10 20:08:18 · 679 阅读 · 0 评论 -
队内训练赛二
A:ZOJ3158 Cut The Cake 题目大意: 给你一个m*n的矩阵,从上到下把它划分成两个子矩阵,两个子矩阵满足值的和的差不超过k,求最小的差值。 Note:不能在第一列的左边和最后一列的右边切。由于m,n值小,我们可以枚举切的位置直接搜索。在这之前我们要先预处理一下每一行的前缀和。方便搜索时记录最小值。#include <bits/stdc++.h>us原创 2017-04-02 17:54:50 · 306 阅读 · 0 评论 -
Educational Codeforces Round 19-E. Array Queries(简单dp)
题目链接 题目大意: 给你n个数,ai∈[1,n]a_i\in[1,n] qq个查询,每次给你pp,kk。 有操作:p−>p+a[p]+kp -> p + a[p] + k 问经过多少次这样的操作,使得p>np > n一开始我是记忆化搜索, 然而提交运行与本地运行不一致???第二次碰到这个问题,完全不知道什么原因。 爆栈?怎么样例就爆。。提交运行: 本地运原创 2017-04-16 12:41:13 · 262 阅读 · 0 评论 -
【zcmu1920】nazime's 友人帐(贪心,树形dp)
题目链接 原题题目没说根是多少。 但是连通块必须包含1,我们不妨以1为根。1.假设有个点i,那么如果以点i为根的子树上有点包含在所选取的块,那么也必定会对i这个点进行同样的操作。因为到1的路径中必定包含i。 2.所以点i的操作次数就是点i的儿子节点中的最大操作次数 (因为如果有两个或以上的结点需要相同的操作,可以合并操作) (对于叶子结点,如果权值为正down的值就是权值,否则up的值原创 2017-05-28 22:18:51 · 340 阅读 · 0 评论 -
codeforces-546E. Soldier and Traveling(网络流)
题目链接 51nod上的翻译这种从一个初始状态到达一个目标状态的,从感觉上来说有很多种可能的,可以用网络流。网络流最重要的是建图。 源点与城市的边的容量是a[i]a[i] 城市与汇点的边的容量是b[i]b[i] 城市与自身的边是INFINF,表示可以不移动。 城市与相邻的城市的容量也是INFINF,表示可以移动到相邻的城市。然后跑Dinic求最大流。 如果等于∑a原创 2017-06-19 18:00:30 · 322 阅读 · 0 评论 -
hdu_round1-1002 光头强选举(优先队列)
光头强非常渴望权利。他想赢得即将到来的选举。现在有n个候选人,包括光头强,其中光头强是一号候选人。我们现在已经知道每个候选人获得了多少张选票。其中第i个候选人拥有ai张选票。为了赢得选举,光头强的得票数必须严格大于其他候选人。胜利比一切都重要,所以光头强决定通过作弊来赢得选举。他会通过贿赂将给其竞争者投票的选民将选票改投给自己。那么光头强最少要贿赂几个选民才能获得选举的胜利?原创 2017-07-02 22:10:06 · 577 阅读 · 0 评论 -
Codeforces 816 -B. Karen and Coffee
题目链接题目大意: n区间,q次查询区间 每次查询有多少个点是在n个区间里出现了k次的一开始看到这题想的就是线段树。 后来看到题解和别人的代码,发现,原来还有这种操作?n个区间的处理 给你区间[l,r][l,r] c[l]++,c[r+1]–; 这样能保证前缀和就是这个点的出现次数#include <bits/stdc++.h>using namespace s原创 2017-06-25 18:28:42 · 328 阅读 · 0 评论 -
Codeforces Round #392 (Div. 2)-C. Unfair Poll(xjb)
题目链接题目大意: 数数,从第1,…n排,再从第n-1,…,1排的顺序。问一个人被问最多和最少的次数和指定人的次数。这题真的是xjb乱搞一通。。 特判只有一排和两排的。 以2*(n-1)*m为一轮 不满一轮的特判。 然后剩余k%2*(n-1)*m 暴力标记 最大的一定不在第一行和第n行。最小的一定在第n行。 不在第一行和第n行的每轮计算了两次,其他计算了一次。原创 2017-01-20 13:41:48 · 263 阅读 · 0 评论 -
Codeforces Round #392 (Div. 2)-B. Blown Garland(水题)
题目链接题目大意: 一个灯泡有四种颜色 ‘R’ — red, ‘B’ — blue, ‘Y’ — yellow, ‘G’ — green. 一个坏灯泡用!表示,每连续的四个灯泡不会有同样的颜色,每种颜色保证至少有一个灯泡正常工作。 给你一串字符串,问每种颜色坏灯泡有多少个。既然每四个连续的灯泡不会有同样的颜色,那么每隔三个就会出现同样的颜色。 也就是说在当前序列的四个原创 2017-01-20 13:31:29 · 185 阅读 · 0 评论 -
codeforces Good Bye 2016-C New Year and Rating(二分)
题目链接 题目大意: 一个人初始有个rating值(可以为负),参加了n场比赛, 接下来n行,给出rating的变化和所要参加的比赛等级( 1 or 2 ) 问最后可以获得的最大的rating为多少 注意:rating变化是在比赛结束之后,而判断参加的比赛等级是在比赛之前二分初始值,判断是否可行, 判断时要注意先判断参加的等级是否合法,再更新rating 合法则原创 2016-12-31 13:04:36 · 303 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2)-B Ilya and tic-tac-toe game(模拟)
题目链接题目大意: 有一个4*4的图,先手画’x’,后手画’o’,谁先满足在对角线或者横线或竖线上有三个连续的标记,则这个人获胜。 问在这个图上画一个’x’标记,是否可以获胜。直接暴力模拟这个过程即可。对角线两条,横线一条,竖线一条#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,原创 2017-01-08 13:03:19 · 305 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2) - A Lesha and array splitting (贪心)
题目链接题目大意: 将一个长度为n的序列划分成几个连续的子序列,使得每个子序列的和不为0 输出子序列的个数和各区间1.这个序列如果所有元素的和不为0 那么直接输出1个子序列,区间为1到n 2.如果为0且所有元素里存在非0元素,那么这个序列肯定可以划分成两个和不为0的连续子序列,如果都是0则输出NO。 如果存在非0元素,现在要找出这个点,那么从后往前贪心,直到遇到非0。原创 2017-01-08 12:58:21 · 232 阅读 · 0 评论 -
codeforces Good Bye 2016-B New Year and North Pole
题目链接题目大意: 把地球看成圆,周长为40000公里 一个人站在北极出发,有n个指令, 每个指令:t dir (向dir方向走t公里) dir : “North”, “South”, “West”, “East”. 判断指令的合法性,并且最后是否回到北极。 注意:站在北极只能往南走,站在南极只能往北走简单的判断, 但要注意 题目说了站在北极只能往南走,也就是原创 2016-12-31 12:51:31 · 276 阅读 · 0 评论 -
Codeforces Round #391 -B. Bash's Big Day
题目链接 题目大意: 给你n个数,问最大的gcd不为1的集合大小。把gcd都变成素因子。 先筛选素数,统计包含素因子的数的个数。 有几个剪枝: 1.如果是1直接跳过 2.如果是素数直接加1 然后就直接枚举素因子并统计#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,s原创 2017-01-16 19:31:23 · 242 阅读 · 0 评论 -
Codeforces Round #391 -A. Gotta Catch Em' All!
题目链接 题目大意: 给你一个字符串,可以随意组合,问其中有多少个”Bulbasaur”。“Bulbasaur”里有7种字符,统计每种字符的个数,又因为a和u有两个,将这两个的字符个数除以2,然后7种个数取最小值即可。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeo原创 2017-01-16 19:17:56 · 233 阅读 · 0 评论 -
Codeforces Round #391 -C. Felicity is Coming!
题目链接题目大意: 有n家场馆,m种宠物小精灵。每个场馆有g[i]个小精灵,每种小精灵可以进化。进化规则f(x) = y。类型为x的可以进化为y。每个场馆要保证进化前后,每种类型的宠物小精灵数不变。问有几种方案。标程简直不要太sao。。 数组a[i]的元素表示拥有类型的为i的宠物小精灵的场馆编号 然后用对二维类型的vector排序,排序规则同字符串排序。 然后统计场馆原创 2017-01-16 19:48:55 · 240 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2)-DFedor and coupons(优先队列)
题目链接 题目大意: 给你n个区间,问k个区间相交的最大区间。PS:这类题型貌似挺经典。用优先队列去维护很方便。 把区间按左端点从小到大排序。 创建一个优先队列,默认是大顶堆,但我们要维护区间右端点的最小值 所以只需把区间右端点取负数即可。 判断区间相交大小只需用到队头与当前的区间。#include <bits/stdc++.h>using namespace原创 2017-01-08 13:30:56 · 226 阅读 · 0 评论 -
Codeforces Round #396 (Div. 2)-C. Mahmoud and a Message(dp)
题目链接 题目大意: 给你n长度的字符串,以及26个数,表示’a’-‘z’所在字符串的最大长度 问满足条件的字符串集合划分数,以及最大的子串长度,最小的集合数dp[0][i] := 表示前i个字符的子串划分数 dp[1][i] := 表示前i个字符的划分里最大的字串长度 dp[2][i] := 表示前i个字符的划分里最小的集合数#include <cstdio>#原创 2017-02-08 16:41:14 · 264 阅读 · 0 评论 -
Codeforces Round #396 (Div. 2)-D. Mahmoud and a Dictionary(关系并查集)
题目链接 题目大意: n个单词,m个关系,q次查询 有两种关系: 1 a b表示a,b两个单词同义 2 a b表示a,b两个单词反义 如果关系跟之前的关系冲突则无视当前关系 每次查询问两个单词属于1还是2,都不属于则输出3一看就发现跟poj1703和poj1182两道关系并查集很像,,可以说是结合后的题。 这里我把关系1,2变成0,1刚好是%2后的数PS:为什原创 2017-02-08 16:48:30 · 320 阅读 · 0 评论 -
Codeforces 755-B. PolandBall and Game(贪心)
题目链接题目大意: 有两个人在玩一个游戏,每个人都有一个由单词组成的列表。由第一个人先开始,每回合都要说一句在自己列表里的并且未说过的话。谁不能再说就算输。问第一个人是否能赢。 Note:每个人的单词列表里的话都是唯一的,一个单词可被两个人共有。要让对方没话可讲,显然要说两个人共有的话。假设有c个共有的单词,如果c是奇数则第一个人可以说c/2+1个,第二个人可以说c/2个原创 2017-01-18 14:20:10 · 320 阅读 · 0 评论 -
Codeforces 755-C. PolandBall and Forest(交互式题)
题目链接 题目大意: 给你n个点,每个点给出所在树的距离自己最远距离的点。问这个森林有多少棵树。PS:第一次交这种交互式的题。。交了一发给出了Idleness limit exceeded on test 1。一脸懵逼。查了一下发现这种题是用文件读入? 读入不能超过所需,否则就会出现这样的错误。 如果是用printf输出,需要在后面添上fflush(stdout),将原创 2017-01-18 14:53:18 · 594 阅读 · 0 评论 -
Codeforces 755-D. PolandBall and Polygon(树状数组+计算几何)
题目链接 题目大意: 给你一个凸n边形。从1开始,将点与接下来的第k个点连条线,然后从第k个点开始重复操作,每次操作输出凸边形有多少块区域。不会有三条线交于一点的情况。我们需要知道每次连线相交了多少条线。 假设现在在x点,那么只需要知道x+1,…,x+k-1和x-k+1,…,x-1有多少条线是以这些点为起点的。因为如果是以这些点为起点的线,那么x’+k肯定会超过x或x+原创 2017-01-18 15:12:03 · 350 阅读 · 0 评论 -
Codeforces 831-E.Cards Sorting(线段树)
题目链接题目大意:给你一个n(1≤n≤100000)个数的序列,a1,a2,...,an(1≤ai≤100000)循环遍历数组,当当前数是序列里的最小值时删除这个数,问需要遍历多少次才能使数组为空。原创 2017-07-17 12:31:18 · 308 阅读 · 0 评论