自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) E. Little Artem and Time Machine 树状数组

题意有三个操作1 x y,在第x秒插入一个y2 x y,在第x秒移走一个y3 x y, 问第x秒有多少个y题解:裸的可持久化treap,可以直接莽一波……但是这道题可以用树状数组做,时间复杂度是nlog(1e9)log(1e9)的所以感觉还是蛮快的空间是nlogn的#include #include #include

2016-09-28 13:53:30 433

转载 Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance

题意:n对情侣围成一圈在跳舞,给出q个操作,表示男生的移动操作1 x   x为负数表示所有的男生逆时针走x步  x为正数表示所有的男生顺时针走x步2     表示当前的男生相对奇偶交换顺序  比如swap(1,2)    swap(3,4)  而不能sawp(2,3)思路:x为负数时变成顺时针走x+n步可以发现所有的奇数位置男生都是移动相同的步数ans1

2016-09-28 08:51:59 333

转载 2014 北京区域赛 F Fluorescent HDU5117 (数学+状压+dp)★ ★

题意:有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态;问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和思路:1、首先注意到N2、最开始考虑的是算出每种情况下对应的方案数,然后依次dp,但是数据量太大;3、正解是直接考虑X^3,其中X就是每种状况下亮着的灯的数量;4、如何解这个X^3?我们把它展开——X

2016-09-26 22:40:22 513

转载 HDU 5114 Collision(一元线性同余方程)

题意:两个质点在一个x*y的矩形区域内,初始位置(x1,y1)和(x2,y2)给出,两个质点保持(1,1)的速度运动,遇到区域边界会反弹(满足反射定律),问两个质点第一次相遇的位置,如果不会相遇则输出Collision will not happen. 题解:两个质点如果相遇那么一定在整点或者半点处,所以首先将所有数据乘2避免小数出现,设第一次两点横坐标相同的时刻为tx,若x1=x2则任意时刻

2016-09-26 22:38:05 437

转载 [hdu 5032]2014北京网络赛Always Cook Mushroom 离线线段树/树状数组

题目大意给定一片蘑菇田,只有从(1,1)至(1000,1000)的整数点能产蘑菇,点(x,y)的蘑菇产量为(x+A)(y+B)给定直角三角形的两个顶点和斜边的斜率,用(a,b)的形式给出,求该三角形内的蘑菇产量和。解题思路因为点最多有1000*1000=100W个,可以先求出他们斜率并排序,找到每个斜率的rank,并将询问按照极角排序,离线将询问的斜率也排序,逆时针每个点加

2016-09-26 22:28:27 299

转载 HDU 5036 Explosion 概率 期望

题意:给出n个箱子。每个箱子上都有锁。一把钥匙只能开一把锁,一把锁只有一个钥匙。当然,对于有些没法用钥匙开的箱子,我们必须暴力打开。给出每个箱子中钥匙的数目和具体能开那个箱子,求暴力开箱子的数目的期望,使所有的箱子被打开。思路:很像xiaodaoBC的某道开箱子的题。但是因为那道题是每个箱子会随机的放一把钥匙。这样得到的期望为调和级数。           这道题也类似,我们首先得

2016-09-26 22:19:44 360

转载 HDU 5033 Building (单调栈维护凸包)

题意:一个人在x轴上,他的左右两侧都有高楼,给出楼的横坐标Xi和高度Hi还有人的位置pos,求人所能看到的天空的最大角度。分析:将建筑物和人的位置从左到右排序,对于每个位置利用栈求一次人左边建筑物的凸包,找到一个最小的角度,然后对称一下,再找一个右边的建筑物的最小角度,两个角度加起来就是答案。将人左边的建筑物从左到右扫描,下面两种情况会出栈:栈顶元素楼高

2016-09-26 22:13:50 320

转载 ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】

