自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ProLights的博客

Someday, you can program the lights.

  • 博客(400)
  • 收藏
  • 关注

原创 2022年7月26日随笔,在互联网寒冬的变化

2022年以来好多老同事都相继在内网消失了,不愧是互联网寒冬!

2022-07-26 15:22:01 820

原创 奔波真是辛苦啊,然而生命终将逝去,只希望当一切都结束的时候,能够没有遗憾吧。

说来周一就打算写篇心灵随笔,奈何又到了周日(就当做还是周日吧)。 也许是突然有所感触,也许顿悟,也许只是无病呻吟。 说来自从大三下从uestc-acm集训队退役之后,除了少数时间段充满热情外,大部分时间里都非常咸鱼。 从退役到实习,从实习到正式工作即将满一年,虽然对于工作也是非常的投入,对于自己的技术和业务成长也有一些提升,也累积了很多的经验,解决了很多的问题,也有很多问题没能解决。 但总觉得自己越来越无欲无求了,越来越咸鱼了。往好了说是变淡定了,不在咄咄逼人...

2020-06-01 01:40:17 924 3

原创 对于短期有望暴涨的标的股票,短期牛市对角价差策略

一、前提:1、首先对于大股票像baba gg Amazon 等,看纯粹的溢价百分比意义不大,也需要关注绝对值。2、费用:美式期权。平台使用费15. 交易费 每张3, 佣金 0.3%左右3、由于短期,故忽略利息和股息的影响。二、策略:买入短期实值call。卖出中期虚值call由于中期虚值的时间价值要比短期实值的时间价值高的多,从而产生了更多的下行保护。...

2020-05-07 12:33:49 1191 1

原创 2019 全新出发,回顾在腾讯实习的八个月

    已经过去的2018年对于我来说是非常重要的一年,这一年我实现了从学校走向工作岗位的跨越,实现了从学习理论知识到实际应用的跨越,感谢我的导师shenquan,感谢carbon和华明,谢谢三位大大带我飞。    2018年三月,一个很偶尔的机会,腾讯这边邀请我们uestc拿过acm金奖的几个同学来深圳腾讯总部参观,报销来去机票,免费住五星级酒店。当时是大三下学期,还在准备保研,同时考虑要不...

2019-02-12 15:39:53 2030 2

原创 退役了,永远的ACMer,永远的ProLights

三年从一个什么都不懂的小司机成为了金牌在手的大司机,现在退役又变成了退役司机了。加入uestc-acm集训队大家庭,这三年来学了很多,感谢uestc-acm,感谢我的历届队友cx大爷、钟司机、nardo 、CS_LYJ1997、LinPC、SummerW 、谕大爷、谭爷。虽然退役了,但我们永远都是电子科大acm集训队队员。但是经过 腾讯的2轮技术面试+1轮HR面+1轮T4专家面 成功的拿到了腾讯提前批的实习offer,我觉得我的team leader carbonzhang很不错很强大,他给我面试的时候,

2018-03-25 12:45:19 1231

原创 Gym - 101466 J. Jeronimo's List 桶排序

题意:一共n个数字(3<=n<=3e7, 0<=ai<3e7 ),给出前面的m个(3<=m<=min(100, n)),a[i] = (a[i-m] + a[i-m+1]) % MOD,q个询问(1<=q<=1e4),询问a[1,n]里的从小到大第bi大。桶排序先按照要求用a[1,m]构造出a[1,n],然后这里n == 3e7,所以如果采用快速的比较排序算法如归并排序快速排序的时间复杂度是O(nlogn)会超时,因此我们想到可以使用线性排序方法桶排序(或者说计数排序),建一个数组cnt[3e7+8]

2018-02-13 20:28:11 653

原创 AtCoder Petrozavodsk Contest 001 D - Forest 连通块+并查集+贪心

