- 博客(267)
- 收藏
- 关注
原创 IOS学习 写在前面
因为渣渣太菜所以秋招的时候从后端转到了客户端去写ios,写了几天发现自己理解并不深刻,所以打算用写博客的方式去加深自己的理解,所以这里写的更多的是自己的一些思考和理解,并不保证正确性,如果写的有问题的话可以写在评论下面我们一起探讨。...
2019-12-09 20:27:55
160
原创 牛客网练习赛 41
A:中文题意,直接说思路:可以知道在n%m == 0 的时候可以全部翻转完,但当第一次翻转完之后B使坏一次就永远也翻不到,所以只有当n==m的时候是YES其他都是NO代码:#include <bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); w...
2019-03-03 18:21:59
216
原创 Codeforces Round #542
A:题意:给你n个数,让你找到一个数d使得这n个数除2得到的正整数大于等于n/2向下取整,让你输出这个d。思路:看有几个正数几个负数,如果整数大于n/2 就输出1,反正输出-1,如果不够输出0代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e4+10;int a[maxn];in...
2019-02-28 21:05:23
205
原创 gym 101775 J Straight Master (2017ECfinal)
https://codeforces.com/gym/101775/problem/J题意:给你一组目标序列,另外一组序列的初始值都是0,你每次可以将长度为3~5的区间整体加上一个1,现在问你最终能不能得到目标序列。思路:首先一个结论就是对于一个长度大于5的区间我们可以分成任意[3,5]的区间,所以有了这个结论我们就可以把区间分成大于3的序列就好了,具体怎么做?我们对目标数组进行差分,可以...
2018-12-22 21:24:42
213
原创 洛谷 P3948 数据结构 (差分+暴力)
题意:总结一下就是他有两种操作模式,一种是强制在线,你会有两种操作:A在L,R加上一个数,Q查询他们满足的个数有多少,还有一种是离线的,就是问L,R满足的个数是多少,其中乘上的那个i是总的数组的i而不是查询区间的i,当时以为是查询区间的i所以不会写了。。。之后看了一眼,发现是全局的i,那么就是一道暴力题了。。。思路:对于区间加我们直接差分,而对于在线的查询的话,我们直接暴力,由题目可以...
2018-12-22 20:55:43
278
原创 洛谷 P1083 借教室 (二分+差分)
题意:https://www.luogu.org/problemnew/show/P1083思路:首先可以看出这是一个比较典型的差分,首先是离线,然后在区间L,R增加几,这些都是差分的特征,那么现在问题就是,怎样差分?我们可以看出天数是具有单调性的,当在第x天不行的时候那么x+1肯定也不行,由此可以看出天数是具有二分的特性的,所以我们可以二分天数。代码:#include ...
2018-12-22 20:38:31
220
原创 HDU - 1556 Color the ball (裸的差分)
题意:思路:其实就是每次在L,R区间加一,然后问你每个区间加了几次,那么我们差分,每次让D[L]++,D[R+1]–,之后就好了。代码#include <bits/stdc++.h>using namespace std;const int maxn = 100000 + 10;int D[maxn];int main(){ int n ; whil...
2018-12-22 20:28:25
172
原创 牛客练习赛34 C little w and Segment Coverage(差分或者线段树)
题意:思路:首先,我们可以简单的得到,那些重复覆盖的点我们肯定是不能选的,我们要选的肯定是那些只被覆盖过一次的点,那么现在的问题就到了我们如何快速的找到那些只被覆盖过一次的点?思路1: 我们根据区间信息建一棵线段树,之后查询他的叶子节点的权值是不是1,复杂度是o(logn)。思路2:根据差分数组,利用差分数组我们可以直接O(n)的知道叶子节点的权值。之后我们要开始枚举这些只...
2018-12-18 21:58:58
310
原创 HDU 2433 Travel (最短路树 )
题意:给你一个图,n个点,m条边,m条边的边权是1,现在定义一个sum[i],表示的是以i点,到达所有点的最短路,整个图的权值定义,现在按照顺序依次删去每一条边,问你每次图的权值的变化。思路:我们跑一边最短路,把松弛的边记录下来,我们可以看出这样我们会构建出一颗最短路树,为什么,因为这样的话我们的每一个前驱只能有一个后继,这样他就是一颗树,而且删除这些边之后,最短路会改变,那么每次删除的时候,...
2018-11-16 16:57:49
180
原创 洛谷 P1272 重建道路 (树形dp + 背包)
题意:给你一棵树,问你最少切几条边使得最后的子树有恰好有p个顶点。思路:我们设dp[i][j]表示的是你在i顶点保留j个点的最小切割数量,那么dp[u][j] = max(dp[u][j],dp[u][k] + dp[v][j-k]) ,初始化是 dp[u][1] = size[v];代码:#include <bits/stdc++.h>using namespac...
2018-11-16 14:44:13
182
原创 HDU 2196 Computer (树上最远距离)
题意:给你一棵树,之后让你求出这个树上每个点的距离的最大值。思路:首先怎样求一个树上一个点到另外一个点的最远距离?其实就是一个点往父亲方向的最大值+往儿子方向的最大值,可知这些东西肯定都是单向的,因为你要么往儿子方向走你就只能往儿子方向走,不能再回去往父亲方向走,那么我们就可以设:f[u]表示的是你往儿子方向的最大值,g[u]表示的是你往父亲方向的最大值,p[u]表示的是u的父亲,...
2018-11-16 14:31:22
196
原创 POJ 1655 Balancing Act (树的重心裸题)
题意:给你一个无根树,让你找到树的重心,就是树的重心的裸题,现在说一下树的重心把,树的重心就是以树的重心为根得到一颗有根树,这颗树中,节点最多的那颗子树的节点数量最少。思路:根据定义去写的话,我们先随便以一个点为根,自底向上的求出他的所有子树数量,之后遍历每一个点,找到子树节点值最大的最小的那个数就好了#include <vector>#include <stdio....
2018-11-16 14:11:55
187
原创 P1352 没有上司的舞会 (树形dp)
题意:给你一颗树,每个节点都有一个权值,如果你选择了他的根节点,你就没有办法选择这个节点的儿子节点,现在问你怎样选择可以使得选的的权值最大。思路:首先dp[i][j] 分别表示的是,你在以i为根节点的子树中,选择了根节点dp[i][0] , 或者选择了根节点dp[i][1],详细情况看代码把代码:#include <bits/stdc++.h>using namespa...
2018-11-16 13:42:33
210
原创 P1122 最大子树和(树形dp)
题意:给你一棵树,每个顶点都有一个权值,现在让你求出这棵树权值最大的子树的值是多少思路: 我们自底向上的求出以每一个点为根节点的最大值,之后比较一下大小就好了。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;vector<int>V[maxn];int W[m...
2018-11-16 13:33:40
346
原创 codeforce 767C Garland (树形dp)
题意:给你一棵树,每个节点都有一个权值,之后你可以删除两条边把他变成3颗子树现在使得他的三颗的权值相等。思路:显然他们的点权都是3的倍数才会得到3颗权值相等的树,那么我们就树形dp,自下而上的求出以某个点为根的子树的权值,如果他的权值等于sum/3 那么就让这颗子树的权值为0,接着dfs就好了代码:#include <bits/stdc++.h>using namesp...
2018-11-15 21:47:15
205
原创 Codeforces Round #520 (Div. 2) C Banh-mi (思路)
题意:给你一个01串儿,现在你可以取某一位,之后你会得到这一位的权值,之后所有除他之外的值都加上这个数,例如1 1 0 1,我先取第一个1,那么值就会变成 _ 2 1 2,现在给你一个区间,问你取完这一串儿数字之后的最大权值是多少思路:显然我们把所有1都取完,在取0之后会得到更优的解,其实是我们取最大值会比较优。之后我们会发现如果是一个满区间的1的话,那么值就是1 + 2 + 4 。。。等于2...
2018-11-15 21:41:43
358
原创 Codeforces Round #520 (Div. 2) B Math(分解质因数思维)
题意:给你一个数字n,现在有两种操作 1 : 把n乘上任意一个数,2:当n是一个完全平方数的时候,把这个数字开平方。现在问你最少经过几次操作可以使得n最少。思路:首先分解质因数,倘若一个数字的质因数出现的次数是2的幂的话,那么我们就可以开平方,怎么得来的?如果是2得幂次那么每次就会少一半,一半,一半,那么我们现在做的就是把n分解质因数,然后找到最大得幂次,之后把所有得所有得质因数变成最大得幂次...
2018-11-15 21:15:42
334
原创 Educational Codeforces Round 54 (Rated for Div. 2) D Edge Deletion (最短路)
题意:给你一个无向图,之后又n个点m条边,现在让你将整个图删成只剩下k条边,并且保证删除后的边的最短路不变,现在问你剩下的边的编号是多少思路:删除的边要保证最短路不变,那么就可以看出,松弛的边是一定不能删除的,因为删除他之后我们的最短路肯定会改变的,那么我们将松弛的边全部找出来,取完之后我们会发现每一个前驱只可能有一个后继,那么这其实就是一棵树了,之后我们从树的根节点里选出k个点就好了。代...
2018-11-13 22:00:13
152
原创 牛客练习赛30 E 国政议事 (暴力删边 + 二分图匹配)
题意就是二分图匹配的最大匹配,只不过还有一个条件是:左边部分的点只有一条边连在右边部分的那种,就是删掉这条边之后最大匹配数少了一个的那种。思路其实题意就直接给了,那么我们暴力的去删去每一个边,之后去跑匈牙利,得到的匹配数比原来的少的话,那就说明我们需要输出这条边。(感觉思路不是正解啊。。。也有可能自己写的代码自带常数,T了好几发,改了改常数才过的,看题解有人写网络流,自己不会 就算了 。。。...
2018-11-04 21:23:33
206
原创 牛客练习赛30 D 消消乐(二分图的最小点覆盖 + 输出覆盖点集)
题意这道题其实就是二分图的最小点覆盖 + 输出覆盖点集的模板题,和uva11419一样思路就是X和YX和YX和Y拆点然后跑一个最小点覆盖,如何输出覆盖的点集呢?那么我们在计算出最大匹配后,可以从X集合中未匹配的点开始扩展匈牙利树,在Y中被扩展到的点肯定得选,因为只有选择Y中这些点,X中未匹配的点才能被覆盖,而在X中,我们要选那些在扩展中没有被访问过的点,因为这些点是没有与Y中的那些扩展到的...
2018-11-04 21:10:53
228
原创 牛客网练习赛30 小K的疑惑 (思维)
题意中文题意,主要是i,j,ki,j,ki,j,k可以重复。思路可以看出,dis(i,j)dis(i,j)dis(i,j) 的距离不是0就是1,那么我们要找到其实就是在两堆集合里面,一个集合里面所有的值都是1,另一个集合里面所有的值都是0,之后在1这个集合里面去随意选三个数,在0这个集合里面去随意选3个数就好,那么现在的问题就是说我们如何去构造这两个集合了,正解是我们去求每个点到根节点的距离...
2018-11-04 15:44:17
183
原创 Educational Codeforces Round 53 C Vasya and Robot (二分)
题意有一个机器人,有四种指令,上下左右,最初机器人在(0,0)(0,0)(0,0)位置,你现在要去(X,Y)(X,Y)(X,Y),你可以随意更改指令,现在让你更改指令下标的最大值-最小值最小 且 这些指令能够到达(X,Y)(X,Y)(X,Y)思路首先维护前缀和,之后二分区间m,区间表示的就是我们下标的最小值和我们下标的最大值,那么我们可以更改的最大次数就是m,之后我们看看 [1,i][1,i...
2018-10-31 21:29:32
138
原创 HDU 4300 Clairewd’s message(拓展KMP)
题意这道题的题意很奇怪。。给你两个字符串,第一个字符串shshsh表示的是密码表,长度为26,其中sh[0]sh[0]sh[0]表示的是‘a’加密过后的字符,sh[1]sh[1]sh[1]表示的是’b’加密后的字符等等。。第二个字符表示的是给你一段字符他是由加密过后的字符和一段未加密的字符,其中未加密的字符不完整,前半段加密的字符是完整的,并且在完整的情况下加密字符和未加密字符应该是相同的,现在...
2018-10-25 15:18:20
127
原创 HDU 3613 Best Reward(exkmp)
题意首先给你一个长度为26的数组,表示的是26个字母代表的权值,之后给你一串字符串,之后给你一串字符,你需要将这个字符变成切成两半,如果你切下来的部分是回文串的话,那么你将得到这部分的权值,如果他不是回文串的话他的权值就是0,现在问你怎样切使得切下来的两个串的权值最大。思路首先将原串chchch翻转出来变成shshsh,这个时候你会发现,如果一个串是回文串的话,原串翻转出来的串和原串其实相等...
2018-10-25 09:23:56
145
原创 HDU 4333 Revolving Digits (exkmp)
题意给你一个数NNN大小为1010000010^{100000}10100000,之后你可以将这个数字的最后一位放到第一位其他位置顺次往后移动,现在问你,在移动的过程中有多少个数字大于NNN或者小于NNN,或者等于NNN.思路字符串特别大,所有显然要用字符串输入。首先我们将NNN翻一倍续到后面记为shshsh,这样的话,新的字符串就会包含字符串变换的所有情况。之后我们发现每次变换之后我们要和...
2018-10-22 17:25:27
157
翻译 CodeForces - 35E Parade (线段树)
题意:给你几个矩形,现在问你矩形轮廓线改变的坐标在哪里思路:怎样的轮廓线会改变?其实就是当他们的高度改变的时候轮廓线会改变,那么我们离散x坐标,之后维护y的最大值,当y改变的时候我们就记录下当前的横坐标,而纵坐标刚好就是他的高度,其中有一个问题就是 当我们改[1,2]值为1区间和[3,4]值为2区间后 ,我们发现当我们查2的时候他的值是1,而查3的时候他的值是2,但是根据图中画的我们发...
2018-09-25 22:05:55
255
原创 CodeForces - 276E Little Girl and Problem on Trees(线段树)
题意现在给你一棵这样的树,除了根节点外,其他的所有节点度都为2,也就是说除了根节点之外其他的节点都只能有一个节点,现在有两种操作:1。以当前节点为中心,距离为d的范围内的点全部都加上x。2。查询某个点的值思路*观察这样一张图,你会发现他们其实都是一条一条的链状的,所以对于更新来说我们可以这样,我们建两颗线段树,第一颗线段树中我们就是维护每个链上的值,每次更新的时候我们就以节点V为中心,...
2018-09-25 12:35:43
205
原创 ZOJ - 4056 Press the Button 青岛网络赛(思路)
题意给你6个数,A,B,C,D,T,V,给你一盏灯,它每隔V+0.5秒就会熄灭,A表示的是你每隔A秒可以拍灯B 下,如果灯是灭的,我们就让灯变亮,如果灯是亮的的话,我们就让分数+1,并将灯重新设置为每隔V+0.5秒熄灭,问你T秒之后的得分是多少。思路首先我们可以算出在T秒中总共拍了多少次灯,他是 (t/a)∗b+(t/c)∗d+b+d−1(t/a) * b + (t/c) * d + b+d...
2018-09-17 20:58:55
415
原创 HDU 5592 ZYB's Premutation (线段树求逆序对)
题意 给你一组从1到n的排列,表示的是你当前所拥有的逆序对数,现在让你重新还原这个排列。 思路 我们知道[1⋅⋅⋅i][1···i][ 1···i ]区间和[1⋅⋅⋅⋅i−1][1····i−1][1····i-1]区间的逆序对数了,那我们其实就可以确定第i个位置的大小是多少了,因为他们的差(设为p)其实就表明当前位置iii的这个数在他的前面有p个比他大,那么换句话说他其实就是他在当前区间是...
2018-09-15 10:39:18
175
原创 牛客OI赛制测试赛3 B 毒瘤xor (贪心)
题意 思路 贪心去取高位的111,对于这nnn个数的而言,我们从高位到低位,我们肯定要尽量的去取高位111,这样才能找到最大的x,那么对于这nnn位数的每一位而言,如果这n个数中的第xxx位,其中有555个1有666个0,那么我们肯定让这位是1,因为我们有6个可以让他变成高位1,那么最后求出的和肯定最大,所以我们维护一个前缀和,看看这些位是0多还是1多。 代码#include &...
2018-09-14 19:11:25
264
原创 ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang (分块+树状数组+dfs序)
题意 给你一颗树,由两种操作: 1.把这棵树深度为DDD的点全部都加上一个值。 2.求以p为根节点的子树的权值和是多少? *思路 对于树上的东西,我们可以把他求一下DFS序,之后就可以把树上的结构变成线性的结构,之后就是查询和修改这两个东西了。 关于修改:对于修改来说,当前层的点少的时候我们直接树状数组暴力修改,对于当前层数的点太多的情况来说,我们把层数打上标记。 对于查询,我们先查...
2018-09-14 19:03:56
174
原创 ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study (线段树维护前缀和的前缀和)
题意 很简答就是每次查询 (L,R)的时候 ,查询 a[L]∗(R−L+1)+a[L+1]∗(R−L−1)+a[L+2]∗(R−L−2)....a[R]∗1a[L]∗(R−L+1)+a[L+1]∗(R−L−1)+a[L+2]∗(R−L−2)....a[R]∗1a[L] * (R-L+1) + a[L+1] *(R-L-1) + a[L+2] * (R-L-2)....a[R]*1,还有修改值 ...
2018-09-13 21:20:59
191
原创 ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (线段树维护)
题意 你在海滩上有浪花,所有的浪花都是矩形的,当一个浪花来了之后,就会覆盖他的前一个浪花,问你最后浪花的周长和 思路 我们从后往前来,这样的话,我们处理的都是会留下来的,怎样的会留下来呢? 首先我们先看1号点和2号点,由图我们可以很明显的看出1号点会被淹没,而1`和1“他们不会被淹没,所以对于我们当前的值来说,我们维护一下大于他的x的最大的y,和大于他的y坐标的最大的x,这两个值,然后每次...
2018-09-13 21:02:26
275
原创 ACM-ICPC 2018 徐州赛区网络预赛 B. BE, GE or NE (记忆化搜索)
题意 两个人在玩游戏,有一个初始的分数,每次轮流玩游戏有三种操作,当前数字加上A,当前数字减去B,当前数字乘上-1,当最终分数>h 的时候就是good ending,小于l的时候就是bad ending ,其他的都是 Normal Ending。 思路 从第一次操作开始记忆化搜,之后到最后看看是大于h还是小于l,就好了,其实算是模拟把 代码#include <bits/...
2018-09-13 20:47:24
194
原创 CodeForces 138C Mushroom Gnomes - 2 (线段树)
题意 给你n个蘑菇和m颗大树的位置,以及大树往左倒往右倒的概率,大树的高度,和蘑菇的权值,蘑菇被压倒必死,问你蘑菇最大的期望是多少? 思路 对于一颗树而言,他往左倒的概率是a那么不往左倒的概率就是1-a,那么我们线段树维护一下某个区间不被压倒(树不会倒)的概率就好了,具体怎么维护,我们还是把所有点离散存下来,之后以离散后的点为区间建立线段树节点原来都是1,之后更新每个区间不被压倒的概率就好了...
2018-09-02 23:48:07
229
原创 HDU - 4521 小明系列问题——小明序列 (dp + 线段树)
题意 还是LIS,不过有一个限制条件是选择的节点必须相差d。 思路 dp方程其实还是 dp[i] = max(dp[j]) + 1 (0 &lt; j &lt; i &amp;&amp; a[i] &gt; a[j])只不过是j和i又加了一j+d &gt; i 而已,那么具体怎么写?很简单我们用线段树去维护max(dp[j]),具体怎么维护?我们把所有的点离散,之后以离散过后的点建立线段树,...
2018-09-02 23:40:42
268
原创 ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(线段树)
题意 这道题真的纯属尼玛题意题。。。赛后仔细翻译了翻译就是一道裸的线段树,给你n个房间,每个房间有一些灯泡需要换,你每个月可以买m个灯泡,当你当前房间需要的灯泡数小于等于你手中有的灯泡数的时候,你才可以换他,否则就跳到下一个房间,如果你手中的灯泡都换不了任意房间的时候就把灯泡留在手里等下一个月,现在给你一些查询,问你第j个月已经换完了几个房间,且当前月份手里有几个灯泡。 思路 就是你维护区间...
2018-09-02 23:27:50
139
原创 ACM-ICPC 2018 南京赛区网络预赛 J AC Challenge (状压dp)
题意 给你n道题,在你做第ii{i}道题的时候有p[j]p[j]{p[j]}个前置条件,当这些前置条件都满足的时候,我们可以得到a[j]∗t+b[j]a[j]∗t+b[j]a[j] * t + b[j]的价值,ttt,表示的是你现在已经做了几道题,问你怎样规划可以得到的权值最大。 思路 状压dpdpdp,dp[state]dp[state]dp[state]表示的是当前状态下,可以得到的最大...
2018-09-02 23:17:48
266
2
原创 HDU 6438 Buy and Resell (贪心)
nn{n}a[i]a[i]{a[i]} 1,2,101,2,10{1,2,10}11{1}22{2}22{2}1010{10}1+8=101+8=10{1+8 = 10}11{1}1010{10}#include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;#define int long longusing namespace std;const int maxn = 1e5+10...
2018-08-29 16:25:40
133
原创 HDU 6446 Tree and Permutation (思路+dp)
题意 给你n个点,n-1条边的一棵树,现在有一个从(1...n)(1...n){(1...n)}的全排列,表示的是你在这棵树上要走的路线,现在问你走完这些全排列的所有权值和是多少 思路 先看(1,2,3)(1,2,3)(1,2,3)你会发现有(1,2,3)(1,2,3)(1,2,3),(1,3,2)(1,3,2)(1,3,2),(2,1,3)(2,1,3)(2,1,3),(2,3,1)(2,...
2018-08-29 15:57:11
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人