自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Everything can be done!

学习充实自己,使自己变得更加强大

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

原创 扔盘子(RMQ + 二分)

扔盘子 李陶冶(命题人)基准时间限制:1 秒 空间限制:131072 KB 分值: 10有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。如图井和盘子信息如

2017-09-28 17:14:26 198

原创 51Nod 拉勾第一题(数位dp)

题意:找出1 ~ n中所有的数中的1的个数。分析:数位dp,调着调着就出来了。记录了一下前面数字中1的值,然后进行操作的时候的时候要加上,然后记录的时候需要减去。#includeusing namespace std;typedef long long ll;typedef pair P;#define fi first#define se second#defin

2017-09-28 16:22:16 182

原创 poj3237(树链剖分边维护+线段树区间更新)

刚开始不会对边进行操作,刚开始一直WA,然后去写了一下spoj375,对边维护的规则熟悉了一下,然而终于发现了错在了哪,原来是要加上u != v。区间更新的话就是用一个flag值代表,0代表不需取相反数,1代表需要。因为区间取的是最大值,然而最大值取相反数之后就是最小,最小数取相反数就是最大值。所以区间要维护一个最大值和一个最小值//#include#include#inclu

2017-09-28 12:02:19 314

原创 spoj QTREE (树链剖分边维护)

边维护的话就是把n - 1条边转换为n - 1的点来表示,选用dep深度更大的那个点。然后在区间维护和查询的时候都需要将u -> son[u]放线段树中,还要判断是都是u != v一般是开2-num长度的线段树PS:刚刚一直不知边换成点的具体操作,跪了很多次//#include#include#include#include#includeusing namesp

2017-09-28 11:34:01 201

原创 hdu3966(数链剖分+线段树区间更新)

线段树区间更新得通过新映射的区间进行更新。PS:当初ad数组开小了,wa了好好几次,可惜#includeusing namespace std;typedef long long ll;typedef pair P;#define fi first#define se second#define INF 0x3f3f3f3f#define clr(x,y) m

2017-09-27 14:20:27 523

原创 Frequent Subsets Problem(北京网赛)

题意:给出一些集合,找出出现的个数大于等于一个值的子集合的个数思路:因为每个集合的数都是在#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair P;#define fi first#define se second#define INF

2017-09-26 16:54:26 191

原创 poj3528,hdu3662三维凸包模板题

#include#include#include#include#include#include#define PR 1e-8#define N 510using namespace std;struct TPoint{ double x,y,z; TPoint() {} TPoint(double _x,double _y,double _z):x(_

2017-09-26 10:48:27 200

原创 graham模板整理

感觉以前写的graham代码风格太差了,然后又重新整理了一份struct Node{ double x,y; int pos; double val;}a[maxn],s;double across(Node x,Node y,Node z)//z在x,y连线的顺时针为负{ return (x.x - y.x) * (z.y - y.y) - (

2017-09-26 10:34:21 258

原创 hihocoder1582(凸包)2017北京网赛

好久没写凸包,忘记了很多细节,导致赛场没做出来。题意,给出一些坐标点,任务是把这些点分成A类和B类,使得无法用一条直线分隔开这些点,输出YES即每个点放在A类还是B类(任意分)。如果做不到,就printf(“NO\n”);对于大于三个点时,跑一遍凸包。如果凸包点个数==n;说明所有点都在凸包边上,选择两个不相邻的点归为一类即可。如果凸包点个数n==3是特判是

2017-09-26 10:23:46 295

原创 lightoj 1348 (树链剖分入门)

题意:修改一个节点上的点权,然后查询两个节点之间的路上的所有的节点的权值和。思路:用树链剖分一下,然后直接写一个线段树维护一下区间和,更新直接在线段树上更新就行。#includeusing namespace std;typedef long long ll;typedef pair P;#define fi first#define se second#define

2017-09-23 09:00:32 199

原创 hdu 6006(java 大数,三角形的外心)