题意:给出一个由n个点m条边构成的森林,每个点有个权值val[i],额外加一条边(u,v)的花费是val[u] + val[v],且u、v只能被用到一次,添加一些边使得图连通,求最小花费。连通块+并查集+贪心可以先用并查集跑出连通块的个数为x,则需要添加的边的数量为x-1条,需要使用的点的个数为2*(x-1),所以只要n>=2*(x-1)则必定有解。所以我们只要贪心的选出这2*(x-1)个点即可,故先在每个连通块选择一个权值最小的点,这样可以保证每个连通块都会有点和其它的连通块相连,然后剩余的2*(x-

2018-02-05 21:52:00 759 2

原创 AtCoder Petrozavodsk Contest 001 C - Vacant Seat 交互题、带分类讨论的二分

题意:交互题,有一个周长为n的环形(3<=n<=99999),每一格是一个座位,每个位置要么坐着一个男人M要么女人F要么空的V,但安排座位M和M不能并列且F和F不能并列,所以n个座位中至少一个座位是空着的,通过交换的方式在20步之内找出一个空着的座位的坐标。交互题、带分类讨论的二分先输出l = 0 和 r = n-1,分别记录 a[l] 和 a[r]的是M或者F或者V。然后二分mid,然后r和mid之间有(r - mid - 1)个位置,如果有奇数个位置,则当a[r] == a[mid]时,则在(

2018-02-05 20:50:01 847

原创 AtCoder Regular Contest 089 D - Checker 思维题、点的转移、二维前缀和

题意:用k*k的黑白正方形交替填充二维坐标平面如上图,现给出n个方案(x, y, color表示坐标(x,y)的颜色为color),问最多有多少方案能够同时满足。思维题、点的转移、二维前缀和首先要想到把所有的点转移到平面{(0,0)~(k-1,k-1)}内。1、按照45度向量移动不会改变颜色,modx = x / k, mody = y / k; x -= min(modx, mody) * k; y -= min(modx, mody) * k;2、跳动2*k格也不会改变颜色,所以接下来if

2018-02-01 18:58:41 566

原创 Codecraft-18 and Codeforces Round #458 (combined) D. Bash and a Tough Math Puzzle 线段树+二分+卡时间+优化

题意:给出一个长度为n的序列,q个操作,每次询问区间[a,b]内最多改一个数,能不能变成gcd(a~b)== x;或者把第i个数改成y。线段树单点修改区间查询+二分+卡时间+优化用线段树单点修改区间查询来维护一段区间的gcd,然后对于修改操作可以直接修改,而对于询问操作则要二分出一个最大的区间[a,mid]满足gcd(gcd(a~mid),x) == x,此时如果mid == b 或者 mid == b-1或者 gcd(gcd(mid+2~b),x) == x 则 Yes,否则No。当mid不存

2018-02-01 12:57:12 509

原创 Codeforces Round #460 (Div. 2) D. Substring BFS、拓扑排序、dp

题意:给出一个可能有环可能不连通的图,找出一个路径其上出现最多的字母出现的次数最大,求这个最大值。BFS、拓扑排序、dp这题与以前一个求最长路径的题差不多,这里定义状态dp[i][j]表示从某点开始跑到节点i时路径上出现字母j+'a'的最大次数。只需要按照拓扑序跑一遍dp即可,ch[v] != j, dp[v][j] = max(dp[v][j], dp[u][j]);ch[v] != j, dp[v][j] = max(dp[v][j], dp[u][j] + 1);最后如果度数不为0的点则有

2018-02-01 12:09:48 448

原创 Codeforces Good Bye 2017 C. New Year and Curling 几何、枚举

题意:有n个半径为r的圆盘,从第1个到第n个圆盘,依次从y = 10^100的位置向y = 0直线运动,当到达y = 0时,或者碰到之前停止运动的圆盘则停止。这里相切也作为碰到。求每个圆盘最终所在位置的圆心坐标。几何、枚举对于考虑圆i时,扫一遍j = 1~i-1所以圆心所在的位置,dabs = abs(x[i] - x[j]);如果它们的差dabs > 2*r 则它们不可能碰撞。否则ans[i] = max(ans[i], sqrt(4*r*r - dabs*dabs) + ans[j]);//ans

2018-01-14 19:11:38 488

原创 Codeforces Good Bye 2017 B. New Year and Buggy Bot 枚举全排列、模拟

题意:给出一张地图,有一个出口和入口,以及一些障碍和通道。然后给出一个操作序列0123,分别表示上下左右,求有多少种对应的可能可以使得按照该指令序列从入口走到出口。0->下,1->左,2->上,3->右为一种可能,以此类推。枚举全排列、模拟我们规定长度为4的序列op,op0表示上,op1表示下,op2表示左,op3表示右。所以只要枚举0123的全排列即可得到所以的对应可能,然后用每一个排列去模拟的跑一遍地图即可判断该情况是否可行。/*//枚举全排列代码

2018-01-14 16:08:33 494

原创 Codeforces Round #444 (Div. 2) C. Solution for Cube 枚举、模拟、魔方

题意:给出一个2*2*2的魔方的一个状态,问能不能转一下使得魔方满足每个面只有同一种颜色(1<= ai <= 6)。枚举、模拟、魔方根据题意只有2个面已经是同一种颜色,另外4个面每个面2种颜色,才可能可行可能可行。每个面按以下方式编号, 14 2 5 6 3则根据相同的面是1与3或者2与6或者4与5进行讨论。然后对于每种情况讨论转的方向(顺时针或者逆时针),耐心的慢慢写,慢慢模拟就行。详情请见代码。

2018-01-14 12:35:33 488

原创 Codeforces Round #444 (Div. 2) B. Cubes for Masha 暴力、枚举

题意:有n(1<= n <= 3)个骰子(每面标着数字0~9),要求找出最大的数x,满足1~x之间所有的数都可以用这最多n个骰子的正面表示出来。不能旋转,即不能用9表示6,反正亦然,且不要求所有的骰子都用上)。暴力、枚举首先用一个标记数组f,先全标记为false,之后把出现过的数都标记为true。当n == 1的时候,只有枚举每一面,并标记即可。当n == 2的时候,要枚举只用到1个骰子的情况和要用到2个骰子的情况,同时手动枚举全排列。当n == 3的时候,要枚举只用到1个或者2个骰子的情况和要用

2018-01-14 10:51:09 514

原创 Codeforces Round #456 (Div. 2) B. New Year's Eve 贪心、构造、位运算、异或和

题意:给出1~n这n个数,最多选k个数,要求,选出的数的异或和最大,求这个异或和。贪心、构造、位运算、异或和首先对于n的二进制有b位,n ^ ((1<<b) - 1)的值必定小于n。所以如果k为1,则只能选ans = n;否则选n和n ^ ((1<<b) - 1)这2个数,当n和 ((1<<b) - 1)相等时依然选n,即 ans = (1<<b) - 1。

2018-01-13 17:56:13 566

原创 Codeforces Hello 2018 D. Too Easy Problems 二分+贪心

题意:有m个题目,每个题目有个需要花费的时间ti,以及ai,表示只要最终过题数不超过ai这个题才count。求最大的过题数以及过了哪些题,多种答案则输出任一答案。二分+贪心首先把题目按照ti的为优先级排序,时间少的在前面。然后二分答案,mid表示最终的过题数,check的时候,维护剩余的时间tmp,用cnt表示已选的题目数量,对于题目从左向右扫,每次如果该题的ai<= mid 则 tmp -= ti,当tmp >= 0是cnt++,然后tmp <= 0时break。之后cnt >= mid则返回真

2018-01-13 17:45:08 561

原创 Codeforces Hello 2018 C. Party Lemonade 贪心、优先队列

题意:有n种饮料,每种的一份 2^(i-1)升花费ci 卢布,要求总共买L升,花最少的钱,求出最小的花费。贪心、优先队列、乱搞首先把饮料的单价(ci / 2^(i-1))和标号(i)丢如小根堆,然后维护ans = 0 为已购买的饮料的最小花费, resL = L 表示剩余需要购买的饮料, precost = 9e18表示剩下的直接买一份(买的那份可能比resL多)时的最小花费。每次取出堆顶,此时的饮料是最廉价的,如果每份的容量大于剩余的,则刷新precost,此时如果 ans被刷新过,则 prec

2018-01-13 17:13:14 719

原创 XVII Open Cup named after E.V. Pankratiev. Eastern Grand Prix. Problem G. Gmoogle 模拟、字符串处理、文本搜索

题意:要求模拟一个搜索系统,给出文本,然后每次查询几个单词要求输出所以出现查询单词的句子。模拟、字符串处理、文本搜索先把文本预处理成一个一个单独的句子,并标号0、1、2......,并且用map<string, vector<int>>建立单词到句子的映射。然后对于每个单独查询的每个单词都会有一个集合,然后对这些集合取一个交集就是答案了。这里用到的求交集的方法是 是用一个map<int, int> check表示这些集合里每个句子出现的次数,最后遍历一遍check,出现次数为查询的单词的个数的句子

2017-12-08 14:25:01 834

原创 XVII Open Cup named after E.V. Pankratiev. Eastern Grand Prix. Problem F. Buddy Numbers 贪心、数论、构造

题意:给出一个n,问能不能把1~n这n个数排出一个序列,使得任意相邻的两个数,一个数是另一个数的因数。贪心、数论、构造1 12 2 13 3 1 24 3 1 2 4然后5的时候,也就是当1~n里素数的个数大于2的时候就不好办了,此外这里n == 6的时候还是可以构造出来了, 3 6 2 4 1 5.所以对于n == 1、2、3、4、6的时候是有答案的,直接输出即可,其它的时候都构造不出来,为-1。

2017-12-08 14:02:36 1022

原创 Codeforces Round #447 (Div. 2) D. Ralph And His Tour in Binary Country 二叉树、预处理、二分、数据结构

题意:给出一颗二叉树,每条边有一个权值,q个询问,每次询问以x为起点,到yi点,求max(H - xyi, 0)求和。二叉树、预处理、二分、数据结构先在每个节点维护 该点 到 以其为根的点 的距离,且排序(笔者用的c++的sort所以比归并排序多出一个logn),并维护n个前缀和。这里时间复杂度 O(nlognlogn) 空间复杂度 O(nlogn)。然后查询的时候,对于x点进行二分可以找出答案,然后向上回溯,且维护一个变量sumlx为其祖先节点到x的距离。查找该节点所在的链的隔壁的子树,进行二分

2017-12-08 13:34:43 559

原创 Codeforces Round #449 (Div. 2) Codeforces Round #449 (Div. 2) 二叉树、回溯、分类讨论

题意:用一个前缀s1,中间部分s2,后缀s3,fi = s1 + fi-1 + s2 + fi-1 + s3来构造字符串 fi,q个询问(n, k),每次询问第n个字符串的第k个字符。二叉树、回溯、分类讨论这样构造出的字符串相当于一颗二叉树,从叶子开始回溯,回溯的时候根据k的情况,判断是从左子树向根回溯,还是从右子树向根回溯。有点想主席树的一些操作,先预处理出fi的长度,然后每次对于k和当前fi的情况,回溯到i-1,回溯的时候 如果是左边 k -= 34(前缀),如果是右边 k -= 34(前缀)

2017-12-03 15:34:45 452

原创 第42届ACM国际大学生程序设计竞赛 亚洲区域赛 西安站 总结

今年暑假集训结束的时候我们队在UESTC-ACM Div.1里排名第6,所以获得一场ICPC和一场CCPC的现场赛资格。由于上半年5月打过西安的邀请赛并取得了一块银牌,笔者那次毕竟是第一次打区域赛级别的现场赛并且拿到银牌还是很欣慰的,所以对西安站挺有好感的,于是打区域赛的时候还是选择了西安站。------启程 2017-10-27本来是16:10的火车,但是稍微在路上耽搁了

2017-10-31 19:57:05 5160 2

原创 HDU - 6191 Query on A Tree 可持久化字典树+dfs序

题意:给出一颗树,每个节点有一个权值,q个询问,询问以点u为根的子树中的节点权值异或x所得的值的最大值。可持久化字典树+dfs序对子树进行询问很容易想到dfs序,然后变成了线性的询问区间[l,r]内异或x所得的最大值,这个是可以用可持久化字典树来做,类似于主席树,每颗字典树维护的是区间[1,i]的信息,询问的时候,如果sum[r]-sum[l-1]大于0则说明在这个区间内这个值是存在的,然后按照通常的0-1树的做法,每次尽可能访问x&(1<<i)的异或值即可是答案尽可能大。空间复杂度 O(nlogn)

2017-10-26 12:43:07 990

原创 SPOJ - COT Count on a tree 树上主席树+LCA+任意路径问题

题意:给出一个树和树上每个点的权值,给出m个询问(u,v,k),询问在树上从点u到点v所构成的路径上权值第k小的点的权值。树上主席树+LCA+任意路径问题主席树维护的一个前缀和,而前缀和不一定要出现在一个线性表上(或者说树型可以线性话),即对于每个从根到点u的路径是一个线性序列,可以把这个序列建成主席树。利用这个前缀和,我们可以解决一些树上任意路径的问题,比如在线询问[u,v]点对的距离——dist[u]+dist[v]-2*dist[LCA(u,v)]。类似的,我们可以利用主席树来解决树上任意路径

2017-10-17 15:18:27 766

原创 HDU - 6203 ping ping ping LCA倍增算法+dfs序+线段树

题意:给出一颗以0为根有n+1个节点的树,给出p个条件,每个条件表示u,v之间有一个坏的节点,根据这p个条件求出树上至少有多少坏点。LCA+dfs序+线段树先跑出dfs序,并对LCA进行预处理。然后把每组条件按照u,v的LCA为第一优先级丢到优先队列里,且对于dfs序有个性质,如果P是U的祖先,则 p1[P] <= p1[U] <= p2[U] <= p2[P],故每次对于每个LCA(u,v),u,v :先判断 u,v是否存在被标记的祖先,如果都没有说明需要新标记一个点为坏点,即把LCA(u,v

2017-10-16 15:37:44 855

原创 Codeforces 620E New Year Tree dfs序+线段树+状态压缩

题意:给定一棵树,每个节点都有颜色,然后询问子树上有多少种不同的颜色。dfs序+线段树+状态压缩由于只有60种颜色(2^60 < 2^63),所以可以直接用二进制压位。即sum[Ind]维护的是该区间的一个状态,从右向左第i位表示第i种颜色在该区间是否出现。然后用上线段树区间修改+区间查询即可。时间复杂度 O(nlogn)空间复杂度 O(4*n)

2017-10-13 18:22:55 852

原创 POJ - 3321 Apple Tree dfs序+线段树 简单题

题意:初始时树上每个节点都有1个苹果,然后对一个节点操作,如果有苹果,就拿走,没苹果,就放上,然后询问以x为根的子树上有多少个苹果。dfs序简单题POJ这题好像没有开O2,vector<int> sons[MAXN];一直TLE,换了邻接表就过了。时间复杂度 O(n)空间复杂度 O(4*n)

2017-10-11 22:51:56 658

原创 HDU - 3887 Counting Offspring dfs序+线段树

题意:问对于每个节点,它的子树上标号比它小的点有多少个。dfs序+线段树关于dfs序:dfs序是处理树上问题很重要的一个工具,主要能够解决对于一个点,它的子树上的一些信息的维护,即用来处理子树的问题。 dfs序一般开的空间是n,因为只在入的地方时间戳++,出来的地方时间戳没有额外的++,线段树的每个节点应当是时间戳。这里,因为点在它的子树上,所以在线段树中,故在它的两个时间戳的区间内([p1[i],p2[i]),所以我们只需要从小到大考虑,它的区间里有多少个点已经放入,然后再把它放入即可。时间复

2017-10-11 19:14:37 659

原创 XIII Open Championship of Y.Kupala Grodno SU Grodno Problem E. Enter the Word Problem 贪心+后缀自动机

题意:这里对于生成一个字符串有2种操作,1、在末尾添加一个字母,花费代价为 1;2、在末尾添加一个substr,且该substr为已存在字符串的子串,花费代价为 1。现给出需要构造出的字符串,为最小的构造代价。贪心+后缀自动机贪心策略是 对于剩下的字符串suf,取它的最大前缀 substr,且substr是已构造出的字符串pre的子串,如果substr为空则执行操作1,否则执行操作2,这样每次都添加尽可能多的字母,所以代价是最少的。所以对于前缀pre建立后缀自动机,每次把suf丢进去匹配,其最大的

2017-10-06 14:10:40 1129

原创 HDU 6208 The Dominator of Strings 后缀自动机

题意:每组数据给出n个字符串,每组总共最多1e5个字符,然后要求判断,其中是否存在一个字符串,而其它字符串是这个字符串的子串。总共有30MB的输入。贪心+后缀自动机如果用AC自动机来做很可能会TLE,但后缀自动机在这里相对不容易被卡掉,首先我们多出了一个贪心优化,那就是那个可能存在的母串必定是长度最长的字符串,如果长度最长的字符串不止一个,则它们必定是完全相同的,所以后缀自动机只会用最长的那个字符串来建立自动机,而如果是AC自动机则必须使用全部的字符串来建立自动机,加上乘个memset[26]很容易被卡

2017-09-18 12:31:40 1254

原创 HDU 6194 string string string 后缀数组+lcp、Two Pointers

题意: 给出一个字符串,询问恰好出现k次的子串的种数。后缀数组+ST表对于给定字符串,跑出sa[]和height数组,然后预处理出ST表。然后类似于Two Pointers的做法,维护一个长度为k-1的height数组的区间,一次从k到length(s)推一遍。ans += st.query_min(i - k + 2, i) - max(st.query_min(i - k + 2, i+1), st.query_min(i - k + 2 - 1, i));这里维护的是k个后缀的最大公共前缀

2017-09-12 16:43:31 1001

原创 HDU 6138 Fleet of the Eternal Throne 后缀数组+字典树

题意:给出n(n<=1e5)个字符串,且字符串的字符总和<=1e5,给出m个询问,每次给定x,y,找出对于给定str[x]和str[y]的公共子串且满足这个串是所有串中的某个串的前缀,要求所得的公共串的长度尽可能大。后缀数组+字典树首先用给出的n个字符串建立字典树,然后对于每次的询问,把str[x]和str[y]用‘#’连起来然后跑出后缀数组,对于所有的ind[i](其中sa[ind[i]] <= len, ind[i]为其在sa数组中的下标),然后对于 ind[i] - ind[i-1] > 1

2017-08-19 20:52:50 746

原创 XVII Open Cup named after E.V. Pankratiev Problem I. Rage Minimum Query 手写小根堆、卡时间+卡内存、或者随机化

题意:都是使用unsigned int 32,q个修改,每次修改一个值,并求出一个当前总区间最小值si,求 sigma{si * 10099^i mod 2^32}(1 <= i <= q),然后每次的修改操作,i和x val[i % n] = x,的i和x都是用给出的随机函数求出。 手写小根堆、卡时间+卡内存、或者随机化线段树显然很可能超时,所以想用优先队列来做,数组初始值为2^31-1,且生成的x必定小于这个值,所以可以用优先队列来记录这些值,每个元素维护<x, i> 表示当前把val[i]改成了x

2017-08-03 00:16:33 1210

原创 HDU - 4417 Super Mario 主席树+二分

题意:给出一个长度为n(1<=n<=1e5)的数组,m(1<=m<=1e5)次询问,每次询问在区间[L,R]中小于等于X的数的个数。主席树+二分朴素的主席树是查询区间第k大(从小到大第k大),所以只需要在每次询问的时候二分的找出在此区间里比X大的最小的数的大小,比如这个值为y(初始化为-1),则答案为y-1,即把这个比X大的数去掉(因为X可能不止一个,所以要这样处理),此外如果y未被刷新则说明X是这个区间最大的数了 此时y = R-L+1。 所以时间复杂度

2017-07-31 16:05:55 851

原创 POJ - 2104 K-th Number 主席树基础题

题意:给出一个数组,每次询问这个数组的区间[L, R]内第k大的数是什么。主席树基础题主席树,又称可持久化线段树,是对于数组的每个前缀a[1...i]建立一颗线段树,并且a[1...i]的线段树和a[1...i+1]的线段树的区别是只有树上的一条链不同,所以每次对于一颗新的线段树其实只是添加一条长度为logn的链。它的核心是寻找公共节点和主席树的加减性。时间复杂度每次查询和修改都是logn,并且空间复杂度大概是O(nlogn)所以一般开20*MAXN的数组应该没有问题。这里推荐一篇讲解主席树讲得很

2017-07-31 14:22:35 762

原创 Codeforces Round #426 (Div. 2) C. The Meaningless Game C. The Meaningless Game

题意:给出n(1 <= n <= 3.5e5)个询问,每个询问给出a、b(1 <= a, b <= 1e9),A和B 2个人每一轮选择一个数K,如果A先说出就a' * k^2 且B :b'*K。反之a'*K , b'* K^2, 经过x轮后游戏结束,A最终得分a分,B最中得分为b分(x >= 0),问得到的a,b是否合理,即是否存在一系列游戏情况使得最终得到a和b值。数论、推公式、分解因数a和b初始为1,然后每次一个*k 另一个*K^2,所以最终的结果是a*b = (kk)^3, 其中kk为所以ki的乘

2017-07-31 13:55:54 1126

原创 Gym - 101164C Castle KMP的拓展、next数组+dp、好题

题意:给出原串s,然后有3种操作,1、在s的末尾加上一个小写字母ch;2、把s的拷贝放入set;3、询问在set中的字符串是当前字符串s‘的后缀的个数。KMP的拓展、next数组+dp用构造出的最终串,跑出该字符串的next数组nxt[MAXN],并记录l[i] 为到操作i时字符串s的长度。然后对于操作i = 1 ~ e,如果该操作是type2则标记f[i] = true, 并且对于每个i, u = l[i], ans = sum[u] = f[i] + sum[nxt[u]],然后如果是type三则

2017-07-25 23:55:59 1160

原创 Gym - 101164K Cutting 哈希+枚举

题意:给出字符串A和B,字符串A大小写不区分,字符串B由小写字母构成,构成AB的每种字母的个数相同,询问是否能把B切成3份,重构出字符串A,如果能则输出那三份子串,并按照A的顺序输出。哈希+枚举刚开始的时候,以为可以用KMP来过,白白TLE了2发才明白,自己走远了,这题是合适的做法是hash。O(n^2)的枚举字符串B 的0~i-1 为第一段,i~j-1 为第二段,j~n-1为第三锻,然后每次借用这三段的哈希值去和A串匹配,这三段有A(3,3) == 6种排列方式,所以枚举这6种排列,之后借用它们

2017-07-25 23:16:17 1089

原创 Petrozavodsk Summer Training Camp 2016 Problem I. Vier 随机化+枚举

题意:给出序列PAI[i],求是否存在a、b、c、d,使得1. a + b == c + d (mod n), and 2. PAIa + PAIb == PAIc + PAId (mod n). 随机化+枚举题目中特意描述了数据是随机均匀的,所以可以用随机化,在尽可能均匀的时间内求出答案。每次随机一个x == a + b == c + d,然后枚举判断是否存在 PAIa + PAIb == PAIc + PAId (mod n).虽然不知道怎么证明,但确实可以在比较低的时间复

2017-07-25 11:52:25 1048

空空如也

空空如也

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

TA关注的人

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