自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 (2015)北京区域赛总结+回忆录

从去年7月跟着学长们入坑,到今年11月去北京比赛,一年多的时间就这样转眼度过,现在坐在电脑面前码字时大脑却一片空白,不知道从何说起。想起去年暑假的时候,每天都是8点多到实验室晚上10点回宿舍,顿顿和学长们还有队友们吃外卖都快吃吐了,每天为了题目抓狂心塞(╯°Д°)╯ ┻━┻ ,但是真的感觉很充实很开心(表示真的不是抖m ╮(╯▽╰)╭),围观学长们打网络赛打区域赛,为GG学长他们西安赛区最后三

2015-11-20 00:37:22 1641 2

原创 lightoj 1285(凸包)

题意:有n个点,要求每个点都要是凸多边形的一个顶点,且边不交叉,每个点只有两条边和他相连,要求顺序输出凸多边形的形状也就是各个顶点的编号,不存在就输出Impossible。 题解:首先容易想到Impossible的情况只有n点共线时会出现,用凸包函数求出凸包后,如果少于3个点就是Impossible。特判后,再用一次凸包,这次求凸包要包括共线点,下凸包的点是答案数组的前半部分。然后把所有点(不是只

2015-11-07 20:38:55 769

原创 lightoj 1203(凸包)

题意:有n个点,问从哪个点用最小的角度可以看到其他所有的点,输出最小角度。 题解:把n个点求凸包,凸包内部的点角度都是360,所以结果就是凸包的最小内角。#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <cmath>using namespace std;const dou

2015-11-07 20:29:26 700

原创 poj 3335(半平面交)

题意:顺时针给出n个点的凸多边形,问凸多边形的内核。 题解:半平面交模板题,有点坑,用大白上的模板时,判断点是否在有向直线的左边,线上的也算。。#include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <algorithm>using namespace std;const double e

2015-11-07 00:41:12 507

原创 hdu 5130(圆和凸多边形相交面积)

题意:有一个简单的多边形,也就是凸多边形,现在有两个点A和B,问凸多边形上的点P,P到B的距离不超过P到A的距离的K倍,满足条件的P的区域的面积是多少。 题解:可以想到式子PA * K >= PB,这道题关键点在于这个式子可以化简成圆的一般式,因为K < 1,那结果就是圆和凸多边形的相交面积。。。 圆的一般式:x^2 + y^2 + Dx + Ey + F = 0 圆的标准方程:(x - a)

2015-11-06 18:19:25 1082

原创 hdu 5536(trie + 贪心)

题意:有n个数字,选择三个下标不同的数字,其中两个求和,然后和第三个数字异或得到的最后结果是A,问A最大是多少。 题解:长春赛区的一题,据说可以三层for过掉,还是用字典树好好写一遍,首先枚举把n个数字按二进制码插入字典树,维护val[u]节点u是多少个数字的前缀,id[u]是节点u是数字id[u]的最后一个节点,然后枚举两个求和的点,把这两个点在字典树上用flag[u]标记起来,然后把sum =

2015-11-04 18:56:23 487

原创 hdu 4825(trie)

题意:给出n个数字,然后m次询问,每次询问给出一个数字k,问n个数字中哪个数字s和k异或得到的数字最大,输出数字s。 题解:n个数字建立字典树,从最高位开始贪心,如果s当前位是0,就往1走,反之亦然,走到最后输出对应值。#include <cstdio>#include <cstring>#include <algorithm>#define ll long longusing names

2015-11-04 14:14:51 436

原创 lightoj 1269(trie)

题意:给出长度为n的序列,问选出任意区间的所有数字的异或值,最大最小各是多少。 题解:字典树经典问题,把前i个串的异或值都插入到字典树里,然后如果要找最大值,就把所有前缀去贪心出最大值,每次找和自己不一样的节点走,如果要找最小值,也是把所有前缀拿去贪心出最小值,每次找和自己当前位一样的节点,找最后一个分叉点,但要刨除自己。#include <cstdio>#include <cstring>#

2015-11-04 11:40:16 590

原创 lightoj 1224(trie)

题意:有n个字符串,要求输出一个最大的值是公共前缀×其长度。 题解:把字符串都拿去建字典树,val[i]存节点i是多少个串的前缀,这个最大的值就是节点深度depth[u]×val[u]的最大值。这题好坑,数组开小了给的是wa。。。#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namesp

2015-11-03 19:47:59 786

原创 lightoj 1114(trie)

题意:给出n个单词,其中首尾字母相同,中间字母任意排列的单词是同一个码,然后给出m个句子,每个句子含有若干个单词,问多少个不同的句子和这个句子有相同的编码。 题解:把每个单词除去首尾的部分按字典序排序,然后插入字典树,val[u]存节点出现次数,在每个单词的最后一个节点数量累加,然后把输入的句子中每个统计到的单词数量乘起来。#include <cstdio>#include <cstring>

2015-11-03 17:08:15 639

原创 lightoj 1258(manacher)

题意:给出一个字符串,现在可以在这个字符串的右边任意添加字符串使字符串成为回文串,问回文串最短长度。 题解:因为只能在右边添加字符,添加的越少越好,所以要找一个最靠近右端点的回文串,在manacher算法中,如果出现 i + f[i] >= len说明出现了这样的串(最坏情况就是最后一个字母,回文长度是1),计算这个串的回文长度temp,结果就是2 * len - temp。#include <c

2015-11-01 23:02:55 593

原创 lightoj 1428(后缀数组)

题意:给出字符串A和字符串B,问A的多少个不同子串内不含B。题解:这个是看题解的,多加了一个rmax数组,rmax[i]表示A串的第i个位置(从0开始)最多向后延伸多少个字符的子串可以不包含B,相当于给出A的每个后缀的右范围,rmax数组的确定可以先把A和B串用一个很大的字符间隔并连接,然后得到height[i],sa[i],rank[i],在按字典序排好的后缀串中,从rank[lenA+1] +

2015-11-01 10:44:09 364

原创 lightoj 1314(后缀数组)

题意:给出一个串,问长度为l到r的不同子串的个数。 题解:如果没有给出子串长度范围,个数就是len - sa[i] - height[i]的累加和,给出了左右范围其实也就是多了两个判断,判断len - sa[i]和r的较小值,height[i]和l - 1的较大值,来缩小范围。#include <cstdio>#include <cstring>#include <algorithm>#de

2015-11-01 10:32:28 456

原创 CodeForces 591C

题意:给出一个长度为n的01序列,然后这个序列的变换方式是首尾的数字不动,其他位置的数字,根据原序列的左右和自身位置的三个数字的中位数确定,这样一直变换下去,如果不能成为一个不变的序列输出-1,否则输出到不变序列的步数和最终不变的序列。 题解:思维题,想一想会发现不会出现-1的情况。那么只有一个序列中左右两边和自己不一样的位置上的数字会发生变化,那么分四种情况:1 0 1 0 1最终会变成1 1

2015-11-01 00:57:06 637

原创 hdu 3333(树状数组)

题意:给出长度为n的数字序列,然后有q次询问,每次给出l r问区间[l, r]不同数字的和。 题解:因为询问次数有100000,可以离线处理,把所有询问存起来按右边界从小到大排序,这样再处理每个询问,最开始从位置1开始,从当前位置到他的右区间内,如果当前数字未被访问过,就把这个数字加入,如果已经访问过,就把之前位置加过的数字减掉,从当前位置再加入,这样就能保证询问区间内每个数字只被加一次。#inc

2015-11-01 00:48:11 738

空空如也

空空如也

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

TA关注的人

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