codeforces
Marcus-Bao
这个作者很懒,什么都没留下…
展开
-
CodeForces - 367B Sereja ans Anagrams 队列+map
题目链接题意:给定n个元素的序列a[]和m个元素的序列b[],让你找到一个q使得a[q]、a[q+p]、…a[q+(m-1)*p]构成序列b。问你所有的q。首先这个题不需要去管位置是否一一对应...只要找出的元素能构成B思路: 首先我们需要明确只有1---p个位置是可能可行的位置,因为我们可以发现,你比如p=2 n=10 m=3 那么有 a1+a3+a5a2+a4+a6 a原创 2017-03-11 18:50:38 · 467 阅读 · 0 评论 -
CodeForces - 622C Not Equal on a Segment 思维
题目链接题意:给你n个数,m次查询,每次查询给你l,r,x让你在区间中找到任何一个不为x的数即可,找到输出,否则输出-1 思路:只需要开一个pre数组,记录第i个数前面第一个和他不等的数的下标就可以了,如果相等pre[i]=pre[i-1],然后每次对(l,r)查询时从最右端开始查找和x比对即可.#includeusing namespace std;const in原创 2017-05-18 21:51:46 · 380 阅读 · 0 评论 -
CodeForces - 622E Ants in Leaves 贪心
题目链接题意: 给出一颗根节点为1的树,树的每个叶子结点都有一只蚂蚁,现在所有蚂蚁要到根节点1去问最少时间多少,每秒钟蚂蚁移动一个结点,每个结点除根节点外只能有一个蚂蚁(可以同时有多个蚂蚁到达根节点)。思路: 这个题的话,看到了是树.还是个E题,一般会去想树形dp,可是仔细一想的话其实贪心是可以解决的.由于可以从一号点所有的子孩子同时到达1(不阻塞),那么我们只需要找到原创 2017-05-22 13:14:36 · 503 阅读 · 0 评论 -
Sagheer, the Hausmeister CodeForces - 812B dp
题目链接思路:只说一下这个题dp的思想吧,我们对于每一行都记录最左端未关灯的位置,和最右端未关灯的位置,那么对于左端和右端的楼梯维护一下是将本层楼灯全部关闭原路返回花的时间少,还是从右端过来时间少,对于右端也一样,然后维护一个最优解决就可以了; 坑点:在dp的时候左端被更新了会影响下面所以要记录一下初始的值.特判只有最后一行未关灯的情况#include#inc原创 2017-06-03 17:49:15 · 642 阅读 · 0 评论 -
CodeForces - 13C/CodeForces - 713C/HihoCoder - 1529 Sequence dp
题目链接凯大佬的博客题意:给定一个长度为 n 的非负整数序列 a[1..n]。你每次可以花费 1 的代价给某个 a[i] 加1或者减1。求最少需要多少代价能将这个序列变成一个不上升序列(有的题目是非递减的,或者严格递减的等等)。这三个题目都是类似的,只是问法不一样,严格问题的凯爷的博客说的已经很明确了.对于hiho上那个题,因为数据量太大(n^2)是原创 2017-07-11 00:02:00 · 836 阅读 · 0 评论 -
Codeforces Round #424 C Jury Marks 思维
题目链接题意:你有一个初始分数,有k个评委按顺序依次对你的分数进行修改,结束后你记得n个你的分数修改过程中出现过的值。询问你的初始分数可能有多少种情况。思路:这个题当时局限于c题一般就不可以暴力了.忘了数据量....想着逆推,最后也没想明白.还是真菜.这个题目原创 2017-07-14 21:41:14 · 286 阅读 · 0 评论 -
Gadgets for dollars and pounds CodeForces - 609D 二分+贪心
题目链接题意:现在有m个物品 每个物品有一个类型t(1 只能用美元买,2只能用英镑买) 和价钱c 你有s个卢卡斯,但是有的物品只能用美元来买有的只能用英镑来买,所以你需要拿卢卡斯来兑换.对应n天,每天有 美元的汇率 a,和英镑的汇率c(a卢卡斯兑换1美元..c.),问你能否在n天中从中买到k个物品,并输出最小需要多少天,并输出所购买的k件物品的id,以及在那一天购买的.(每个物品只能买原创 2017-05-14 10:34:59 · 368 阅读 · 0 评论 -
CodeForces - 344E Read Time && CodeForces - 830A Office Keys 二分+贪心
题目链接 cf 344e 题意:有n个磁头,m个位置需要访问,磁头每一秒移动一格,求访问m个磁头需要的最少时间。思路: 首先老规矩,求最少最多的问题,立马想到二分,对于这个题目,很明显二分时间带入验证可行.那么问题就转化成了怎么验证? 要想在一定时间内访问多的磁道,那么基于贪心的思想,如果有磁道在当前磁头的左边原创 2017-07-17 20:55:56 · 1230 阅读 · 0 评论 -
CodeForces - 817B Makes And The Product STL
题目链接题意:i,j,k不等,找出ai*aj*ak最小的情况下有几种取法.可能是太久不刷题,水题都不会了,这个题思路很好想,排个序就行。然后分情况讨论,分情况讨论的时候我蒙了,a比较大记录个数不是很好记录,虽然那也可以做吧,但是感觉还是那样比较简单.感觉自己对这些STL库的东西还是不太熟悉,有时候想不起来不会灵活应用。这个题就分a[1]==a[3] 表示最小的三原创 2017-07-10 00:03:11 · 436 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) The Bakery 线段树+dp
题目链接题意:把n个数分成k段,每段的价值为这一段数里不同数字的个数,问价值和最大为多少。思路:dp[i][j] 表示把前j个数分为i段的最大价值为多少,那么有如下转移方程:dp[i][j]=max(dp[i-1][k]+w[k+1][j]) (0这个过程需要用线段树来维护一下,记录每一个a[i]的上一次出现的为止pre[i],那么我们每原创 2017-07-31 20:40:35 · 354 阅读 · 0 评论 -
837E Vasya's Function 数论
题目链接题意:定义F(a,0) = 0,F(a,b) = 1 + F(a,b - GCD(a,b)。给定 x 和 y (思路:这个题乍一看我们好像都会做点,但是一直TLE啊. 难点在于如何快速的找到 b减掉了多少次gcd,使得新的a 和 b gcd 发生了改变,那么我们设 a = A*gcd(a,b) ,b = B*gcd(a,b). 设原创 2017-08-17 23:42:23 · 375 阅读 · 0 评论 -
CodeForces - 622D Optimal Number Permutation 构造
题目链接思路: .很水的造,要使s最小,由于其它值是确定的,只需要使di+i-n的值为0即可,即两个相同的数相距n-i.由于填数的时候可能会出现对应的位置上已经填数了,所以我就把2*n长度的数划分为两半,左面填奇数的,右面填偶数的这样就不会重复可.自己填一下就知道了.#includeusing namespace std;const int maxn=1e5+10;原创 2017-05-18 21:44:20 · 491 阅读 · 0 评论 -
CodeForces - 616C The Labyrinth dfs连通块标记优化
题目链接思路:这个题以前做过,就是方法忘了...这回又没做出来 orz... 这个题暴力对每个*都跑dfs肯定超时,我们这里来一步优化,就是对于每个‘.’构成的连通块,我们给他编号,这样就大大减少了搜索次数,而且当对于*去查找的时候只需要找到他上下左右四个方向的'.'所对应的号里有几个‘.’就可以了。#include#define Ri(a) scanf("%d",原创 2017-05-18 12:54:17 · 335 阅读 · 0 评论 -
Mars Stomatology Gym - 100765I dp
题目链接题意: 给出n,k,p 代表 坏牙数 棉花数 钱数 给出 棉花价格 给出 补牙价格 补牙所在牙龈 一个棉花可以用于一个牙龈 i代表牙龈,j代表总补牙数,z代表这层的补牙数 思路:dp[i][j]表示前i个牙龈共修j颗牙的花费, 为了求的最大的修牙数我们队每个牙龈上的牙的价钱按照升序排序 优先修最便宜的,记录一下每个牙龈上修牙价钱的前缀和,然后枚举第i个牙龈上修几颗原创 2017-04-13 00:10:55 · 508 阅读 · 0 评论 -
Codeforces Round #410 (Div. 2) Mike and distribution 思维
题目链接 题意: 给你 两个长度为n的数组 元素一一对应,要你从中选出k个数,k的个数最多为n/2+1个,使得每个数组k个元素的和大于整个和的一半思路:这个题嘛真的是思维题,转个弯过来真的很水... 既然要满足k个的和大于sum的一半,那么我们可以先按照a的值升序排一个序,保证第一个选上,然后从第二个开始每两个元素当中选择b的值大的那一个,这样就保证了对于原创 2017-04-22 20:29:37 · 329 阅读 · 0 评论 -
Codeforces Round #410 (Div. 2) Mike and gcd problem 思维
题目链接题意:每次可以改变第i和i+1两个数 使他们分别变成 ai-ai+1 ai+ai+1 问你有没有可能使给出的n个数的gcd大于1 能则输出yes和最小步数 否则输出no思路: 对于这个题首先要明白一点题目中不可能出现no的情况,因为对于两个数ai 和ai+1 如果改变两次的话你会发现两个数变成了 -2*ai+1 2*ai 所以也就是说只要改变两次就原创 2017-04-22 20:36:37 · 393 阅读 · 0 评论 -
Success Rate CodeForces - 807C 二分
题目链接题意:这道题 要求求最小满足条件的提交次数 ,条件为(x+Successful Submission)/(y+Submission)= p / q 。思路:我们可以得到如下方程:x+dx=k*p;y+dy=k*q;那么可以得到以下几个方程:k*p-x>=0,k*q-y>=0,k*p-x那么根据以上方程我们可以二分维护最小的k值.即可得到dy#in原创 2017-05-13 23:32:32 · 344 阅读 · 0 评论 -
Codeforces803C Maximal GCD 思维
题目链接题意:给你n,k(1要你输出k个数,满足以下条件:①这k个数之和等于n②严格递增②输出的 这k个数 的最大公约数q是同样满足①②条件中的最大的!思路:首先说一句....这一题如果不判断k的范围会爆long long..orz..首先我们假设最大的gcd为x那么对于存在的那个数列有:(t1+t2+t3+t4+..原创 2017-05-13 23:44:17 · 290 阅读 · 0 评论 -
CodeForces - 632 C The Smallest String Concatenation 思维瞎搞
题目题意:就是给你一堆字符串让你组成一个字典序最小的。思路: 重载一下字符串,然后就可以了。重载时只需要按照两个串连接起来最小的字典序排序就行#includeusing namespace std;const int maxn=1e5;string s[maxn];int n;int cmp(string s1,string s2){ return s1+原创 2017-05-24 15:35:09 · 528 阅读 · 0 评论 -
Gym 101246E Kidnapping 递推or dfs 优化
题目链接题意:抓劫匪的题,最后总结为有n条路,a[x][y]表示第x条路与第y条路之间的距离,由于绑匪将人绑着,所以人只能计算出走的路程给出计算的路程问最后到达的劫匪窝点可能是那条街(每次都是从第一条路开始)思路:这个题的话可以有两种写法,一个是递推,即从这一步可以走的点开始,按照距离去寻找可以走到的下一个点并标记,在赋值回来依次递推,直到最后所有被标记的点就是可能的点.#原创 2017-04-23 20:49:27 · 397 阅读 · 0 评论 -
F - Hard Process CodeForces - 660C 尺取法
题目链接一般要确定一个区间范围内的,都可以往尺取法想一想。。。结果wa了我一晚上的是 忘记特判k为0了、、、#include#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define原创 2017-05-25 21:29:24 · 315 阅读 · 0 评论 -
Gym - 100765A Sasha vs. Kate 思维
题目链接题意:给你个长度不超过1000位的数,要你从中删除删除k个数使其得到的数尽可能大,输出这个数思路:今天晚上又遇到了类似的题目,当时做的时候还没怎么理解,今天正好重温一下. 对于这个题当时我们首先想的是标记每个位的出现次数然后贪心的先删最少的再依次删下去,但是后来发现不可以,你比如392 你先删2 是39 而你删3是92.所以后来就想,删除k个的话可以按照贪心原创 2017-05-15 21:59:08 · 421 阅读 · 0 评论 -
Educational Codeforces Round 9 Longest Subsequence 思维+筛法
题目链接题意:找到最长的最大公约数最小的数并输出思路: 因为m就1e6,所以数组的范围没用超过1e6的我们全部不考虑,关于求LCM,我们先记录每个数出现的次数,然后我们可以用一个类似于素数筛选法,复杂度为nlogn的 去记录找到对应的LCM中在数组中因子最多的是哪个,然后输出即可 #include using namespace std; const原创 2017-05-26 23:25:28 · 263 阅读 · 0 评论 -
codeforces 837F. Prefix Sums 思维+二分+组合数
题目链接题意:p(x)表示对于一个元素个数为m的x的序列,会产生一个序列y 为m+1个元素,且有y[i]=sum(x[j]) 0现在给你一个长度为n的序列A0,给你一个k,问你要至少进行几次操作,使得Ai 当中存在某一个元素的值>=k。 Ai = p(Ai-1)思路:这个题目我的失败之处在于没想到二分.求最少的操作次数啊....而且满原创 2017-08-18 23:38:53 · 967 阅读 · 0 评论 -
codeforces 838D D.Airplane Arrangements 思维构造+排列组合
参考网上唯一一发题解 感谢!题目链接题意:航空公司卖机票。飞机座位是1~n的,卖m张票,m小于等于n,每张票上有三个信息,票号 i,座位号 j,登机入口k,登机入口指的是从机头进入或者是从机尾进入。乘客登飞机规则:1. 乘客按照机票的编号从小到大依次登机。2. 乘客登飞机时,从票上指定的入口进入,径直走到原创 2017-08-19 00:21:27 · 625 阅读 · 0 评论 -
CodeForces - 626E Simple Skewness 结论+三分
题目链接题意:给定一个n个数序列,选取一些数,使得这些数的平均数减中位数尽可能大。如有多个结果,随意输出一个。思路:首先先上神结论: 要想使平均数-中位数尽可能的大,则选择的数的个数一定为奇数个,偶数个一定不会比他更优.不太对的证明?先进行排序 选数时有两种情况,奇数个和偶数个,分别来看,设:原创 2017-08-31 13:18:10 · 426 阅读 · 0 评论 -
Gym - 100531J Joy of Flight 物理&&思维
PPT题意:一个人有一架飞机,速度可以调最大为 vmax,现在他在(sx,sy)要去(fx,fy).每时每刻存在一个风向(vx,vy),问你能否恰好在k秒到达目的地,能输出每一秒之后飞机的所在位置。思路:当时和sb队友考虑的是先判断怎么样到达不了,根据物理知识可以将风速和飞机本身的速度分开考虑.将风速朝x,y轴分解,则他们对距离的影响是固定的. 因为飞机的速度可变,原创 2017-10-07 00:05:44 · 397 阅读 · 0 评论 -
codeforces 869E The Untended Antiquity 二维BIT + hash
题目链接 题意:在 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原创 2017-10-07 23:36:52 · 417 阅读 · 0 评论 -
codeforces 869C The Intriguing Obsession 组合数学
题目链接 题意:有3个群岛,每个群岛中有一些互不相同的岛屿,现在建一些桥,使得同一群岛内的两个岛屿要么不连通要么最短路至少经过3条桥。给定三个群岛包含的岛数,求合法的建桥的方案数。 思路:不连通很好考虑,我们直接不允许相同的岛屿连边就好了. 考虑最短路至少3条,也就是说同一种岛屿不能同时和其他另一种岛屿两个或以上连边,否则就不满足条件.那么我们将三种岛屿两两考虑,找出两两岛屿连边的情况,然原创 2017-10-07 23:19:47 · 499 阅读 · 0 评论 -
CodeForces - 540E Infinite Inversions BIT+加点离散化
题目链接题意:给一个无限大的递增序列,n次操作,每次操作一组x,y,代表第x位置的数和第y位置的数进行交换,问最后n次交换后存在多少对逆序对。(n思路:发现x,y很大,但是n很小可以考虑离散化。但是发现离散化之后每几个数之间未操作的数会对结果影响,所以我们这里就有一个技巧,将每两个要交换的数之间未被操作的一段离散化成一个点,加入到新点钟,再用num[i]记录这一原创 2017-09-29 23:56:45 · 467 阅读 · 2 评论 -
CodeForces - 724C Ray Tracing 扩展欧几里得+思维
点击打开链接题意:n*m的矩形内有k个点,四周有围墙围起来。从(0,0)45度发射小球,速度为2√每次遇到墙都正常反弹,直到射到顶点被吸收。问每个点第一次被经过的时刻。思路:我们试着将这个反射的过程看成穿过,那么需要将整个矩阵展开(即变成一条直线).即所有穿过的都是关于 x==2*k*n,或者y == 2*kk*m进行对称的,根据轴对称性计算坐标进而可以原创 2017-09-30 22:31:10 · 350 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) Ilya And The Tree 树上因子 思维 + dfs
题目链接题意:有一个树,树上的每个点都有一个权值,对于一个点的魅力值来说,是他到根点1的路径上的所有点权值的最大公约数,对于每个路径上的点,你可以选择唯一点将他变为0或者不做改变,现在希望你让每个点都获得尽可能大的魅力值,输出每个点的魅力值思路:这个题目大概是需要在树上做个dp吧,但是我们知道所有的dp都可以由搜索的状态转移而来,所以我们可以先考原创 2017-08-30 23:37:55 · 312 阅读 · 0 评论 -
CodeForces - 548E Mike and Foam 容斥||莫比乌斯反演
题意:输入n,m,然后输入n个数,之后是m次操作,每次操作输入一个下标i,下标i第一次出现,代表把数组第i个数放进架子中,第二次出现,代表取出来,每次操作完之后,输出架子中的数字中,有几对是互质的. 思路:看到gcd我们首先想容斥,mobius,想mobius的第二种形式.mobius第二种形式为: F(n)=∑n|df(d)F(n) = \sum_{n|d} f(d) f(n)=∑n|原创 2017-10-11 00:35:44 · 442 阅读 · 0 评论 -
Gym - 101572G
题目大意一场比赛, 每个队伍的分数由(a, b)组成, a是做题数量, b是总罚时, 题量多的排名前, 相同题量罚时少靠前, 如果题量罚时都相同, 排名一样, 例如, (1, 1), (1, 1), (0, 0)三支队伍排名为1, 1, 2 现在有n支队伍, m个事件, 每个事件由(t, p)组成, 代表队伍t以罚时p做出了一题 让你输出每个事件后, 队伍1的排名思路先预处理出所有可能的(a原创 2017-11-03 23:37:00 · 426 阅读 · 0 评论 -
Codeforces Round #442 (Div. 2) Danil and a Part-time Job dfs序+线段树区间反转
点击打开链接思路:由于每个位置要么0要么1,所以这个我们可以用线段树来维护区间和,反转的时候就是区间长度-原来的和即为反转后的.另外对子树进行操作很显然想到dfs序.PS: 注意laz标记此时变为异或,即对同一块区间反转两次是无意义的,#includeusing namespace std;const int maxn = 2e5+5;int n;vectorvt原创 2017-10-24 23:38:35 · 355 阅读 · 0 评论 -
codeforces 862E Mahmoud and Ehab and the function 二分+思维
传送门题意: 给你序列a元素个数为n。b序列元素个数位m.对于每个j有: 给你q次修改,每次修改a数组的al,....ar。输出每次修改后最小的f(j)是?思路:可以观察到无论j怎么变化对于a数组的元素都是奇数为加,偶数为减.这个的和我们是可以提前维护好的,修改的时候由于整个区间(l,r)都增加x,所以只需要统计区间长度奇偶性就可以了.(要么只增加一个要么不增加).然后我们观察b数组原创 2017-09-25 13:57:21 · 374 阅读 · 0 评论 -
Codeforces Round #430 Vitya and Strange Lesson 逆向思维+01trie
题目链接题意:给出一个长度为n的非负整数序列A,每次操作要求把整个序列异或上x后求mex。 n,m,Ai思路:首先求异或最大值最小值我们知道可以用01trie,每次insert是log,查询也是log级别的。那么这个问题让我们求未出现的最小的自然数,我们来想想怎么转化.首先我们知道 x^a[i]^z = a[i] ^(x^z).原创 2017-08-30 23:53:01 · 325 阅读 · 0 评论 -
2015-2016 Northwestern European Regional Contest (NWERC 2015) 7/11 待补
PDFA.Assigning Workstations&& BZOJ 4425佩内洛普是新建立的超级计算机的管理员中的一员。 她的工作是分配工作站给到这里来运行他们的计算研究任务的研究人员。佩内洛普非常懒惰,不喜欢为到达的研究者们解锁机器。 她可以从在她的办公桌远程解锁这些机器,但她并不觉得这卑贱的任务配得上她,所以她决定忽略安全指南偷偷懒。她可以直接地要原创 2017-08-21 00:31:24 · 1474 阅读 · 0 评论 -
Codeforces Round #428 (Div. 2) B 细节 D gcd预处理因子+容斥
题意:给出n行,每行有8个座位, {1, 2} {3 4} {4, 5} {5, 6} {7, 8} 一行中这些位置算相邻,给出k个不同部队的士兵,要求不同部队的士兵部能坐相邻的位置,问能否达到这个目的思路:这个题我的思路比较丑..我先把所有奇数的+1判断能否全部坐下,不能就一定不可以了.然后优先考虑人数大于等于4的,放在中间的四人座,如果都填完了,还剩余四人座,在考虑了剩下的原创 2017-08-15 01:30:11 · 324 阅读 · 0 评论 -
CodeForces - 821E Okabe and El Psy Kongroo dp+矩阵快速幂
题目链接 题意:n条直线(a[i],b[i],c[i]) 表示在x=a[i]~b[i]内 运动的高度0<=y<=c[i], a[i]=b[i-1],a[1]=0,a[n]<=k<=b[n],一个人有三个运动方向(x+1,y+1),(x+1,y),(x+1,y-1) n<=100,c[i]<=15, a[i],b[i],k<=1e18 问从(0,0)->(k,0)的方法数? 思路:首先d原创 2017-09-13 11:19:36 · 337 阅读 · 0 评论