题意:给出n个点,n-1条边的一棵树,然后要在两个点上建立两个消防站,让所有点的到消防站最大距离的点的这个距离最小。分析:首先先求这个树的直径,然后在树的直径的中点处把树分成两棵树,然后在把两棵树分别取中点的最大值就是ans值。#include #include #include #include #include #include using

2016-09-26 22:02:15 323

转载 HDU 4787 GRE Words Revenge(在线AC自动机)★ ★

题意:Coach Pang学习英语单词,总共有n个操作,2种操作。每行读入一个字符串。如果字符串以+开头,此为单词(即模式串,不考虑重复)如果字符串以?开头,此为文章(即文本串,查询在此之前的单词在文本串中出现的次数)需要注意的是,文章是被加密过的,加密的方法就是将文章看作一个环,每次旋转上一次询问的答案次数。具体看输入即可。思路:如果只建一个AC自动机的话,每次插入单词后

2016-09-26 21:39:54 432

转载 hdu 4781 Assignment For Princess(构造法)

构造一个n个点,m条有向边的图,需要满足两个要求:1.任意一对点对之间最多有一条有向边,且没有自环。2.保证图联通,m条边的边权严格属于[1, m]且互不相同,从任意点出发,经过任意路径后回到起始点,经过的边权总和是3的倍数。其中第二个要求似乎听上去很玄乎,其实可以一步一步的来:要同时满足1.2的要求,而且输入数据 m >= n + 3,那么也就是说,我们总是能轻松的先构造一个n个点n

2016-09-26 18:31:37 322

转载 HDU 4784-Dinner Coming Soon-BFS

在k个平行空间中,n个点,由m条有向边连接起来,每条边有一个时间花费和金钱花费,同时,在每个点上,可以跳转到(ki+1)%k 的空间里,不同空间的边权值不变。另外,在每到达某个空间的某个顶点时,可以买一包盐,卖一包盐,或者什么也不做,买卖的时间不考虑。相同的顶点在不同的空间中盐的价格也不一定相同..现在给定顶点数n,边数m,盐的最大携带量b,空间数k,初始的金钱r,规定的时间t,问怎么走可以在t时

2016-09-26 18:09:18 325

转载 hdu 4111 Alice and Bob(中档博弈题)★ ★

1.每堆部是1的时候,是3的倍数时输否则赢;2.只有一堆2其他全是1的时候,1的堆数是3的倍数时输否则赢;3.其他情况下,计算出总和+堆数-1,若为偶数,且1的堆数是偶数,则一定输;4.不在上述情况下则赢。#includeint main(){ int js=0; int _case,i,n,x; int flag1,flag2,flag,sum;

2016-09-26 10:18:35 423

转载 hdu 4117 GRE Words (AC自动机+线段树)★ ★

题意:给出n个字符串,每个字符串有一个权值,我们从中拿出若干个来,这若干个字符串,前一个必须是后一个的子串,问,我们能拿出的这若干个串的权值和最大是多少。解题思路:AC自动机。字符串匹配算法,大概就是kmp,ac自动机,后缀数组,后缀自动机这么几种了。对于这题,我们很容易想到暴力dp,用kmp去匹配,总复杂度可以做到o(n^2+2*m)(n为字符串个数,m为所有字符串的总长),但这样还不够

2016-09-26 10:10:53 397

转载 HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )

给你最多1000个圆,问画一条直线最多能与几个圆相交,相切也算。显然临界条件是这条线是某两圆的公切线,最容易想到的就是每两两圆求出所有公切线,暴力判断一下。可惜圆有1000个,时间复杂度太高。网上题解的做法是枚举每个“中心圆”,求出这个圆与其他圆的切线,然后按极角排序,扫一圈。把每条切线看成扫入线——添加一个圆,或扫出线——删除一个圆。形象一点就是一条与中心

2016-09-26 10:06:57 746

转载 约瑟夫环问题

一般约瑟夫环问题:N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。实际上对于约瑟夫环问题,最常见的有2种解法。第一种就是直接暴力模拟链表,当然这种做法的时间复杂度很高,而且实现起来还很麻烦。第二种方法就是利用

