03 2018 档案
摘要:https://www.patest.cn/contests/gplt/L2-007 题解:一开始是想直接并查集,一个家就是一个集合,对每个集合维护一个人数num1一个房产数num2 一个房产面积area 以及一个最小编号。 后来想了一下,直接建树,然后对每棵树搜一遍算了,给的信息太多了。。。但是
阅读全文
摘要:题解:将问题转化成连通分量。每次失去一座城市,切断其所有的边,算一次现在的连通分量。若增量大于1,则发出警报。 至于如何算连通分量,直接用tarjan模板 坑://我昨天晚上半夜敲的模板,把一个算所有环中最短环的tarjan模板 直接贴上去了,一直不过,还XJB改了会儿233(现在90行的代码逛逛B
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-020 题解:给你一颗树,让你遍历一遍,顺便更新一下数据,每次到根节点时将其对应的数据加到ans上面。这里用的bfs。 坑:1.卡精度:float会wa ,要用double 2.卡特殊情况:只有根节点 3.//类型转换表达
阅读全文
摘要:http://uoj.ac/problem/146 题解:强连通分量 tarjan模板题。同时试了一下codeblock
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-018 题意:模拟多项式除法。 题解:短除法,初中奥数老师,高中数学老师,高数老师都讲过2333。 模拟之前,关于保存 多项式的方法。考虑到系数可能很分散(1~1e9),直接用map存(map基本就是为多项式加减法定制的)
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-017 题解:贪心,一点小数学 坑:XJB改下标改错了
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-008 题解:想法是扫一遍string,将每一个s[i]作为对称轴,写一个判定函数:不断向两边延伸直到不是回文串为止。 然后发现没有考虑形如werrew的回文串,所以改了一下,注意两个判定函数的循环方式
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-024 题解:部落是并查集模板题。 社交集群用并查集暴力有23分 坑:写了半天,发现自己并查集没怎么学明白,现在才搞懂; find :return f[x]=find(f[x]); 询问:if(find(x)==find(
阅读全文
摘要:1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图XJB暴力的题目 1. 2图着色:
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-005 题解:直接set的count函数 坑 :要用容斥原理算两个集合的并,否则超时。(我还以为要打表呢) #include <iostream>#include <cstdio>#include <algorithm>#
阅读全文
摘要:题解:直接list模拟,头尾两个指针,分别将头尾元素push到另一个list里面,输处输入方式同上一篇 坑:第一发卡了第二个样例,第二发卡了第4个,莫名其妙,所以把两个代码合起来,然后强行ac了。
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-002 模拟一个链表的去重操作 题解:别模拟了,直接用内置的list和map。关于输出的地址,直接用pair存地址和值,输出时按地址 值 下一个元素的地址 输出。 坑:之前头铁,模拟了半天,各种错误。 然后直接用list
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-003 题解:按平均值贪心。 坑:有一个样例卡住了,是因为
阅读全文
摘要:https://www.patest.cn/contests/gplt/L2-001 题解:求最短路的条数,并输出点的权值最大的路径,用priority_queue会wa两个点,原因不明。 于是又学了另外一种dijkstra 坑:L3的天梯地图是同一个模板的题目,结果代码交上去有一个点过不了。。。。
阅读全文
摘要:重载与构造 读入一行
阅读全文
摘要:题意:有个R*C的格网。上面有若干个点,这些点可以连成一些直线,满足:这些点在直线上均匀排布(也就是间隔相等),直线的两段穿过网格(也就是第一个,最后一个在网格的边界附近) 求某条直线上最多的点数 题解:先排序,再任取两个水稻,算出之间的dx,dy,然后就能推出前后的水稻坐标,用如果满足路径上一直有
阅读全文
摘要:用struct手写了个list 有push_back,push_front,insert,erase reserve,size,setpos,rbegin 功能。 坑:一开始想用template<class T>结果总是编译错误(漏写了<T>) 改成int后总是地址错误,(因为没有new地址) 然后
阅读全文
摘要:题意:有1~N,n(1e5)个嫌疑人,有m个人说真话,每个人的陈述都形如X是凶手,或X不是凶手。现在给出n,m及n个陈述(以+x/-X表示)要求输出每个人说的话是true ,false or notdefine. 题解:模拟,依次假设每个人是犯人,统计说真话的有几个,如果 ==m 就符合。 现在考虑
阅读全文
摘要:题意:给你一个01串,问其是否能拆成若干形如0101010的子串,若能,输出所有子串的0,1 的位置。 题解:一开是暴力,然后瞎找规律, 最后找到一种神奇的线性构造法:扫一遍字符串,若为0就一直竖着往下写0,碰到1就回头往上写,再碰到0 就回头往下写······判断无法构造的依据:如果写1写得超过了
阅读全文
摘要:UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动。火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间。 题解:先考虑模拟火,肯定是bfs(每次把同一时间着火的格子pop出来,再将它们周围的格子的t加一push进去)
阅读全文
摘要:题意:给你n*n gcd表中的所有数(以任意顺序) ,求对角线上的n个数分别是什么。gcd表定义如下,先将n个数填在对角线的上,然后将各个格子填上对应对角线上的数的gcd值,也就是V[i][j]=gcd(V[i][i],V[j][j]) 题解:观察发现有很多重复的数,而且最大的那个数必然是对角线上的
阅读全文
摘要:http://codeforces.com/problemset/problem/586/D 题意:有一个3*n(n<100)的隧道。一个人在最左边,要走到最右边,每次他先向右移动一格,再上下移动一格。隧道里有车,每次人移动以后,车会向右移动两格,人与车轮流运动。 题解,将每次车的移动变成人往右移动
阅读全文
摘要:题意:给你n个数(n<=100,ai<=300) 一个T,求n重复T次的最长非递减子序列。 题解:我直接考虑4 3 2 1 的例子,当其重复4次时会出现1 2 3 4 的子序列 ,此时再怎么重复,这也是最长的递增序列,无非是多出(T-n)个1. 所以直接不完全(不会证明地)归纳处一个答案:ans=T
阅读全文
摘要:http://codeforces.com/problemset/problem/586/C 题意:1~n个孩子排成一排看病。有这么一个模型:孩子听到前面的哭声自信心就会减弱:第i个孩子看病时会发出v[i]的叫声,他后面的那个人的自信心(不是p[i+1])会减少v[i],再后面一个会减少v[i]-1
阅读全文
摘要:题意:给你两个串,S2是S1 的一个子串(可以不连续).给你一个s1字符下标的一个排列,按照这个数列删数,问你最多删到第几个时S2仍是S1 的一个子串。 题解:二分删掉的数。判定函数很好写和单调性也可以维持。 不知道为啥答案要-1.。貌似l最终指向删掉以后不再保持性质的第一个数。
阅读全文
摘要:题意:n个数1~n(n<=1e18)依次放在一个数组中,第i个数位置为2i-1,其它地方是空的。现在重复以下操作:将最右边的数放到离其左边最近的空的位置,直到所有数移到前一半的位置中。有q<=200000个询问,问你第i个数最终再哪个位置。 题解:这题被某人秒了,所以估计核心代码量不超过2行,于是X
阅读全文
摘要:题意:给你n行长度为m的01串(n<15,m<100) 。每次只能走一步,要将所有的1变为零,问最少的步数,注意从左下角开始,每次要将一层清完才能走到上一层,每次只有在第一列或者最后一列才能往上走一层,否则只能左右移动。 题解:由于清完当前层才能继续上一层,所以必然存在一个递推关系。先递推预处理,然
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3 题意(难以描述):A,B两个人从1~100选数乘起来比谁的大(不能选重复的或者对方选的)。数小的人如果发现数大的人在撒谎,则他可以获胜。(当然都没撒谎大数赢,都撒谎了也是大数赢2
阅读全文
摘要:题意,10*10的地图,有若干块草地“#”,草地可以点燃,并在一秒后点燃相邻的草地。有墙壁‘·‘阻挡。初始可以从任意两点点火。问烧完最短的时间。若烧不完输出-1. 题解:由于100的数据量,直接暴力。枚举两个起点,推入队列,然后bfs。烧完就返回深度,更新一个min值。 坑:(帮同学照bug) ac
阅读全文
摘要:题意:n个人排队上台,每个人有一屌丝值D,他的不满意值=D*(k-1)(k为他前面的总人数)。 求整个队列不满意值之和的最小值。你只有一个操作,就是把队首的人塞进小黑屋,也就是压入栈中,后面的人就被提前了。 题解:首先考虑压入栈的性质:对于第1个人,他可以任意第几位上台。若他是第k个上台,则2~k必
阅读全文
摘要:题意:1~N个龙珠,放在1~N个城市,有两种操作:T A B 将A所再城市的所有球转移到B所在的城市。 Q X 询问X所在的城市pls,该城市中龙珠数量nm,以及龙珠转移次数trs 题解:并查集模板题,顺带更新一些数据。pls不必更新,因为X所在的集和的根即为城市编号。nm只需在union时将A集
阅读全文
摘要:https://vjudge.net/problem/HDU-5818 题意:给你两个栈AB,有常规push,pop操作,以及一个merge操作,merge A B 即将A、B的元素按照入栈顺序全部出栈并推入栈A(merge B A 即反) 题解:用一个C来辅助,每一次merge将AB中的数据依次压
阅读全文
摘要:题意:给你一个有向图,满足去掉方向是完全图,将其拆成PQ两个图(没有公共边),问你两图是否分别满足对于任意3个点a,b,c 若有一条边从a到b且有一条边从b到c ,则同样有一条边从a到c。 题解:观察,发现题目等价于对PQ分别bfs。如果某点的深度大于等于2就判错。用vis储存深度,注意对vis数组
阅读全文
摘要:题意:给你2e5个矮人,编号1~N。有2e5个操作:操作1 读取x,y,交换编号为x,y的矮人。操作2 读取AB 判断编号为A,A+1····B的矮人是否连续(不必有序)。 题解:首先用pos[i]保存矮人i的位置,交换就用swap(pos[l],pos[r])来模拟。然后发现条件等价于(pos[l
阅读全文
摘要:http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板,
阅读全文
摘要://题意:给你n个数(可能有重复),问你最多可以取出多少个数使得任意两个数之和为质数。//题解:以为是个C(2,n)复杂度,结果手摸几组,发现从奇偶性考虑,只有两种情况:有1,可以取出所有的1,并可以再取一个偶数(如果这个偶数+1是质数)。没有1,如果取了一个奇质数,那只能再拿一个2(如果有2的话)
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5651 题意:生成回文串。输出所有回文串的可能数。 题解:mod除法会损失高位,用逆元来代替除法,模板如下 ac代码:
阅读全文
摘要:题意:给你两个数列a,b,你要输出k个下标,使得这些下标对应的a的和大于整个a数列的和的1/2.同时这些下标对应的b //题解:首先将条件换一种说法,就是要取floor(n/2)+1个数使得这些数大于剩下的数。然后想到两种取法,一种是排好序选前半段。令一种取法是两个两个分组,每组取大的那个。//然后
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5965 (合肥)区域赛签到题。。。orz 题意:3*n的地图上扫雷(规则就是正常扫雷),中间一排全部没有雷,且全部被点掉并显示出数字,问一共有多少种雷的排列情况。 题解:先注意到每列只有两格能放雷,如此一来0,2颗
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5969 (合肥)区域赛签到题。。。orz 题意:给你l,r,求x|y的max,x,y满足l<=x<=y<=r. 题解:初始想法是找到形如(111,1000)、(11111,100000)····这样的进位点,一
阅读全文
摘要:http://codeforces.com/problemset/problem/55/C 题意:一个博弈。 题解:瞎猜,目前不清楚原理
阅读全文
摘要:http://codeforces.com/gym/101149/problem/K 题意:题目贼长,但其实是个脑筋急转弯。。。 题解:题目要求某图形面积。该图形只有一个自由度,就是起点与终点距离x。样例给出了x==1时的解S0,所以ans=x*x*S0 ac 代码:
阅读全文
摘要:http://codeforces.com/problemset/problem/669/D 题意:n个数1~N围成一个圈。q个操作包括操作1:输入x, 所有数右移x。操作2:1,2位置上的数(swap(a[1], a[2])交换;3,4交换。。。。 题解:观察,发现所有奇数行为都是一样的,偶数同理
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5806 题意:给你一个n元素序列,求第k大的数大于等于m的子序列的个数。 题解:题目要求很奇怪,很多头绪但写不出,选择跳过的题,简称想法题。 首先考虑区间的更新方法:区间左端l不动,右端r滑动, 滑到有k个数>=
阅读全文
摘要:http://poj.org/problem?id=2251 题意:给你一个三维的地图,找一条最短路 题解:因为是最短路,所以宽搜。三维就用六个单位向量。 坑: 第一次打bfs各种打错: 首先是字符数组处理: 一行一行读可以用cin,但这样就不能map[i][j]+1读入。(for i=1 or i
阅读全文
摘要:http://codeforces.com/gym/101028/problem/I 题意:给你n个洞,k个布条,问布条能贴到所有洞时的最小值。 题解:二分答案,因为答案越大就越容易满足条件。 技巧:两种judge写法:常规与upper_bound,嗯,就是有种可以upper_bound的感觉。 坑
阅读全文
摘要:https://vjudge.net/problem/Gym-101020H 题意:正常读取方式给你一个图(双向的),然后给你f个点,让你找一条路从1到n的最短路,要求经过f个点(以任意顺序)。 题解:一开始还想dijkstra+dp,发现根本下不了手。后来看了题解,发现只要floyd+next_p
阅读全文
摘要:题意:http://acm.uestc.edu.cn/#/problem/show/1324 中文题,自己看喽。 题解:分块模板,update时顺便更新块属性。ask时先判掉belong[l]==belong[r]。build函数时直接用模板喽。 坑:打错了个字母,改了一下还改错了。还写错个括号。
阅读全文
摘要:https://vjudge.net/problem/CodeForces-617E 题意,给你n个数ax,m个询问Ly,Ry, 问LR内有几对i,j,使得ai^...^ aj =k. 题解:第一道莫队题。 技巧:前缀亦或。flag数组:利用XOR的性质。 莫队的区间排序及处理。 id的处理:因为排
阅读全文
摘要:题意: 给n个点m条边及每条边所花费的时间,经过给定的p个点时会停留k秒,要求在t秒内从1号点走到n号点,若可以走到输出最短时间,若不行输出-1.。 题解:读取边时,将每个点停留的时间加到以其为终点的边的花费上。比如边1 2 10,且2是给定的停留点(设停留5s),则读入这条边时按 1 2 15 读
阅读全文
摘要:https://vjudge.net/problem/HDU-2680 题意:以起始点 终点 长度 给出一个图,已知可以从w个起点出发,求从任一起点到同一个终点s的最短路径。注意是单向边。m<1e5,w<n<1000. 题解:若每个起点都dijkstra一遍时间复杂度为O((E+VlogV)*V),
阅读全文
摘要:题意:输入x,y,t.以及一个x行y列的地图,起点‘S’终点‘D’地板‘.’墙壁‘X’;判断能否从S正好走t步到D。 题解:dfs,奇偶性减枝,剩余步数剪枝。 ps:帮室友Debug的题:打错了两个字母。题目看错。没有初始化map。orz ...不过我dfs也不熟,更别说剪枝了。
阅读全文
摘要:http://codeforces.com/problemset/problem/847/B 题意:给你n个数(n<2e5)把它们分成若干组升序的子序列,一行输出一组。分的方法相当于不断找最长递增子序列,将它们删除,然后继续找,直到删光整个初始数列。 题解:第一直觉是开一个vector<int> n
阅读全文
摘要:https://vjudge.net/problem/CodeForces-768C 题意:n个数,k次操作,x。每次操作先排序,再让奇数位置上的数据a[i]:=a[i] XOR x; k<1e5,x<1e5,a[i]<1e3. 题解:由于每个数据为1~1000,且每次操作先排序,所以可以用桶排序维
阅读全文
摘要:题意:两种操作:A ,R 分别有三个参数,表示放或者移走(x,y)处半径为r的盘子。5000次操作,每次操作判断是否可行。 题解:两种情况不行:1.相交2.放到桌子外面。5000的数据直接模拟,删除操作用e[i]=0代替 //之前一直wa 原因不明,大概是写得太复杂。。。 /*吐槽一下vs莫名奇妙的
阅读全文
摘要:题意:给你一个1e4长的字符串S,有1e5个询问,每个询问形如 l r c ,其中l,r为左右边界,c为所询问的字符。注意,l,r,可以大于串S的长度,这种情况下认为S自身重复无数次(S+S+S···)。l,r范围1e9。 题解:预处理前缀和(多处理一下),先打表dp[256][10005],dp[
阅读全文
摘要:交互题介绍:https://loj.ac/problem/6 题意:输出Q X ,读入><= 来猜数,小于50步猜出就算过样例 题解:根本不需要每次输出要打cout.flush()。。。 ac: //看到一个Bangladesh University of Business & Technology
阅读全文
摘要:题意:约瑟夫问题,从两头双向删人。N个人逆时针1~N,从1开始逆时针每数k个人出列,同时从n开始顺时针每数m个人出列.若数到同一个人,则只有一个人出列。输出每次出列的人,用逗号可开每次的数据。 题解:模拟。 技巧:将顺时针逆时针的模拟合并为同一个函数。
阅读全文
摘要:题目链接:https://vjudge.net/problem/UVA-489 题意:给出两行字符串,第一行是标准答案,第二行是玩家猜的串。玩家每次猜一个,猜对一个,标准答案中所有该字符都算被猜到。猜错的次数不能到达七次。多次因同一个字符猜错算猜错一次(这个条件没有用)。 猜对, 没猜对且错了七次,
阅读全文