自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kalilili的专栏

岁月如歌

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

转载 平面扫描思想在ACM竞赛中的应用(转载)

Openinx BlogAbout 平面扫描思想在ACM竞赛中的应用Jan 1, 2013说明:以下为本科挫比的比赛论文,写文章的语气都是一副叫兽的调调!         摘要: 平面扫描思想在计算几何,计算机图形学,网格计算等计算机理论领域有广泛的应用。有非常多的经典算法借助平面扫描的思想极大的降低了算法时间复杂度。例如线段相交问题、平

2016-06-03 12:07:49 3850 2

转载 3xian教主的警世良言兼退役贴

最后一天,漫天飘起了雪花,假装欢送我离去。这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong Answer的纠缠。还好lynncui在期间独挡一面过掉D。最终成绩不好,然而没有遗憾,从不遗憾。相比之下,来自全球的队伍让我看到了很强大的实力,每一道题都有人过,包括SJTU欺骗性提交的H都被人干掉了。身为地球人我感到自豪。

2015-03-30 17:11:53 1122

转载 线段树总结

这是某位大牛刷的线段树题目,类型分的很明确:出处http://blog.csdn.net/shiqi_614/article/details/8228102之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnlySuccess的博文“完全版线段树”里的大部分题目,其博文地址Here,然后也加入了自己做过的一些题目。整理时,更新了之前的代码风格,不过旧的代码仍然保

2015-02-16 10:46:18 1303 2

原创 Codeforces Round #442 (Div. 2) F. Ann and Books (莫队分块)

http://codeforces.com/contest/877/problem/F题意:有n = 1e5个数,有正有负,有1e5个区间询问,每次询问区间[l, r]中有多少个子区间的和为K, 所有询问K都是一样的,小于1e9.思路:求前缀和sum[], 等价于询问sum[] 在 [L - 1, R] 中有多少对(l,r) 满足sum[r] - sum[l] = K. 所以可以分块暴

2017-10-24 20:13:52 411

原创 Codeforces Round #441 E. National Property (2-sat tarjan后输出任意一组合法解)

题目链接:http://codeforces.com/contest/876/problem/E题意:现在我们想要让所有行的字典序升序排列,且对于每一种数字,我们可以采用一种变换,比如 x->x' ,所有加 ' 的都比不加小,问是否可以找到一种变换使得原序列升序。 思路:只要相邻两行满足升序则原序列升序。于是我们考虑相邻的两行 a,b ,找到第一

2017-10-23 09:26:37 467

原创 Codeforces Round #146 (Div. 1) C - Cyclical Quest (后缀自动机SAM)

http://codeforces.com/problemset/problem/235/C陈立杰出的后缀自动机。题目大意:给一个字符串S,再给一个字符串T,设T的长度为len,问T的循环串在S中出现的次数,这里循环串的定义是:对于一个长度为len的字符串,我们把它首尾相接,然后从任意位置开始走len步所得到的串我们叫做T的循环串。如abaa的循环串有 abaa,baaa,aaab

2017-10-23 08:45:58 419