2016-09-24 22:57:51 1094

转载 约瑟夫环数学递推公式及其证明

对于约瑟夫问题,今天看到了一篇好帖子,是用数学方法处理的,感觉还不错的无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的

2016-09-24 22:41:42 1791

原创 Educational Codeforces Round 12 E. Beautiful Subarrays 预处理前缀+字典树优化★ ★

题意:求规模为1e6数组中,连续子串xor值大于等于k值的子串数;思路:xor为和模2的性质,所以先预处理之后,可以枚举这种确实子串区间的方法为O(n^2);优化?把每一个前缀xor扔到二叉树中,从根节点出发,以高位前缀值的二进制数构造一颗二叉树,这样就可以在构造的时候,实现对子树节点个数的求解;之后在线求解到当前节点的可选的前缀xor的个数,即以k为主线

2016-09-24 22:26:20 551

转载 hdu 1693 Eat the Trees (基础插头dp)

题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法。这题是插头dp,刚刚学习,不是很熟悉,研究了好几天才明白插头dp的方法,他们老是讲一些什么轮廓线啊,插头啊什么的,刚开始完全不知道这些事干什么的,看完cdq的大作后也是一头的雾水,看代码,画图,一步一步的推,终于明白了,那个是为什么,这里讲一讲。轮廓线表示的是当前插头的状态,

2016-09-22 21:18:20 316

转载 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC(矩阵快速幂+高次幂取模)★ ★

