- 博客(25)
- 收藏
- 关注
原创 网易 2020.9.5 笔试
都 ACACAC 了,不过有些代码写得有些冗余,可以参考看看。A模拟左手右手和背包,放回去的部分用 stackstackstack 维护就可以了。#include<bits/stdc++.h>#define pb push_back#define mes(a, b) memset(a, b, sizeof a)using namespace std;typedef long long ll;const ll mod = 1e9+7;const int maxn = 1e6+1
2020-09-05 21:28:39 211 1
原创 吉比特2020.8.27 编程2
#include<bits/stdc++.h>#define mes(a, b) memset(a, b, sizeof a)using namespace std;typedef long long ll;const ll mod = 1e9+7;const int maxn = 1e5+10;struct Mat{ ll mat[5][5]; Mat(){ mes(mat, 0); } void init(){ f
2020-09-01 19:05:20 184
原创 POJ - 3728 The merchant
POJ - 3728 The merchant VJ地址题目简介有多个城市,商人可以在每个城市购买和售卖,询问路线上最多可以赚多少钱,只能进行一次购买和售卖。思路多个城市形成一棵树,用四个数组维护,up[maxn][23], down[maxn][23], Max[maxn][23], Min[maxn][23]。f = fa[ i ][ j-1 ]Max[ i ][ j...
2019-07-16 01:52:35 209
原创 HDU - 3830 Checkers (LCA + 二分)
HDU - 3830 Checkers VJ地址题意:给你一组三个互不相同的点,按照规定能不能转移到第二组的点,如果能算出最少的步数。一个点只能移到相邻的点的对称位置,比如2 的的相邻点是 5,它可以移到8。但是这之间存在第三个点就不能移动,比如存在6, 7,就2就不能移动到8。那么2 5 -> 5 8可以看做2移动了3个位置,5移动三个位置。对于三个数 x, y, z...
2019-07-15 23:50:47 192
原创 bzoj 1977 严格次小生成树(最小生成树 + LCA倍增)
题目地址借鉴了大佬的博客:https://www.cnblogs.com/AK-ls/p/10509986.html题目描述小C最近学了很多最小生成树的算法,Prim算法、Kurskal算法、消圈算法等等。正当小C洋洋得意之时,小P又来泼小C冷水了。小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小的,也就是说:如果最小生成树选择的边集是EM,严格次小生成树选...
2019-07-12 19:48:29 219
原创 UVA - 1508 子集 + dfs
题目链接:Equipment题目大意:给你n组数据,每组数据有5个数,问从n组数据中取m组数据,问最大的价值和是多少?思路:因为暴力枚举n个数据肯定超时,那么我们可以枚举每组数据中这五个数分别取或不取的情况,记录n组数据的最大值,五个数据那么就是有32种情况,我们可以用二进制数来表示,再暴力搜索这32种情况如何匹配加起来最大的值。这里用子集与补集的算法。比如说11000和00111就能配出...
2019-01-21 21:40:09 145
原创 Hacking SPOJ - HACKING (字典树+dfs)
Hacking SPOJ - HACKING 题意:给你一个长度为n的字符串,找出一个长度小于等于m的字符串s1,并且字符串s1的里的字母要小于'a'+k,并输出。思路:这题刚开始完全没思路啊,随意写都一直tle,后来大佬提点说,字典树初始化太耗时间了,就用了一个变量解决了这个麻烦,并且s1的长度是小于m不是等于m,所以这里要注意。AC代码:#include<iostr...
2018-09-12 17:51:01 190
原创 CF #505 B Weakened Common Divisor
CF #505 B Weakened Common Divisor题意:问是否存在一个数,每组数据中都有数据可以整除它,并且这个数要大于1,如果存在多组数据随便输出一个,如果不存在,则输出-1。这题一看到题目就想质因数分解。。然后写着写着。。很麻烦啊,而且,代码写的很乱,后来大佬提点,可以把一组里的两个数据相乘,然后求所有组数据积的最大公因数GCD,再把GCD质因数分解出最小的质数, GC...
2018-08-23 19:09:18 176
原创 离散化 Paint the Wall ZOJ - 2747
题目题意:有一个w*h的墙,在墙上涂色n次,后面涂色会把前面同个位置的颜色覆盖掉,问n次涂色之后,墙面上有几个颜色,每种颜色分别有多少块。思路:因为 0 <= n <= 100,但是 0 <= w,h <= 10000;如果每次都每一个格子遍历过去,那么时间c差不多10000*10000*100肯定要超时了,但是我们发现n很小,所以我们可以用离散化。把x坐标y坐标离...
2018-08-23 19:07:19 135
原创 DFS 博弈 Number Cutting Game HDU - 2848
题目题意:给你一个数字n,每次把数字n分割成k份,轮到谁不能分了谁就输了,小A先手,如果小A赢了输出1,否则输出0。思路:用到了SG定理里的一个原理,如果你赢了,我肯定就输了,你输了我肯定就赢了,然后用DFS暴搜一下模拟分割,刚开始也不知道怎么写的。。乱七八糟,。。后来大佬帮忙改了一下代码,思路一下子就清晰起来。。AC代码:#include<iostream>#in...
2018-08-23 19:06:10 203
原创 并查集 String Reconstruction CodeForces - 828C
题目题意:给你n个字符串(1 <= n <= 1e5),给出m(1<= m <= 1e6)个这个子串(子串的长度len 0<= len <= 1e6)在所求串的起始位置k(1 <= k <= 1e6),最终输出字典序最小的所求串。思路:并查集存储如果在这个位置,其实应该从哪个位置开始,就是用并查集并起来,数组至少开到1e6*2+10,。。...
2018-08-23 19:04:51 252
原创 前缀和 Need for Speed Kattis - speed
题目题意:把一个n*m的矩阵分割成k*k的小正方型(如果矩阵不够大,自动向外补‘0’),我们可以把1->0,0->1。使小正方形里的元素要相同,问怎么最小次数的翻转能达到条件。思路:用前缀和数组记录前i,j,矩形内有多少个1,枚举所有k。AC代码:#include<iostream>#include<cstdio>#include<c...
2018-08-23 19:03:20 277
原创 多个树状数组 DNA Evolution CodeForces - 828E
题目题意:给你一个DNA串,有两种操作1 a e:把位置a的字符换成字符e2 a b e:问[ a, b ]的区间内eeeeee..(e循环串)与相同的的字符有几个,并输出。看题解,然后自己写,这题做了一下午,原因还是因为自己对于每个位置表示的东西不够熟悉,老是东错西错。。思路:用线段树来保存每个字母在每个区间处于每种循环串位置的数量,node[ 字母种类 ] [ e的长度 ...
2018-08-23 19:01:58 251
原创 HDU - 6156 Palindrome Function(数位DP)
题目题意:给你一个数据范围[L, R]问在这个数据范围内的x的f(x, k)之和为多少。f(x, k)如果x转换成k进制的时候是回文串,则f(x,k) = k,反之f(x, k) = 1。例如f(288, 17) ,288在17进制上是GG,为回文串,则f(288, 17) = 17;刚开始做的时候,思路特别混乱,变量加的太多,导致代码乱七八糟,后来思路真的太乱了,就去看了一下大佬的代码,...
2018-07-30 11:07:51 196
原创 POJ 2029 Get Many Persimmon Trees(二维树状数组入门)
题目题意:就是给你一个n*m的矩阵,然后在这个矩阵内添加t个点,最后问一个x*y的矩阵内,最多能框到几个点。思路:这题和手机那题很像,枚举一下每个位置的x*y的矩阵就可以了,其它就常规操作啦。应该可以算是二维树状数组入门题吧。AC代码:#include<iostream>#include<cstring>#include<cstdio>#...
2018-07-27 23:44:34 171
原创 POJ 3067 Japan(树状数组)
题目题意:就是东边有n个城市,西边有m个城市,有k条直线公路连接东西两边的城市,问这些公路有多少个交点。之前做了奶牛那题,做这题也算是有思路,瞎搞一下就好了,不过。。忘记初始化。。改了一个多小时也是够够的了。。。好像也可以用二维树状数组做。。反正我不会。。思路:先把公路按东边的城市从大到小排序,如果东边的城市相同则西边的城市也从大到小排序,这样就可以不用去重的那一步啦,然后就是常规树状...
2018-07-27 22:55:40 155
原创 POJ 2481 Cows(树状数组)
题目题意:有n只奶牛,有一条草地(一条!!可以看做一条线)然后每只牛有自己喜欢的吃的范围,牛i和牛j,他们最喜欢的范围是[ri,li]和[rj,lj]。如果ri <= rj且lj <= li且li-ri> lj-rj,我们说牛i比牛j强。其实就是你的区间被几个区间包围着并且不相等的时候,就有几只牛比你强壮,问每只牛都有几只牛比其强壮。诶呀呀呀,刚开始看错题目,样例都不知道...
2018-07-27 16:25:33 161
原创 POJ 1195 Mobile phones(二维树状数组)
题目题意:给你一个区间,面积为n*n,在这个区间里进行操作。首先输入0 n,所以区间里的点的范围为0<= x < n,0<= y < n,区间范围内每个点的初始手机都为0。分别有三种操作 1 x y z,在点(x,y)上加上z部手机。2 x1 y1 x2 y2 问区间x1<= x <=x2 , y1 <= y <= y2上一共有多少手机。3 ...
2018-07-27 10:27:59 165
原创 hdu 6301 Distinct Values(贪心)
题目题意:给你一个区间的长度n和m个限制条件的区间,m个区间中的数字不能重复,问此区间字典树最小的方法是什么。这题在多校的时候,本来以为能水过去,想想当时还是太天真了,这题没仔细考虑的话,以我原来的做法有好多bug,根本改不完,后来看了一下大佬的代码。。还是疯狂wa,。。看这题看了好久啊。。越来越没效率了。。。思路:首先我们要知道区间不重复出现数字,最简单的方法并且最好用的方法就是用s...
2018-07-26 19:01:37 196
原创 hdu 6299 Balanced Sequence(贪心)
题目题意:给你n个括号字符串,排序这些括号字符串,怎么排序能使其配对最多,并输出总共有几个括号可以参与配对(配对成功的个数*2)。 配对就是 ' ) ' 前面只要出现 ' ( ' 就可以配对,不一定要连续,不过一个括号不能重复使用哈多校赛的时候没看这题,其实不知道自己多校赛后面都干嘛去了。。一直在浪费时间啊。。。虽然不知道如果自己做能不能看懂这题怎么做,听完题解再做的。。...
2018-07-26 18:59:53 513
原创 hdu 1541 start(树状数组入门)
题目题意:给你n个点的坐标,问每个点的左下角有多少个点(不包括自己)。看题目看半天。。虽然知道是树状数组,但是。。。英语渣渣。。T^T。要多读题啊。。思路:数据不大,题目说了输入数据是按x从小到大,然后在按y从小到大,这就符合树状数组的的做法了(一直没看到这个,想了很久要怎么存数据,要不要排序之类的。。太菜了。。),然后每次输入x,y之后先查询其之前有多少个点,然后再加入这个点就可以了...
2018-07-26 18:57:03 130
原创 hdu 6318 Swaps and Inversions(树状数组+离散化)
题目链接题意:有一个长度为n的乱序集合,如果一个子序列为逆序,你就要付x元,或者你可以选择修改一个相邻的数字,你就要付y元,问最少你要付多少钱。(其实你交换一个存在逆序的相邻数字就可以减少一个逆序数)这题不知道是题目的意思太绕还是怎样,我看了很久硬是每看懂题目在讲什么,后来看了一下大佬们的代码和解释才知道,这不就是树状数组的入门题吗。。我。。。英语和语文阅读能力大概是没救了。。。思路:...
2018-07-26 11:59:08 190
原创 hdu 6315 Naive Operations(线段树)
题目链接题意:n个数,先给你一个集合b的值,集合a里的元素初始都为0。给你m个操作,add x y:表示a集合里x~y的值都加上1,query x y:表示计算ai/bi(i = x,x+1...y)的和,并输出。这题多校赛的时候有一点想法,但是感觉很难实现,本来想的是能不能判断这段区间的最小值b是多少,如果总和的值大于最小值b则向下更新,但是感觉不好实现,看了大佬的题解,才知道他们是反过...
2018-07-26 11:31:52 202
原创 CodeForces - 982E (扩展欧几里得算法、数论)
题目链接题意:给你一个n*m的矩阵,从矩阵中的一点(x,y)以(vx,vy)的方向出发,碰到矩阵壁反弹, 若能从矩阵的四个角出去,则输出出去点的坐标,若不能则输出-1。这题刚开始想用模拟,看其是否能出去,结果超时了啊T^T,超时就很难受了,然后去看了一下大佬的代码,。。是真的长。。本来想放弃的,然后想着都已经开始了,还是看看把,真的佩服这些大佬啊,。。对扩展欧几里得不够熟练也是出现了很多问...
2018-07-26 10:54:27 460
原创 POJ2886 (线段树)
题目链接题意:有n个小朋友顺时针围着坐了一圈,每个人手里都有一个数字。游戏从第k个小朋友开始,首先,第k个小朋友退出游戏,如果退出游戏的小朋友手上的数字是正整数A,则从他的左手边的第A个小朋友退出游戏,如果退出游戏的小朋友手上的数字是负整数-A,则从他的右手边的第A个小朋友退出游戏(注意,因为顺时针,左手边就是往后,右手边就是往前)。第i个退出的小朋友可以获得a(i的约数的个数)的糖果,问最多...
2018-07-24 23:35:42 322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人