自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 寒假刷题38: Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)

题目链接:Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)题目解析:在C1中,我们让每一个点作为顶点,然后遍历数组,这在C2中显然会超时,现在考虑如何优化.在遍历的过程中,如果一个点可建造的高度h[i]大于等于当前可建造的最大高度maxhigh,显然不用更新maxhigh.只有当h[i]<maxhigh...

2020-02-26 17:20:45 221

原创 寒假刷题37: Codeforces Round #622 (Div. 2)C1. Skyscrapers (easy version)

题目链接:Codeforces Round #622 (Div. 2)C1. Skyscrapers (easy version)题目解析:通过分析题目可以知道,最终情况一定是一个倒V字形分别让每一个点作为最高点,记录当前可建造的最高高度maxhigh,同时向左右两边遍历,更新maxhigh并求出以此时的答案,最后所有答案取最大值即可时间复杂度O(n^2)AC代码:#...

2020-02-26 17:03:43 236

原创 寒假刷题36:Codeforces Round #622 (Div. 2) B. Different Rules

题目链接:Codeforces Round #622 (Div. 2) B. Different Rules题目解析:这次B题好像坑了不少人,最后过的人数还没C1多(让本菜鸡恰了一波烂分)结论:〈max(1,min(n,x+y−n+1)),min(n,x+y−1)〉这里有详细分类讨论过程http://codeforces.com/blog/entry/74146和我当时分类...

2020-02-26 16:41:13 210

原创 寒假刷题35:Codeforces Round #620 C. Air Conditioner

题目链接:C. Air Conditioner题目解析:为啥这题标签里面有DP啊...状态转移?从初始温度开始,能求出下一位客人进门时可达到的温度区间。如果和此客人的舒适区间不相交,则输出NO;反之,取交集作为新的状态AC代码:#include<iostream>#include<cstring>#include<vector>#...

2020-02-23 16:57:56 131

原创 寒假刷题34:洛谷P1197 [JSOI2008]星球大战(并查集)

题目链接:洛谷P1197 [JSOI2008]星球大战题目解析:离线以后逆序操作AC代码:#include<iostream>#include<cstring>#include<vector>#include<queue>#include<algorithm>using namespace std;con...

2020-02-22 18:13:34 153

原创 寒假刷题33:洛谷P2024 [NOI2001]食物链(并查集)

题目链接:P2024 [NOI2001]食物链题目解析:就是用3倍的并查积的存各种动物的关系一倍存本身,二倍存猎物,三倍存天敌AC代码:#include<iostream>#include<cstring>#include<vector>#include<queue>#include<algorithm>...

2020-02-22 17:39:36 135

原创 寒假刷题32:洛谷P1111 修复公路(并查集)

题目链接:P1111 修复公路题目解析:先按时间排序,每次合并两个节点,如果原先不连通那么合并之后联通块数量减一AC代码:#include<iostream>#include<cstring>#include<vector>#include<queue>#include<algorithm>using na...

2020-02-22 12:15:27 302

原创 寒假刷题31: Codeforces Round #621 D. Cow and Fields

题目链接:Codeforces Round #621 D. Cow and Fields题目解析:首先用BFS计算出起点1和终点n到各个点的距离,假设任意一点到起始点的距离为Xi,到终止点距离为Yi。对于任意两个特殊点a,b,如果在他们之间修路,那么经由他们的距离为min(Xa+Yb,Ya+Xb)这样很容易想到一种O(n^2)的做法:枚举所有点,计算距离如何优化呢?假设Xa+Yb&l...

2020-02-22 12:06:39 154

原创 寒假刷题30:洛谷P2161 [SHOI2009]会场预约(线段树)

题目链接:P2161 [SHOI2009]会场预约题目解析:听说是平衡树的题(然鹅我是在线段树树状数组分类里找到的它)线段树做法:把题目看成一个仅实现区间修改的线段树,用tagtag数组打打标记即可有空补一下平衡树树状数组做法吧…好像还有一个神奇的STL做法?翻译:一定不咕一定不咕AC代码(线段树):#include<cstdio>#define N 100200#...

2020-02-21 18:21:14 148

原创 寒假刷题29:Codeforces Round #621 C. Cow and Message

题目链接:Codeforces Round #621 C. Cow and Message题目解析:思维题对于重复出现的所有长度大于等于2字串来说,一定有一个长度为2的字串,出现次数和它一样。因此,我们只需要统计长度为1和长度为2的字串出现次数即可AC代码:#include<iostream>#include<cstring>using namespace...

2020-02-21 17:09:31 167

原创 寒假刷题28:Codeforces Round #621 B. Cow and Friend