原创 AtCoder Regular Contest 076 F - Exhausted (Hall's marriage theorem 或 贪心)

转化后的题意就是:有N个人,1 ~ M号座位,第i个人愿意坐的座位是[1,Li]或 [Ri,M]。设这个二分图最大匹配是X,然后输出N - X,即问最少有几个人意愿得不到满足。思路:在二分图匹配中有个Hall's marriage theorem定理(https://en.wikipedia.org/wiki/Hall%27s_marriage_theorem),这个定理给出了二分

2017-06-25 00:17:05 1238

原创 Hackerrank Week of Code 25 Stone Division(SG 博弈)

题意:有n个石子的堆,两人轮流游戏,有m个数的集合,每个人只能在集合中选一个数si,然后把n个石子严格平分成si堆,若某人不能严格平分的时候为败。(n 思路:暴力求SG, 用map进行记忆化存SG值,SG[n] = 0的时候,先手必败,否则必胜。n个石子分成si个n/si大小的堆,SG[n]等于si个SG[n/si]相XOR,因为XOR满足结合律所以可以这样处理。最后map里面存的都是

2016-11-08 11:03:41 1018

原创 Codeforces Round #368 (Div. 2) D. Persistent Bookcase(可持久化)

题意:一个n∗m矩阵A,维护4种操作:1 i j:把第A[i][j]赋值为12 i j:把第A[i][j]赋值为03 i:把A[i]的0变1,1变04 i:回到第i个操作之后的状态数据保证合法。 每个操作完成后输出整个矩阵1的个数。n , m  对操作离线的话,直接DFS一遍就好了,强制在线的话,用主席树可持久化,复杂度是 O( Q * (n / 32

2016-10-14 11:44:57 398

原创 HDU 5919 Sequence II 主席树

题意:给定一个序列nn,有mm次查询,每次查询一个区间[l,r][l,r],求区间中每一种数在区间中第一次出现的位置的中位数,强制在线。如果考虑离线做法,从大到小枚举 rr,用线段树对每个 ll 维护[l,r][l,r]中数的种类数,查询时在线段树上二分,那么支持在线只需要简单可持久化一下,复杂度是 O((n+q) \log n)O((n+q)logn)。空间需要开

2016-10-14 00:01:48 496

原创 Codeforces #187 (Div. 1) B. Sereja and Periods && Hihocoder 1355 (字符串匹配倍增好题)

题目链接:http://codeforces.com/contest/314/problem/B题意:给定一个两个字符串stra, strb,和两个数c1,c2,求stra * c1 中有多少个字符序列 strb * c2。 a,b字符串的长度100, c1和c2小于1e7。思路:用nxt[N][2]建立一个匹配数组,nxt[pos][0], 表示从pos开始匹配,匹配结束以后一共匹配了多

2016-08-07 19:18:01 636

原创 Hihocoder 1356 分隔相同整数 (贪心)

题目链接:http://hihocoder.com/problemset/problem/1356时间限制:10000ms单点时限:1000ms内存限制:256MB描述给定一个包含N个整数的数组A。你的任务是将A重新排列,使得任意两个相等的整数在数组中都不相邻。  如果存在多个重排后的数组满足条件,输出字典序最小的数组。  这

2016-08-07 18:27:10 732 5

原创 HDU 5785 Interesting 2016 Multi-University Training Contest 5(Manacher)

题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1005&cid=708题意:对于长度1e6的字符串,某个字串区间[L, R]若可以分割成两个回文字串[L, mid]和[mid + 1, R],那么这个区间的权值为L * R, 不能分割则权值为0, 求所有区间的权值和。思路:用manacher算法O(n)求出所

2016-08-03 22:48:06 460

原创 CodeChef补题计划

已完成1题。CHSGMNTS : https://www.codechef.com/problems/CHSGMNTS题意:N=1000,a[i] O(n * n) :把相同的数建立链表,且前驱pre[i], 对第一个区间 for(L1 1 ~ n) for(R1 n ~ 1) 遍历, 对于pre[R1]

2016-07-15 15:44:21 698

原创 16暑期补HackRank计划

已完成0题

2016-07-15 15:33:36 522

原创 16暑期补TC计划

已完成0题

2016-07-15 15:32:34 622

原创 16年暑期瞎补CF计划

已完成0题。

2016-07-12 22:46:07 434

原创 浅谈树状数组

一般的树状数组是从1为开始的,因为每次操作是对最低位的1操作,也就是+-lowbit(i) (lowbit(i) = i & -i)。也可以从0开始,这样每次操作就不是对最低位的1操作了,而是对最低位的0操作,也就是(lowbit(i) = ~i & i + 1)。所以从0开始的树状数组可以这样写:void update(int x, int val) { for(i

2016-07-09 16:00:02 505

原创 Hankerrank World CodeSprint #4 Gridland Provinces (字符串双hash )

Observe that since the knight always completes his journey in minimum total time, he never visits the same city twice. In other words, the path formed by the Knight is a  path.Suppose the knight

2016-06-27 18:01:16 783

原创 数组左旋转k位 std::rotate() POJ 1978

题意:模拟一个洗牌操作。先输入两个正整数N和R,N表示有N张牌,R表示有R次操作。然后再是有R行,每行有两个正整数p和c,表示从p开始数起c张要放到牌顶。现在问你:经过R次操作后,这N张牌的首张牌是什么数字?注意:牌的数字是倒着排列的。样例解释1:5 2 //5张牌 2次洗牌 当前序列:5 4 3 2 13 1//从第三张牌数起 到 第四张牌 要放到牌顶。(注意:这里有一个数字放到

2016-03-27 13:03:51 853

原创 Codeforces Round #344 (Div. 2) E - Product Sum(三分 (java))

题意:n = 20w的数列, 价值val = sigma(i * Ai), 可以把任意一个数移到任意位置, 求价值最大值思路:对每个数,分别左右移动, 三分求得移动的最佳位置三分:注意把要三分的区间向左向右各扩大一格,这样就不会使mid == midd出现了,避免了出错。代码:import java.util.*; import java.math.*; imp

2016-03-04 19:52:13 665

原创 Codeforces Round #340 (Div. 2) E. XOR and Favorite Number(分块 (java))

题意:n个长度的序列, m个询问,一个询问[L, R], 求[L, R]又多少个子区间的xor和为k n, m and k (1 ≤ n, m ≤ 100 000, 0 ≤ k ≤ 1 000 000)思路:对于原序列的前缀和序列,即询问[L, R] 中有多少对(l, r) Al ^ Ar = k所以分块容易解决代码:import java.util.*;

2016-02-10 21:35:38 350

原创 Codeforces Round #337 (Div. 2) E. Alphabet Permutations (线段树lazy 或 set)

大致题意:一个2e5的字符串STR,最多包含K个字符(K 1. 把字符串[L, R]的字符修改成x2. 给一个K个字符的某个排列s,询问最少重复次数的s连接而成的长串的子序列包含STR思路1:因为要修改STR,所以要对STR进行处理,然后要在logn以下的复杂度完成查询操作。可以注意到最少重复的次数就是STR中相邻的两个字符(ch1, ch2) 在排列s中的位置是ch2在c

2015-12-29 00:24:11 591

原创 HDU 5593 ZYB's Tree(树形DP 好题(java))

大致题意:有n = 500000节点的树, 对于每个节点求距离此节点不超过K (K 思路:题意中的边是通过 “For reading:we have two numbers A and B,let fai be the father of node i,fa1=0,fai=(A∗i+B)%(i−1)+1 for i∈[2,N] .” 这样构造出来的,这只是便于快速读入而已,

2015-12-05 23:57:40 792

原创 51nod 差和问题(树状数组+离散化 (Java))

题目链接:http://www.51nod.com/contest/problem.html#!problemId=1394题目描述:有一个集合S,初始状态下有n个元素,对他进行如下操作:1、向S里面添加一个值为v的元素。输入格式为1 v2、向S里面删除一个值为v的元素。输入格式为2 v3、询问S里面的元素两两之差绝对值之和。输入格式

2015-11-30 21:48:04 865

原创 HDU 5071 Chat(大模拟)

是2014鞍山赛区的一道银牌题。有这几个坑点:1.删掉某个窗口时,若此窗口时alwaystop,需要把alwaystop清零,还要把cnt清零,因为下次可能还打开此窗口和她聊天2.最后说Bey的时候,先对alwaystop说Bey,再对队列里的依次说Bey3.只有和她聊过天,才对她说Bey,否则不说//#pragma comment(linker, "/STACK:10240000

2015-11-13 00:36:40 555

原创 Codeforces Round #327 (Div. 1) D. Top Secret Task(DP)

大致题意:题意很简单,就是n个数,求最多两两交换S次,使前K个数的和最小n 思路:显然s >= n * n / 2 时总能把前K小的数交换到前K个位置而且交换不交叉时是最优的,比如Ak 与 A(k+x)交换, 接下来Ak-1只能A(k+y)(y > x) 交换,总是最优的这样每次交换的代价是j - i,再增加一维可行位置保证不交叉,这样就是S容量的背包问题//p

2015-10-30 11:05:46 651

原创 Light OJ 1061 - N Queen Again(搜索+状压DP)

大致题意:8*8的棋盘,已知八个皇后的位置,问最少移动多少次,可以让八个皇后不互相攻击。(同行,同列,同斜线视为互相攻击)思路:易知八皇后不攻击一共有92种,dfs出这92种,然后对于每种状压求出最少需要移动多少次复杂度: O( 92 * n * 2 ^ n) (n = 8)//package ok;import java.math.*;import java.io

2015-10-30 10:53:14 674

原创 UVA10253 - Series-Parallel Networks(树形DP+(组合) _ 建模很好)(好题)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1194大致题意: 给你n条边,问你恰好用n条边,能构成几种串并联网络。(串联的各个部分可以任意调换,并联在一起的各个部分也可以任意调换,若通过调换可得,则二者视为等效)思路:一个n条边的整

2015-10-25 00:14:08 778

原创 Single Round Match 671 Round 1 - Division II, Level Three(状压DP)(略难)

题目链接:http://community.topcoder.com/stat?c=problem_statement&pm=14070&rd=16551大致题意:描述太麻烦。摘取关键题意:When pushing the trees, Limak always follows a few rules:He only pushes trees in two dire

2015-10-24 23:49:01 394

原创 Uva 11361 Investigating Div-Sum Property(数位DP)

大致题意:问在区间[a,b]内有多少个整数满足被K整除,且这个数的每一位上数字的和也被K整除a , b 思路:显然在int范围内,每位数字之和不超过9*10 ,所以K大于100就直接返回0, 其余用数位dp算数位dp的大致思路都一样,先dp出dp[len][x][y] 表示len位长的数有多少个数modK等于x,每一位和modK等于y然后求DP(int num) 表

2015-10-22 11:50:33 437

原创 LightOJ 1021 - Painful Bases(状压DP)

大致题意:求 ’0‘ ~ ‘F' 的排序,组成16进制数,能被K整除,求排列的方案数思路: 基础状压,注意从低位到高位DP,因为全是F在最高位时对于的十六进制会爆long long//#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #inc

2015-10-22 00:22:09 467

原创 Light OJ 1013 - Love Calculator(LCS+ 计方案数)

大致题意:有a,b字符串,求最短的字符串使a,b均为它的子序列,求这种最短字符串有多少个思路: 显然最短长度就是|a|+|b|- LCS同样dp两遍,第一遍求LCS,第二遍在LCS的转以上dp出方案数:如果a[i] == b[i] , cnt[i][j] += cnt[i-1][j-1];否则,有两种策略,a[i]是末尾最后一个字符,或b[j]是最后一个字符复杂度O(n^2)

2015-10-21 21:10:43 742

原创 LA 4123 Glenbow Museum (组合数)

题意:对于一个边平行于坐标轴的多边形,我们可以用一个由R和O组成的序列来描述它:从某个顶点开始按照逆时针顺序走,碰到一个90°的内角记R;碰到一个270°的内角记O。这样的序列称为角度序列。定义星型多边形为多边形中存在一个点可以看到多边形边界上每一个点。现在给定正整数n,求有多少个长度为L的角度序列至少可以对应一个星型多边形。其中多边形的每条边长任意。思路:星型多边形值在多边形内存在一点,能看

2015-10-20 22:23:15 751

原创 UVA 11174 - Stand in a Line(组合递归计数)

大致题意:有n个人,给出m对关系,(a,b) 表示b是a的父亲, 现在有多少种方案使他们排成一列,使得没有人排在他们父亲前面(对1e9+7取模)思路:可见,给出了一颗森林,对于每棵树,树根显然必须排第一位,然后对每棵子树用组合统计位置方案树,再乘以子树的子问题方案数。到这里问题就算解决了,当然可以用dfs进行这种dp,但不妨人工迭代一下,每棵树的答案是 ans = (cnt(r

2015-10-13 23:12:26 449

原创 Codeforces 584E. Anton and Ira (排列好题)

大致题意: n 输出解思路:可以先把s映射成1...n的规则排列,然后再把p序列对应映射成新的序列(这样便于分析和思考,得到的问题与原问题等价)先对每个元素考虑,设pi和pj交换产生的代价是 2 * | i - j | (即pi和pj各产生了|i-j|的代价) 对于p中的每个pi,最终都是需要把i位置的pi换到pi位置,至少需要的代价| i - pi | , 然而答案就是最小的代价

2015-10-09 20:49:49 956

原创 POJ 3349 Snowflake Snow Snowflakes ( HASH+最小表示判同构 )

大致题意:1e5个6个元素的数组,问是否有两个数组是同构的思路:对每个数组HASH后插入,用链表遇到地址冲突的时候用最小表示法判同构近似O(n)Snowflake Snow SnowflakesTime Limit: 4000MS Memory Limit: 65536KTotal Submission

2015-09-22 19:59:03 520

原创 HDU 5430 Reflect (欧拉函数) (类似UVA 12493 Stars)

问题描述从镜面材质的圆上一点发出一道光线反射NN次后首次回到起点。问本质不同的发射的方案数。输入描述第一行一个整数T,表示数据组数。T \leq 10T≤10对于每一个组,共一行,包含一个整数,表示正整数N(1 \leq N \leq 10^{6})N(1≤N≤10​6​​)。输出描述对于每一个组,输出共一行,包含一个整数,表示答案。输入样例14

2015-09-08 11:20:17 477

原创 51nod 1130 N的阶乘的长度(阶乘近似公式--斯特林公式)

大致题意:求n!有多少位,n大致思路:显然是企图求 lg(n!)+1 向下取整显然求lg(n!) 展开的复杂度是On的但是,他是求多少位,有n!的近似公式斯特林公式(Stirling's approximation)显然对于求对数函数来说精确度在n比较大的情况下必然满足。//#pragma comment(link

2015-09-03 19:24:43 1269

原创 Codeforces GYM 100651 D I Conduit! (水计算几何)

大致题意: 1e3 个线段,画在一张纸上,求可以看成多少个线段,( 两个线段部分重叠,或收尾相接将看成一个线段)思路:在同一一条直线上的两条线段: 他们斜率相等,他们在Y轴或X轴上的投影点相等。然后根据这两个排下序就可以搞出来了。这题卡精度,要用到eps//#pragma comment(linker, "/STACK:1024000000,1024

2015-08-31 22:26:06 774

空空如也

空空如也

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

TA关注的人

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