题意:已知f(n)=2*f(n-1)+f(n-2), g(n)=∑f(i)²(0思路:OEIS查到了g(n)=f(n)*f(n+1)/2, f(n)可以用矩阵快速幂求得, 有一个定理可以用于高次幂取模 x^n %k=x^(n%phi(k)+phi(k)) %k, 此处phi(x)为欧拉函数,但是在对幂次取模时存在一个除2,又因为(a/b)%k=(a%bk)/b,所以这个问题得以解决(这个方

2016-09-19 19:55:30 408

转载 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5901 Count Primes (模板 + 数论知识)★

题目大意:求 1−n(n≤1011) 之间有多少个素数,解题思路:板子题目,可以参考 Codeforces 655 F这里要用到Meisell-Lehmer的n^(2/3)的方法,借用了一大牛的板子。#include #include #include #include #include #include #include #include

2016-09-19 19:52:48 581

原创 2016 ACM/ICPC Reginal Shengyang hdu 5893 List wants to travel(树链剖分 线段树区间更新真蛋疼)★

题意:一棵无根树,两种操作:改变路径上的颜色,和询问路径上有多少段颜色。题解:裸的树链剖分+线段树维护颜色段,唯一难点就是合并的时候 如果两个区间段颜色一样,ans--,链同理。所有的区间更新都需要pushdown,好蛋疼啊,WAWAWAWAWA#include #include #include #include #include #

2016-09-19 19:48:19 924

转载 POJ 3237 Tree (树链剖分 路径更新)

比裸的树链剖分多个区间更新/* ***********************************************Author :kuangbinCreated Time :2013/8/17 4:04:42File Name :F:\2013ACM练习\专题学习\数链剖分\POJ3237Tree.cpp***********************

2016-09-19 15:21:42 333

转载 SPOJ 375. Query on a tree (树链剖分入门)

题意:两个操作,树上查询某条路径最大值,修改某个边权值#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define L(i) i<<1#d

2016-09-19 15:18:21 362

转载 树链剖分讲解

“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。    树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。    记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的链的顶端节点,fa[v]表示v的父亲,son[v]表示与

2016-09-19 14:43:43 271

原创 2016 ACM/ICPC Asia Regional Qingdao hdu5880 Family View

题意:敏感词屏蔽,给一堆敏感词,给一段文本,要求把文本中所有的敏感词用*代替。题解:对敏感词建出AC自动机,在AC自动机上跑文本,就可以得到文本的每个前缀的最长匹配后缀,扫一遍即可得到结果。#include #include #include #include #include #include #include #include #include #includ

2016-09-19 09:48:33 581

原创 2016 ACM/ICPC Reginal Shengyang hdu 5900 QSC and Master (老是忘记枚举第三层循环)

题意:给出n(nkey,value> 如果相邻两个pair的key不互素,那么可以将这两个pair拿取,得分加上两个value。 问最大得分。题解:dp【330】【330】【2】分别代表i到j区间不一定消完和一定消完的最大价值,然后区间dp即可。尴尬的是,我又忘记第三层循环,卡到死。。。#include #include #include #include

2016-09-19 08:59:00 464

原创 2016 ACM/ICPC Reginal Shengyang hdu5898 odd-even number(上下要统一,前导0)★

题目非常明白,一个数如果连续的奇数的个数都为偶数,而连续的偶数的个数都为奇数,那么则符合条件,要求计算出给定的区间里面所有的符合条件的数的数量题解:dp【i】【j】【k】分别代表当前位置,值的奇偶,长度奇偶,套一边模板就ok。不过要注意前导0的问题,还有就是下面记忆化搜索记录值时也要加上前导0的判断。#include #include #include #in

2016-09-19 08:51:36 551

原创 2016 ACM/ICPC Reginal Shengyang hdu 5894 hannnnah_j’s Biological Test (数学推导 Lucas)

题意:一个大小为 nn 的环,选 mm 个位置涂黑,要求相邻两个黑点之间至少间隔 kk 个白点,问方案数。题解:考虑每两个人之间隔了几把椅子。可以发现,一共有M个数,和为N-M,且每个数都>=K.将每个数都减去K-1,即得到:M个正数之和为N-K*M,方案数为C(N-K*M-1,M-1).需要乘以圆排列的N,同时每个方案被算了M次,再除以M。答案为:C(N-K*M-1,

2016-09-18 20:28:31 613

转载 2016 ACM/ICPC Asia Regional Qingdao hdu5890 Eighty seven(DP+bitset优化妙用)

题意:50个数,10W个询问,每次问删掉第i,j,k个数后,是否存在一种选10个数和为87的方案,只需要输出 ’Yes’ 或者 ’No’题解:暴力:不同的询问大概2W个,每个暴力bitset DP,抠一抠能卡着过。优化1:先求出一组解,如果询问和解没交就是’Yes’,否则暴力,不同的询问大概1W个;优化2:先预处理出所有询问的答案,能方便的复用之前的DP数组,不用每次从头开始重新求。

2016-09-18 18:44:33 384

转载 POJ 3678 Katu Puzzle (2-SAT)

给出两两之间的AND,OR,XOR的值,判断有没有解典型的2-SAT#include#include#include#include#include#includeusing namespace std;const int MAXN=2200;//bool visit[MAXN];queueq1,q2;//vector建图方法很妙vector

2016-09-17 22:42:24 243

转载 POJ 3648 Wedding(2-SAT)

【题意】:有一对新人结婚,邀请n对夫妇去参加婚礼。有一张很长的桌子,人只能坐在桌子的两边,还要满足下面的要求:1.每对夫妇不能坐在同一侧 2.n对夫妇之中可能有通奸关系(包括男男,男女,女女),有通奸关系的不能同时坐在新娘的对面,可以分开坐,可以同时坐在新娘这一侧。如果存在一种可行的方案,输出与新娘同侧的人。输出任意一组解,点的编号从0~2n-1取和新郎同一

2016-09-17 22:41:13 241

原创 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5881 Tea (模拟构造)★

题意:有一壶水, 体积在 LL 和 RR 之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不大于1. 你无法测量壶里剩下水的体积, 问最小需要倒水的次数。RR 之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不大于1. 你无法测

2016-09-17 19:25:09 832

原创 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5884 Sort (智商+队列)★

借鉴别人的思路,好简单啊 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define L(i) i<<1#define R(i)

2016-09-17 19:13:41 467

原创 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5884 Sort (二分+优先队列)★

题意:给定n个序列,以及他们的长度,问在总花费不超过T,每次合并的序列个数不多于k的情况下,k的最小值,合并的代价是合并序列的总长度和。题解:二分k,再用优先队列取出前k个小的,模拟下去,不过这样会T。由于ai小于1000,所以可以记录这1000个数出现的次数,将出现的数字压入队列,每次出队的时候判断一下就不T了。不过还有一个问题,比如长度为6的序列,每次取前3个,最后一次只会取最后两

2016-09-17 18:54:03 472

原创 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5889 Barricade (最短路+最小割)

题意:题意转化过来就是给定一张图,每条边长度都是1,还有一个切割这条边的代价。现在有一伙人从第n个点到第1个点走最短路,问最少需要花费多少代价阻断这伙人的路线题解:很显然就是处理出最短路,按照最短路建网络流的边,跑一遍最小割就好。#include #include #include #include #include #include #include #includ

2016-09-17 18:36:25 466

原创 POJ 3207 Ikki's Story IV - Panda's Trick(2-sat)

平面上,一个圆,圆的边上按顺时针放着n个点。现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接。给你的信息中,每个点最多只会连接的一条边。问能不能连接这m条边,使这些边都不相交。解题报告:题意可能刚开始不是很好理解,比如1 5连边,2,6连边,由于点是顺序排列的,一画图就可以发现,这两条边必须一个从圆外面连,一个从内部连,否则就会相交。如果再加入3

2016-09-17 18:10:55 248

转载 HDU 1814 Peaceful Commission (2-SAT) O(nm)做法

题意:找出字典序最小的解分析:直接暴力枚举DFS,首先将所有的点都置为为染色,然后我们从第一个点开始DFS染色,我们先尝试将i染           成红色(答案中的颜色),将~i染成蓝色,然后dfs i的所有后继并染色,如果对于后继j没有染色,那么将j然           后为红色,~j染成蓝色。如果后继j已经被染成蓝色,则说明不能选则i,如果j已经染成红色,则说明可以

2016-09-17 09:52:26 367

原创 HDU 3622 Bomb Game【2-SAT + tarjan】

题目大意:有N对点,给定这N对点的坐标,现在要求找出一个最大的半径R,使得可以从每对点中选择一个点,并且这N个点以自己为圆心,半径为R的圆两两不相交。       2-SAT问题解法:对于每一对点,我们且称之为“兄弟点”;对于这2*N个点,如果两个点之间“矛盾”,对于本题即两个圆相交,则连一条边。对这个图求强连通分量,然后看是否有某对点属于同一个强连通分量。如果N对点每一对都属于不同的强连通分

2016-09-16 23:17:45 250

转载 2-SAT 解法浅析

2—sat建图总结1.元素关系有以下11种A[x]NOT A[x]A[x] AND A[y]A[x] AND NOT A[y]A[x] OR A[y]A[x] OR NOT A[y]NOT (A[x] AND A[y])NOT (A[x] OR A[y])A[x] XOR A[y]NOT (A[x] XOR A[y])A[x] XOR

2016-09-16 21:25:17 1025

原创 Codeforces Round #347 (Div. 2) D. Graph Coloring(强联通分量缩点+2-SAT)

题意:给你n个点m条边,每条边有一种颜色(B或R),每选择一个点可以使与其相连的所有边的颜色翻转,问最少需要选择多少个点,使得所有边的颜色相同,输出操作数以及操作哪些点。(1 ≤ n,m ≤ 100000)思路:我们可以分别对把所有边变成B和R分别考虑。因为每个点不会操作2次或者更多,因为操作两次相当于不操作,操作三次相当于操作一次。

2016-09-16 18:08:56 309

空空如也

空空如也

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

TA关注的人

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