题目链接:Codeforces Round #621 B. Cow and Friend题目解析:假设当前最大跳跃距离为X,则当两点之间直线距离小于等于2X时,一定可以通过两次跳跃到达。如图,从0跳到10,X=5 。 距离刚好等于2X,相切因此,我们只需要记录最远可跳跃距离,计算通过几次跳跃可到达即可特殊情况:距离dis小于最远可跳跃距离时,如果有某个可跳跃距离正好等于dis,则...

2020-02-21 12:27:47 159

原创 寒假刷题27:洛谷P2023 [AHOI2009]维护序列 (线段树)

题目链接:P2023 [AHOI2009]维护序列题目解析:这题就离谱....写着写着感觉有点熟悉,再一看,这不就是之前P3373改一下输入吗?AC代码:#include<iostream>#include<cstdio>#include<cstring>#define ll long longusing namespace...

2020-02-21 10:51:03 152

原创 寒假刷题26:洛谷P1198 [JSOI2008]最大数

题目链接:P1198 [JSOI2008]最大数题目解析:没啥好说的,挺裸的线段树…为啥放上来呢,因为貌似用单调栈+二分 或者 Sparse-Table 也可以做留个坑以后一定补~~(翻译:咕咕咕)~~AC代码:#include<iostream>#include<cstring>#include<cstdio>#include<st...

2020-02-20 18:33:03 170

原创 寒假刷题25:洛谷P1972 [SDOI2009]HH的项链(树状数组)

题目链接:P1972 [SDOI2009]HH的项链题目大意:给你一个长为n(n<=1e6)的数组,有m(m<=1e6)次询问,每次询问包含两个整数L,R,求区间[L,R]内共有几种不同的数字题目解析:对于若干个询问的区间[l,r],如果他们的r都相等的话,那么项链中出现的同一个数字,一定是只关心出现在最右边的那一个的,例如:项链是:1 3 4 5 1那么,...

2020-02-20 18:24:48 155

原创 寒假刷题24:发射站(洛谷P1901)单调栈

题目链接:发射站题目解析:有一句很重要的话:发出的能量只被两边最近的且比 它高的发射站接收。显然要用单调栈。也就是要分别求每个数左边和右边碰到的第一个比它大的数的位置。这次用了c++自带的stack,注意在判断语句里s.size()一定要写在最前面(血的教训QAQ)AC代码:#include<iostream>#include<cstring&gt...

2020-02-20 12:58:48 249

原创 寒假刷题23:Feel Good(POJ - 2796) 单调栈

题目链接:https://vjudge.net/problem/POJ-2796题目大意:给你一个非负整数数组,定义某个区间的参考值为:区间所有元素的和乘以区间最小元素。求该数组中的最大参考值以及对应的区间。比如说有6个数3 1 6 4 5 2最大参考值为6,4,5组成的区间,区间最小值为4,参考值为4*(6+5+4)=60数据范围1<=n<=100000;题目解...

2020-02-20 12:46:23 167

原创 寒假刷题22:"Ray, Pass me the dishes!" (UVALive - 3938 )

题目链接:https://vjudge.net/problem/UVALive-3938题目解析:构造线段树,维护最大区间和,最大前缀和,最大后缀和,通过分治的思想进行区间合并。AC代码:#include <cstdio>#include <cstring>#include <algorithm>#include <iostre...

2020-02-19 18:10:09 165

原创 寒假刷题21:Frequent values(UVA - 11235)RMQ

题目链接:Frequent values题目解析:因为数组是非降序的,所以首先对其进行游程编码(RLE)。比如-1,1,1,2,2,2,4,游程编码后变为(-1,1),(1,2),(2,3),(4,1).即(a,b)表示a个连续的b用value[]和count[]两个数组分别表示每一段的值和出现次数,num[]、left[]、right[]分别表示当前位置所在段的编号和左右端点位置...

2020-02-19 11:51:51 124

转载 mark一篇文章,关于写题解,还8错

https://studyingfather.blog.luogu.org/blog-written-guide

2020-02-18 20:46:33 153

原创 寒假刷题20:Ping pong (UVALive - 4329)树状数组

