- 博客(13)
- 收藏
- 关注
原创 【bzoj】1036: [ZJOI2008]树的统计Count
题意 给一棵树,三个操作,单点修改,区间求和,区间最大。思路树剖代码#include <algorithm>#include <cstdio>#include <cstring>using namespace std;#define root 1,n,1#define ls l,m,o<<1#define rs m+1,r,o<<1|1inline void read(int&
2016-11-12 23:17:09
275
原创 【noip】花匠
题意 给你一列数字,要求去掉其中的一些(可以连续可以不连续),使得剩下的数字呈阶梯状排列。 即:5 3 5 3 5 (etc.) 问最多能去多少个?思路一开始以为是DP,但是感觉只能写O(n^2)的,不过网上也有O(n)的,等会儿研究一下。 这里用的是另外的方法。‘ 注意到连续的单调的一串数(不包括转折点)实际上可以转化成其中的任意一个数,比如说: 5 4 3 2 3的5 4
2016-11-12 12:40:29
341
原创 【学习笔记】树状数组求逆序对
直接上代码。 时间复杂度与归并排序一致,但是好写多了有木有。#include <cstdio>using namespace std;int a[6]={0,5,2,1,4,3};int c[6];int lowbit(int x){ return x&(-x);}void update(int pos,int val){ while(pos<=5){
2016-11-11 17:47:02
439
原创 P3373 【模板】线段树 2(区间增乘)
P3373 【模板】线段树 2题意 写一个数据结构(线段树),实现三个操作 1.区间加减 2.区间乘法 3.区间求和思路lazy tag 不解释显然是要打两个tag,一个add,一个mul(multiple)update过程与只有一个tag的情况大抵相同,唯一的不同之处是一进入过程就要先pushdownpushdown的过程很有意思,我一开始以为要按照先后顺序来处理两
2016-11-11 00:10:12
670
原创 树状数组的两种运用
运用1单点修改,区间查询。 add(pos,x)->在下标 pos 处加上 x query(pos)->返回 1 到 pos 的前缀和那么查询区间 [ l , r ]的操作就是query( r ) - query( l - 1 )例题——洛谷3374代码#include<cstdio>#include<cstring>#include<algorithm>#include<cs
2016-11-09 16:48:53
236
原创 HDU 2460 Network(tarjan边双联通)
HDU 2460 Network题意给一个连通无向图,在这个图的基础上给出一些连边的操作,问每次操作后还剩多少个桥?思路首先跑一次tarjan不用说,这里尤注意与求scc的tarjan不同,关于桥的判断,要在dfs结束回溯的时候直接if(low[v]>dfn[u])判断。然后对于每一个操作,判断要加的两个点在不在一个双连通分量,如果在一个双连通分量里面,不用进行任何操作(这样加边不会减少桥);
2016-11-04 10:52:26
337
1
原创 POJ 3279 Fliptile (搜索)
POJ 3279 Fliptile题意关灯问题,求最小的操作次数,并给出操作方式。传送门思路注意到该问题有如下性质:一旦第一行的操作状态确定后,其它所有的状态也就随之确定了。具体而言:如果map[i][j]==1,那么为了把它变成0,我们只需要对flip[i+1][j]进行一次操作,记录之。如此下去,在最后一定可以把row-1行全部变成0.所以再在最后判断一下最后一个row是不是全部是0
2016-10-21 16:44:01
359
原创 【noip模拟题】数列
DescriptionCzy手上有一个长度为n的数列,第i个数为xi。他现在想知道,对于给定的a,b,c,他要找到一个i,使得a*(i+1)*xi2+(b+1)*i*xi+(c+i)=0成立。如果有多个i满足,Czy想要最小的那个i。Czy有很多很多组询问需要你回答,多到他自己也不确定有多少组。所以在输入数据中a=b=c=0标志着Czy的提问的结束。更加糟糕的是,Czy为了
2016-02-01 21:52:39
949
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人