自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NOIP模拟题 Day2 化简(大模拟)

两个栈,一个符号栈(zhan1),一个多项式栈(zhan)。zhan[i][j]:表示第i个多项式第j次项的系数。 遇到')',把它到上一个‘(’之间的‘+’,‘-’,‘*‘’全都处理出来。优先级:'*' >'+','-' >'(',')' #include<iostream>#include<cstdio>#include&l...

2018-11-09 15:08:17 291

原创 P3402 【模板】可持久化并查集

其实看看代码自己就可以懂。注意: 1.并查集不压缩路径,压缩了就回不到压缩之前的状态了。2.并查集合并时,小的往大的合并,启发式合并。3.对于第i步(不管什么操作)操作都要把root[i] = roo[i-1]//我在合并时,如果两个祖先一样就直接continue了,没把root[i]赋值为root[i-1],一直没看出来,拖了一个多月才过。。。。#include<iost...

2018-11-08 20:26:37 254

原创 bzoj4477: [Jsoi2015]字符串树(可持久化trie树+lca)

dfs时在父亲的基础上加一个字符串,即它和父亲的连边所代表字符串。//一定要记得把父亲的信息完整的传递啊。利用树上差分的思想,u到v最短路上有多少字符串以s为前缀 = 根到u的路径上有多少字符串以s为前缀+根到v的路径上有多少字符串以s为前缀 - 2 * 根到lca(u,v)的路径上有多少字符串以s为前缀其实是到板子题,把板子背好就好。//注意数组开的大小啊,我sum开小了最开始一直re....

2018-11-08 20:19:02 333

原创 JZOJ5400 Repulsed(树上dp+贪心)

对于一个点,它被它的k级父亲覆盖肯定是最优的。f[i][j] :i这个点的子树中和它距离为j的待灭点数。g[i][j]:i这个点的子树中和它距离为j的灭火器能灭点数。f[i][k]:一定是在i这里灭是最优的,因为相距k.对于与i相距z的的灭火器(所在点)d2和与i相距w的待灭点d1,如果z + w = k或z + w = k-1(如果再往上走d1,d2就相距k+1就灭不到了)。...

2018-11-08 16:43:38 313

原创 cross(idy002的神奇并查集)

纵坐标相同的点连边,横坐标相同点点连边。不在同一个联通块的点互不影响,所以可以用乘法原理把每一块的答案乘起来。对于一块,有多少个不同的x就有多少条与y轴平行的直线,记为x条;有多少个不同的y就有多少条与x轴平行的直线,记为y条。所以总直线数是x+y条。每条直线可以选或不选,所以每个联通块的答案为2^(x+y).但是对于边数比点数小的联通块来说(边数=点数-1),x+y = 点数+1,不...

2018-11-07 21:05:49 209

原创 星际旅行(思维很好的欧拉路)

把每条边拆成两条。欧拉(回)路,只有0或2两个奇点。因为2条边经过一次,m-2条边经过两次,可以考虑删除两条边,使剩下的图有0或2两个奇点。所以这两条边要么是任意两个自环,要么是有一个公共端点的两条边,要么是一个自环和任意一条边。我们要判断,整个图联不联通,因为要经过m条边。然而我们判断所有边联通的点联不联通,不是判断所有点联不联通。如下图,所有点不联通,但是能找到航线。#inc...

2018-11-07 14:58:32 413

原创 cut砍树。

 #include<bits/stdc++.h>using namespace std;const int N = 105;const int lim=31623;int cnt;long long n,k, p[2*N*lim], a[N], ans;int main(){ scanf("%lld%lld",&n,&k); fo...

2018-11-07 14:24:13 353

原创 Dinner (二分+二分+贪心)//其实正解是倍增

Dinner【问题描述】 清儿今天请好朋友们吃饭,一共N个人坐在坐在圆桌旁。 吃饭的第一步当然是点餐了。服务员拿来了M份菜单。第i个人阅读菜单并点出自己喜欢的菜需要花费时间T[i]。 当一个人点完菜之后,就会把菜单传到他右手边的第一个人。 M份菜单是同时发出的,每个菜单只能同时被一个人阅读。 清儿希望知道如何分发菜单,才能让点餐的总时间花费最少呢?【输入格式】 输入文件名为dinner.i...

2018-11-06 16:28:34 726

原创 count

count【问题描述】李华终于逃离了无尽的英语作文, 重获自由的他对一棵树产生了兴趣。首先,他想知道一棵树是否能分成大小相同的几块(即切掉一些边,使得每个连通块的点数相同)。然后,他觉得这个问题过于简单,于是他想知道一共有多少种方案可以把这棵树分成大小相同的几块。然后他发现自己不会了,于是向聪明的你求助。【输入格式】第一行一个数,表示数的大小。第二行至第N行,每行两个数x,y表示x和...

2018-11-06 16:14:29 304

原创 noi2009 管道取珠(神dp...)

管道取珠是小X很喜欢的一款游戏。在本题中,我们将考虑该游戏的一个简单改版。游戏画面如图1所示:(图1)游戏初始时,左侧上下两个管道分别有一定数量的小球(有深色球和浅色球两种类型),而右侧输出管道为空。每一次操作,可以从左侧选择一个管道,并将该管道中最右侧的球推入右边输出管道。例如:我们首先从下管道中移一个球到输出管道中,将得到图2所示的情况。(图2)假设上管道中有n个球, 下管...

2018-11-05 22:11:54 213

原创 [USACO09MAR]清理Cleaning Up(dp)

题意翻译很久很久以前,约翰只会做一种食品;而现在约翰能给他的NNN (1≤N≤40000)(1 \leq N \leq 40000)(1≤N≤40000)头奶牛供应MMM (1≤M≤N)(1 \leq M \leq N)(1≤M≤N)种不同的食品。但奶牛们非常挑剔,iii号奶牛只吃食品PiP_iPi​ (1≤Pi≤M)(1 \leq P_i \leq M) (1≤Pi​≤M)每天,奶牛们按...

2018-11-05 19:47:50 339

原创 2015 noip 运输计划(lca +二分+树上差分)

最长的路径最短,可以考虑二分ans。验证ans成不成立。如果能找到一条边,删去这边后,所有大于ans的路径都小于ans 了,那么成了。这条边一定要被所有大于ans的路径经过,并且是所有满足这个条件的边的边权最大的那条。计算树上一条边被经过次数差分啊! 起点+1,终点+1,lca-2.(lca可以用倍增,tarjian,树剖,个人喜好吧)。对于一个点,以它为根的子树的权值和(权值和包...

2018-11-05 00:24:36 190

原创 noip2013 华容道(bfs + spfa)

//拖了两周,终于把这道题A了//没事千万不要在bfs和spfa里memset(打板子打习惯了memset),我就t了好久,泪流满面。还有一定要把哪个是目标,那个是起点的坐标看清楚啊,我调了1个小时才看出来。。。蒟蒻的我不想说什么了。。。。这道题求每次游戏所需要的最少时间,可以考虑建图跑spfa求最短路。怎么建?//不建让空格到处乱跑,bfs到指定初始棋子移到了目标位置。就停止,这样做...

2018-11-04 14:45:41 211

原创 达哥的飞(fly)题(树状数组)(非常玄妙)

郭神有n条位于第一象限内的线段,给出每条线段与x轴和y轴交点的坐标,显然这样就可以唯一确定每一条线段.n条线段和y轴交点的纵坐标分别为1,2,3,4...n.我们记和y轴交点纵坐标为i的线段和x轴交点的横坐标为x[i]+1,x[i]按这样的方式生成:x[1]由输入给出.x[i]=(x[i-1]+a) % mod,2<=i<=n.即:如果x[3]=4,则与y轴交点纵坐标为3的抛物...

2018-11-04 10:32:47 261

原创 P3940 分组(贪心+并查集)

因为字典序最小。组越少 + 越前面的组size越小!考虑数据范围131072!好巧啊!131072 + 131072 = 262144 = 512 * 512.也就是说任意两种颜色之和小于等于512的平方。。。。那么我们对于一个元素i可以从512倒着枚举z(这样可以剪掉平方比i小的,省时),表示它和另一个元素j之和是z的平方。对于k == 1;因为组内元素,必须有序(每个小组都...

2018-11-02 22:02:12 371

原创 任(一道思维巧妙的矩形前缀和问题)

本题一开始就没准备写正解。。。暴力(70):先把前两个点,bfs出来就好(信息奥赛一本通,病毒)。对于n = 1和n = 2的情况。莫队啊!考虑加入一列对答案的影响。如果n=2,先处理询问端点在同一行的,再处理不同行的。#include<bits/stdc++.h>using namespace std;int m, n, qq, xm, xn...

2018-11-02 17:36:56 344

原创 便(带权并查集)( AT2033 マス目と整数 / Grid and Integers)

【输出格式】T行.第i行是第i组数据的答案.有合法方案时输出一行Yes,没有时输出一行No.62 2 31 1 01 2 102 1 202 3 51 1 01 2 101 3 202 1 302 3 402 2 31 1 201 2 102 1 03 3 41 1 01 3 103 1 103 3 202 2 41 1 01 2 102 1...

2018-11-01 23:58:54 318

原创 引水入城(记忆化搜索+区间完全覆盖问题)

每个第一行的城市,在最后一列能影响到的一定是一段连续区间。如果不连续,假设是两段区间,那么两段区间中肯定不能被其他第一行的城市影响到,如果影响到,如下图如果蓝色和红色相交,那么蓝色一定可以更新到红色的。所以假设是两段区间,那么两段区间中肯定不能被其他第一行的城市影响到,而这种情况就是题目所谓不合法情况。那么我们就记忆化搜索,把第一行每个城市能影响到的最后一行的连续区间大小处理出来。...

2018-11-01 23:26:49 217

原创 随 (rand)(巧用快速幂)(期望dp)

【题目描述】给出n个正整数a1,a2…an和一个质数mod.一个变量x初始为1.进行m次操作.每次在n个数中随机选一个ai,然后x=x*ai%mod.问m次操作之后x的取值的期望.答案一定可以表示成a/b的精确分数形式.a和b可能很大,所以只需要输出a*(b^(10^9+5))模10^9+7的结果.【输入格式】第一行三个整数n,m,mod.接下来一行n个空格隔开的正整数a1,a2…an...

2018-11-01 15:59:27 319

原创 P & Q(dp)

这道题,我乱写。。题都读错了,没看到q,p只能在两个不同的取。错误算法还对(100)了。正解:f[i][j]:表示第i个数,q有j个没有匹配,的p没有匹配数.二分总答案数。只要最后满足f[1+n][mid] >= mid 就好,处理完n个数,q有mid个没有匹配,p有大于等于mid个没有匹配.一定可以匹配出mid个。对于第i个数,如果它可以分成的p的数量和q 的数量之和...

2018-10-31 16:06:54 774

原创 graph/leave.(二进制分组,多起点spfa)

二进制枚举,把所有的和1相连的点分成两组,一组为起点,一组为终点=。=把所有起点一起跑spfa。注意重边。我用了双向队列,优化一波=、=#include<bits/stdc++.h>using namespace std;int n,m;int tp, nex[200005], tov[200005], h[200005];int head, tail, v...

2018-10-31 15:17:07 182

原创 matrix(找规律)

然而一个一个的暴力,显然可以得60分=。=10^5,一看就o(n)。。。。你先只考虑n = 3,观察第一行每个数和第一列每个数的贡献。因为f[i][j]是由f[i-1][j]和f[i][j-1]得到的。所以第一行第一个是没有贡献的。第一行的第j个数会乘n-1个b和n-j个a..就会到n行n列上。在乘上它用几种方法走到n行n列上。就是每个数的贡献第一列同理。#inc...

2018-10-31 11:59:42 420

原创 bzoj1070(修车)(费用流)

建图重要。m个工人, n辆车源点向每辆车连一条容量为1费用为0的边。把每个工人拆成n个,第i个工人的第j个节点表示,第i个工人修倒数j辆车。每辆车向这n*m个工人连一条容量为1费用为这个工人修这辆车的时间*这个工人倒数第几个修这辆车。因为修一辆车只会使在它后面修的都+修这辆车的时间。//我服了,烂费用流板子,一直t,狗了一个别人的spfa,才过。我就吐槽一句,是谁教我的费用...

2018-10-30 23:31:27 236

原创 你相信引力吗?(一道单调栈的题)

这道题我想了很久,没想出来。首先我们要把这个环,找一个断点,给断成序列。当然是从最大的点断开是最好的,不会有两个点(i,j),如下图,蓝色一段是不可能使(i,j)危险的,因为i,j 小于最大值。使i,j成为危险的只有可能i到j中没有严格大于i和j的。这样,我们先不考虑第一个点为右端点的情况,正着跑一遍单调栈(单调递减),假设i要进栈,如果栈顶小于i ,那么弹栈,i和栈顶...

2018-10-30 20:23:05 2935

原创 树上路径(点分治板子题)

树上路径!!!点分治处理。(就是在树上分治处理,把树分成小树,再分成更小的树处理)找最小的满足>=S 并且<=E的路径。假设从随便一个点开始dfs,复杂度o(n);然而从重心开始dfs,复杂度为O(logn);重心:删掉这个点以后,剩余的森林的最大的size最小的点。注意一下:合并路径时,两条路径不能有相同的祖先(处理某点,路径必须是过这个点,且路径的两端点不在...

2018-10-30 17:43:36 501

原创 gcd(打表的题)

把表打出来,打满足条件的a.b和他们的gcd也就是(a^b).发现满足条件的a - b = gcd(a,b) = a^b;令a-b = c;那么gcd(a,a-c)=c:就是a ^c = a- c;枚举c.#include<bits/stdc++.h>using namespace std;int n,ans;int main(){ freope...

2018-10-30 17:30:44 212

原创 big(某trie树题)

2x <  2^(n+1),所以2x /  2^n 不是1就是0,2x  %  2^n,就是第n位为0.2x最多n位,其实就是把2x的最高位移到最后一位。这个操作简称左移。其实所有数异或起来再左移和左移以后再异或是一样的。。。对手可以把x左移的时刻有m+1个。(0,1,2,3....m)如果对手把x 在i时刻左移。就相当与把a1 - ai个数左移以后异或的值再异或ai...

2018-10-29 21:00:10 207

原创 matrix(又是dp....)

f[i][j] : 处理到第i列,填了j行右区间(这些右区间的左端点都在i列或i列左边)。you[i]:有多少个右区间的左端点都在i列或i列左边。zuo[i]:有多少个左区间的右端点都在i列或i列左边。如何转移?先只考虑填右区间的情况。f[i][j]  = f[i-1][j] + f[i] + f[i-1][j-1] * (i - j + 1)。i-1列是已经填了j个。...

2018-10-29 20:38:30 188

原创 string(某道线段树题)

26棵线段树=。=区间修改。如果L,R这段区间升序,那么从a依次放到z,降序,从z放到a.怎么放呢?假设放b把l- r所有b取出。放到a后面。注意优化1.如果这段区间某字母的个数为0,就不用去放了2.查找某区间某字母个数时,如果另一个区间,包含查询区间,但这一区间某字母个数为0,就不用递归了。#include<bits/stdc++.h>using ...

2018-10-29 20:17:15 152

原创 停不下来的团长奥尔加(一道递推题,思维很好啊....)

停不下来的团长奥尔加【题目描述】奥尔加在一个长度为n+1的街道上跑着,初始,奥尔加在位置1上,他想要跑到 位置n+1去保护团员ride on。空旷的大路上难免会有暗杀者,当奥尔加走到位置i时,会有暗杀者出现,这时奥 尔加只能回到pi(1≤pi≤i)位置上,但在下次到达i的时候,暗杀者就不会出现(如果再到 达i还会有暗杀者),换言之,当奥尔加此时是第奇数次到达i的时候,下一步会走到pi, 第偶...

2018-10-27 22:41:45 3187 3

原创 bzoj 4152(最短路)(优先队列优化迪杰斯特拉)

先按横坐标从小到大排序,相邻点连边,边权为横坐标之差。再按纵坐标从小到大排序,相邻点连边,边权为纵坐标之差。然后最短路就好。//最开始想用最小生成树+dfs,然后边权最小不代表1到n的距离最小。//迪杰斯特拉:蓝白点思想,最开始所有都是除了起点外所有都是白点,把dis赋为最大。如果蓝点能使任何一个白点到起点的距离变小,那么白点进队。每次从队里取出一个dis最小的点,然后把这个点的颜...

2018-10-27 22:14:32 302

原创 2017 noip 列队(动态开节点)

每行用一个线段树来维护在这行的人的信息,最后一列用一个线段树在这行的人的信息。一个人离队。如果这个人(代号人1)不在最后一列,出队,就把他的信息从他所在的行所代表的线段树中删除,再把在这一行最后一列的人(代号人2)的信息从最后一列删除,再把人2的信息加入到这一行的的线段树中。最后把人1的信息加入到最后一列所在的线段树的末尾。如果这个人在最后一列,把他他的信息从线段树里删除,再加到最后一...

2018-10-27 16:01:54 229

原创 water(最小生成树)

这道题有两个方法。1.最小生成树。(我改的此法,此法是正解)其实每个块所在位置的积水高度就是从这个块到矩形外的所有路径中最大值的最小值。对于一个块我们把它向四周的块连边,每条边的权值为两端点点权的最大值。(因为所有路径中最大值才有用)如果这个块在矩形的边缘,那么它向矩形外(虚节点)连边,边权为max(这块的高度,0)我们建一棵最小生成树(即是最大值的最小值),从虚节点开...

2018-10-26 18:48:07 315

原创 mine(一道dp)题

这道题就是个dpdp[i][j]表示正要推这个位置,这个位置字符是j时,使字符串合法的方案数。0对应这个位置字符是0;1对应这个位置字符是1;2对应这个位置字符是2;3对应这个位置字符是*;这个位置字符是0,1,2,*时,是什么,j就更新什么,这个位置字符是?,要讨论当这个位置是以上所有情况时。再考虑怎么转移就行了。//我的第三维,只在当j = 1时用到dp...

2018-10-26 17:29:02 244

原创 一道线段树+树状数组的题

水上由岐有一个长为n 的序列a1; a2; : : : ; an。接下来她要进行m 次操作。对于第k 次操作,她会指定jk,然后取出所有i ≥ jk 且ai ≤ ajk 的ai,将它们从小到大排序后按顺序重新放回之前的位置(只有这些数的顺序可能改变,其它数的位置不变)。定义一个逆序对(i; j) 为满足i < j 且ai > aj 的一个二元组。第一次操作前和每次操作结束后,...

2018-10-24 18:42:05 283

原创 P2324 [SCOI2005]骑士精神

本来是骑士跳,太多了,不如转换成空格跳。现在位置合法:现在位置上的东西和目标状态这个位置上的东西一样。现在位置不合法:现在位置上的东西和目标状态这个位置上的东西不一样。四种情况:空格要跳的位置的现在的骑士是合法的,和空格换了位置以后,不合法了;(原来空格所在位置上的目标骑士和空格要跳的位置上的现在骑士比较空格要跳的位置现在的骑士是不合法的,和空格换了位置以后,合法了;(原来空格...

2018-10-23 21:08:33 166

原创 NOI 2008 假面舞会

如果没有环那么最大的面具的种类为所有联通块最长链之和、最小为3,如果最长链之和<3,则无解;如果有环找出每个环的结点个数=、=面具种类数为所有环的结点个数的最大公约数x。为什么呢一个环1->2,2->3,3->4,4->5,5->6,6->1;那么可能的面具数为6或3种,是6的约数。如果公约数小于3无解,大于3有解,最小的面具种数一定是&g...

2018-10-23 15:42:00 343

原创 一道vector+map的dfs题

题目描述给出个数,从中选取一个子集,如果这个子集可以分成两个和相等的部分,那么方案数加1。求总方案数。输入格式第一行包含一个正整数n。接下来n行,每行n个数。输出格式一行包含一个数,表示结果。样例41234输出:3;n <= 20 ,给出的每一个数的绝对值<= 1e9;这道题3^20枚举。。。然而要超时,,,好吧我们先枚举3^10.用map...

2018-10-23 09:50:16 156

原创 一道时间分治的题

Graph输入文件:graph.in输出文件:graph.out时间限制:1 second空间限制:512 MB题目描述现在你要维护一张无向的简单图。你要执行如下操作:0:加入一条边。保证它不存在。1:删除一条边。保证它存在。2:查询两个点是否联通。输入格式输入的第一行是两个正整数n,m 。接下来 行,每一行三个整数opt,x,y 。其中opt 表示操作编号。输出格式对...

2018-10-23 09:36:01 418

原创 电压机制(树上差分)

电压机制(voltage)【问题描述】科学家在“无限神机”(Infinity Machine)找到一个奇怪的机制,这个机制有N个元件,有M条电线连接这些元件,所有元件都是连通的。两个元件之间可能有多条电线连接。科学家对这些元件可以任意地设置为“高电压”和“低电压”两种模式,如果一条电线的一端为高电压,另一端为低电压,这条电线就会产生电流。为了安全的研究“无限神机”,科学家需要找到一条电线,...

2018-10-22 20:54:40 274

空空如也

空空如也

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

TA关注的人

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