题目链接:Ping Pong题目解析:考虑第i个人当裁判,设此时左边又x个人比他小,右边有y个人比他小。那么,他能组织x*(n-i-y)+(i-1-x)*y场比赛把n个人的场次累加即可。接下来考虑如何求x和y。从左到右扫描数组,设a[j]表示目前为止数字j出现了几次,则x就是。类似的,可以求出y。这个修改、求和的过程就要用到树状数组。AC代码(网站好像有问题......最近...

2020-02-18 20:43:32 171

原创 寒假刷题19:单调栈例题(洛谷P5788)

题目链接:单调栈题目解析:很裸的一道题......主要是为了回顾一下单调栈的用法小于栈顶元素直接入栈,反之弹出栈内所有不大于当前元素的数并记录答案保证了出栈元素单调增AC代码:#include<bits/stdc++.h>using namespace std;int n;int s[3000100],top=0,num[3000100];int ...

2020-02-13 18:11:59 304

原创 寒假刷题18:E2 - String Coloring (hard version)

题目链接:String Coloring (hard version)题目解析:根据狄尔沃斯定理 这道题其实就是在求最长的递减子序列因为只有26个字符,直接暴力就行AC代码:#include<bits/stdc++.h>using namespace std;int n,a[200003],maxx[200],maxxx=0,ans[200003],c...

2020-02-13 11:37:17 240

原创 寒假刷题17:1296E1 - String Coloring (easy version)

题目链接:1296E1 - String Coloring (easy version)题目解析:这道题实际上是把一个字符串分为两个不递减的子串。可以用DP,但还有一种贪心的方法:从左到右遍历原字符串,并新建两个字符串s1,s2,如果当前字符大于等于s1的末尾,则把它加入到s1中;如果大于等于s2末尾,则加入到s2中;其余情况则为“NO”AC代码:#include <bits/s...

2020-02-12 19:10:21 210

原创 寒假刷题16:cf1296D Fight with Monsters

题目链接:cf1296D Fight with Monsters题目解析:本题在教我们如何合理抢人头把怪物的hp对两个人的攻击力之和取余,如果余数小于a的攻击力,就不需要发动能力。否则,需要发动 (余数-a)/a的攻击力+1 次(整除无需加一)能力把每个怪需要发动能力的次数预处理出以后,排序,遍历即可AC代码:#include<bits/stdc++.h>using ...

2020-02-12 18:37:24 151

原创 寒假刷题15:Prince and Princess (UVa 10635) LCS

题目连接:Prince and Princess 题目解析:最长公共子序列。如果直接用LCS,时间复杂度不允许注意到A,B两个序列中所有元素不同。因此可以把A中元素重新编号为1~p+1,并依此相应调整B中元素编号(如果在A中没出现过可以直接删除)。之后求新的B序列的LIS即可。AC代码:#include <bits/stdc++.h>using name...

2020-02-11 17:32:16 131

原创 寒假刷题14:Water Balance (贪心+单调栈)

题目链接:water balance题目解析:最朴素的想法:对于每一个点,遍历它之后的每一个点,找到使最小的点,将他们之间的点全赋值。时间复杂度为O(n),显然会超时。很容易发现最终的序列是从前往后单调不减的,故可用单调栈维护。AC代码:#include <bits/stdc++.h>using namespace std;#define l...

2020-02-11 17:05:40 270

原创 寒假刷题13: Anu Has a Function Codeforces Round #618 (Div. 2) C

题目链接:Anu Has a Function题目解析:观察函数f(x,y)定义:(x|y)-y即 取出来x里是1但是y里不是1的地方 也就是 x&(~y)(也可以列真值表)因此题目就变为求 a1&(∼a2)&…(∼an) 最大值先预处理出 前缀按位和 以及 后缀按位和,再求出最大值即可AC代码:#include<iostream>#i...

2020-02-10 20:05:02 377

原创 寒假刷题12:Aerodynamic Codeforces Round #618 (Div. 2) D (几何)

题目链接:Aerodynamic题目解析:题意挺难理解的…手玩样例发现是求是否中心对称如何验证是否中心对称呢:必须是偶数个点连接相对顶点的线段的中点必须重合AC代码:#include<bits/stdc++.h>using namespace std;int n,x[100010],y[100010];int main(){ cin>>n; ...

2020-02-10 19:55:47 316

原创 寒假刷题11:And Then There Was One(LA 3882) DP

题目链接:And Then There Was One题目解析:约瑟夫问题的变种,把第一个删除的数从1改为m。如果是0~n-1,从0开始删除,有结论F(1)=0;F(n)=(F(n-1)+k)%n;本题是从m开始,故答案为 (m-k+1+F[n])%nAC代码: #include<iostream> #include<cstdio> ...

2020-02-09 17:18:16 142

原创 寒假刷题10:Network(LA 3902) 无根树转有根树+贪心

题目链接:Network题目解析:将原本的无根树,以原始VOD服务器为根,转变为有根树.对于已经满足条件的客户端直接忽略.将剩余所有叶子节点按深度入队,之后从最深的一层向上遍历.如果发现未被覆盖的叶子节点,就向上回溯k层后插入一个服务器.每插入一个服务器,就进行一次DFS,覆盖与它相距不超过k的所有叶子节点.AC代码:#include<iostream>#include...

2020-02-08 17:58:39 272

原创 寒假刷题9:Pie (NWERC 2006,LA 3635)二分

题目链接:Pie 题目解析:二分答案验证。需要注意的一点:pi=acos(-1.0),如果手动赋值3.1415926会WAAC代码:#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<cmath>#...

2020-02-08 17:37:36 145

原创 寒假刷题8:Assemble(NWERC2007,LA 3971) 二分

题目链接:Assemble题目解析:求“最小值最大”二分答案,假设答案为x。删除品质因子小于x的所有配件,看能否组装出一台不超过b元的电脑(显然每一类配件都要选最便宜的那个)之前在去沈阳的途中,小汤圆同学问过我一个十分类似的题,当时口胡了一个错误做法…今天恰好看到这道题,赶快补上把二分代码单独拉出来int l=0,r=maxq;while(l<r){ int m=l+...

2020-02-07 12:29:04 172

原创 寒假刷题7:A Different Task (UVA 10795 )

题目链接:A Different Task题目解析:数学题,汉诺塔问题的变种。在初始局面和目标局面中,找出所有柱子中不同的盘子中编号最大的一个,设为k,则k必须移动。所有比k编号大的盘子因为不会造成影响,故直接忽略。假设k需要从柱子1移动至柱子2.那么移动之前的局面一定是:柱子1只有盘子K,柱子2为空,柱子3从上到下依次为盘子1,2,3,…,k-1设函数f(P,i,final)表示在 ...

2020-02-07 12:07:40 138

原创 寒假刷题6:Help is needed for Dexter(UVa11384)

题目链接:Help is needed for Dexter题目解析:这个题看起来蛮水的…不过想要快速想出正解还是有一定难度。核心思想是每次操作后,使尽可能多的数字等价。举个栗子:1 2 3 4 5 6这六个数字,把4,5,6同时减去min(4,5,6)=4得0,1,2.等价于 1,2,3。换句话说,f(6)=f(3)+1.这样就得到了一个递归关系:f(n)=f(n/2)+1,f(1)...

2020-02-06 18:52:49 196

原创 寒假刷题5:Chinese Mahjong(UVa11210)

题目链接:Chinese Mahjong题目解析:贼有意思的一道题,顺便让我学习了一下如何打麻将(狗头)因为总共只有34种牌,因此依次判断加上某一种牌后能否胡即可。此时问题转化为:给定14张牌,判断是否可以胡牌。判断过程:首先取两张一样的牌作为“将”,然后每次选三张作为“顺子”或“对子”,直到选完。AC代码:#include <iostream>#inc...

2020-02-06 12:59:39 195

原创 寒假刷题4:Even Parity (UVa 11464)

题目链接:Even Parity题目解析:很容易想到枚举每个 0 变或不变,最后判断是否满足条件。共计2255种情况,显然会超时。注意到如果上一行确定,完全可以推出下一行。故我们仅需确定第一行,就可以推出整个矩阵。而第一行仅有215=32768种情况,可行。总复杂度为O(2n * n2)AC(大概吧…UVA进不去)代码:#include<iostream>#inclu...

2020-02-06 11:09:52 1297

原创 寒假刷题3:Image Is Everything,LA2955(迭代更新)

题目链接:Image Is Everything解析:首先假设该正方体是满的,之后基于以下规则迭代:如果视图为’.’,那么该面下面的所有立方体都要删除。在遍历六视图进行判断的时候,如果该面没有涂上颜色, 那么我们就假设这个面是表面,把他涂上颜色即可。如果该面已涂的颜色和当前六视图对应面的颜色相同,即不存在矛盾,那么继续判断六视图下一个面。否则,存在矛盾,该立方体删除。AC代码:...

2020-02-05 11:22:53 213

原创 寒假刷题2:Piotr's Ants,UVa 10881

题目链接:Piotr’s Ants解析:把蚂蚁看作是点,因为速度相同,所以碰撞后可看作是“对穿而过”。这样可以计算出所有蚂蚁终止时刻位置。可以看出所有蚂蚁的相对顺序是不变的,所以初末状态排序,可以确定“谁是谁”。注意:输入不是按位置从小到大输入,需要预处理AC代码int num,l,t,n;struct ant{ int id; int p,d; bool...

2020-02-05 10:34:31 156

原创 寒假刷题1:Graveyard (NEERC2006,LA3780)

题目链接:https://vjudge.net/problem/UVALive-3708解析:思维题。 固定一个点不动,让其余各点分别移动到离它最近的目标点。这种情况下一定是最优的 。 注意细节。将距离按比例缩小计算。 考虑特殊情况,会不会有多个点移动到了一个点上?答案是否定的。假设有两个雕塑被移动到了一个位置,这说明它们很接近。具体...

2020-02-03 18:17:08 212

原创 KMP

#include <iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>using namespace std;#define ll long longint f[100010];char t[100010],p[100010];i...

2019-08-23 16:26:19 124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除