因为有精度误差,所以用Bigdecimal直接模拟就行import java.util.*;import java.math.*;public class Main{ public static BigDecimal fun(BigDecimal x) { return x.multiply(x); } public static void main(String

2017-09-21 20:17:24 375

原创 hdu 6215(技巧)

题意:给出一个数组,然后将里面连续递减的删去,然后形成一个新的数列,继续这样操作,求最后形成的数列。PS:北大20分钟过的题最后还是没有过。关键是这个思想确实比较强大。用一个左右指针,然后更新,然后维护。看了北大队员的代码,自愧不如。#includeusing namespace std;typedef long long ll;typedef unsigned

2017-09-18 19:46:19 607

原创 hdu6208

直接去个重,然后strstr判断子串就行#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair P;#define fi first#define se second#define INF 0x3f3f3f3f#define clr(x,

2017-09-18 12:15:59 460

原创 区间第k大(主席树)

学了一下主席树模板题,当初看了网上的主席树讲解都没有看懂,后面看了哔哩哔哩的uestc的主席树,终于看懂了思想。每次更新的复杂度都为logn。每次更新的话就是对要更新的点路径上的点重新更加一个,然后进行对没有影响的那些进行连边。然后用一个root记录每一个线段树的根节点下标。感觉还是不能讲明白,还是看看B站的视频吧。//#include#include#includ

2017-09-14 20:23:16 265

原创 codeforces846C(前缀和)

题意:给出一个数列,下标为0 - n - 1。然后求x,y,z,使得sum[0,x) - sum[x,y) + sum[y,z) - sum[z,n)的值最大。思路:相当于数列的所有的和sum - 2 *   (   sum[x,y) + sum[z,n) )最大,所以要使得sum[x,y) + sum[z,n)最小。这样的话先预处理一下从后往前的最小,即处理出对于i来说sum[z,n)最

2017-09-14 11:06:32 376

原创 Codeforces846D(二分+树状数组)

题意:每次对矩阵进行更新,有一个时刻。然后问什么时候使得矩阵中有k * k的矩阵被更新了。思路:二分时间,然后判断每一个时间是否复合,注意这里的时间不一定是连续的,所以需要离散化。每次判断的时候需要对进行重新操作,判断是否符合,用到了二维树状数组。#include#include#include#include#include#includeusing namespa

2017-09-14 10:53:53 359

原创 hdu6201(spfa)

题意:给你一棵树, 树上有点权, 要求选择起点S和终点T, 要求T-S-sum 最大, sum为S到T的边权。思路:根据题意就可以建图建立源点和汇点。源点连所有的树上点, 边权为 a[i], 所有树上点在连接 汇点, 边权为-a[i]. 然后在根据树建图。 spfa跑个最长路即可。#includeusing namespace std;typedef l

2017-09-12 19:20:34 370

原创 STL 实现最长上升,最长递减序列

#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair P;#define fi first#define se second#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x)#d

2017-09-12 13:01:48 264

原创 新疆网赛G题(KMP+树状数组)

/#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair P;#define fi first#define se second#define INF 0x3f3f

2017-09-09 21:05:20 220

原创 Loj 515(bitset)

题意:给出n个区间,然后从这些区间中取一个数,然后求将取出的数的平方相加得到的数的种类数。思路:因为n #includeusing namespace std;typedef long long ll;typedef pair P;#define fi first#define se second#define INF 0x3f3f3f3f#define cl

2017-09-09 10:49:43 256

原创 hdu 6085(bitset优化)

题意: 存在两个长度分别为 n,m 的数组 A,B 。有 q 个询问,每个询问给出一个数字 k ,可以得到使得 AimodBj=k 的种数。求该种数的奇偶性。思路:对A数组建立一个bitset,然后对于B数组,对它的倍数建立一个bitset,当枚举i为余数的时候,大于i的B[j]的倍数都存放在了第二个bitset里面了。因为这里讨论的奇偶性,所以当一个地方出现两个数的时候,直接flip

2017-09-09 10:07:43 437

原创 hdu 4333(扩展KMP)

题意:给一个数字,每一次把它的最后一位拿到最前面,一直那样下去,分别求形成的数字小于,等于和大于原来数的个数。例如:134可以形成134,341,413三个数,所以分别是1,1,1。 分析:由于长度为len的字符串形成题目要求的串的个数为len,那么我们可以把原来的两个串T连接起来形成字符串S,然后找S的每个后缀的前len个元素即可。 这里主要是如何比较的问题,对于字符

2017-09-07 20:20:37 296

原创 hdu 6153(扩展KMP)

题意先翻过来,后缀先变前缀(不想描述后缀啦^_^)给出两个串,这里我们记作S串和T串对于T串的一个前缀t串,求出t串在S串中出现了多少次,这个小t串对答案的贡献就是”次数 * t的长度”求T串所有符合条件的前缀对答案的贡献和解决    对拓展KMP没经验    不管三七二十一,先翻转过来再说…    重点,我们求出在S串里,以下标i开始,有多长的

2017-09-07 17:39:19 238

原创 poj 2186 (tarjan 缩点)

题意:给出一个有向图,找到能被所有的点都能达到的点的个数。思路:首先他们都在一个联通块中。然后找出度为0的那个联通块,就是答案。//#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typ

2017-09-06 18:34:43 278

原创 poj 3690(二维哈希)

感觉二维哈希的思想跟一维的差不多,比如要匹配的字符串是p *q的大小,先保存好以下标为i,j为一列的末尾元素的hash值,然后一q大小的列 进行 行的拓展,行列的思想都一样,滚动。//#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsig

2017-09-05 21:20:28 438

原创 poj3461 hash字符串匹配

可以用KMP写,然而发现hash不用写很长,而且好理解。定义一个匹配串的hash值为c[1]b^ (m - 1) + c[2]b^(m - 2) + …… + c[m - 1]b + c[m];然后直接比较在模式串上子串的hash值是不是等于匹配串,是的话就匹配了。b的选择一般是质数,为了溢出也是正数一般数都定义为usigned long long;//#include#

2017-09-05 17:48:06 375

原创 hdu 1530最大团模板

求一个图中的最大的点的集合,集合要求集合内的点相连为完全图。#include #include #include using namespace std;const int maxn = 60;int g[maxn][maxn], dp[maxn], stk[maxn][maxn], mx;int dfs(int n, int ns, int dep){

2017-09-02 21:24:49 261

空空如也

空空如也

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

TA关注的人

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