- 博客(6)
- 收藏
- 关注
原创 CodeForces - 292E 线段树
题意:给a,b两个数组, 然后有m个操作,t 如果t=2 ,接着输入一个k ,然后输出b【k】;如果t =1,接着输入3个数,x,y,k,表示b【y】到b【y+k-1】等于a【x】到a【x+k-1】。线段树设置两个变量,flag1 表示这段区间被x占用,flag2表示这段区间从y位置开始,#include#include#includeusing namespace std;#
2013-08-11 18:32:18 662
原创 poj 2886 线段树 (用反素数)
题意:有n 个人,每个人有一个卡,上面有一个非零的数。第一次给一个数k,第k个人跳出,然后看第k的卡上数字是多少,如果大于0 则顺时针数那人人跳出。小于零,逆时针数到的那个人跳出,一次类推,第x次跳出的人会得到f(x),f(x)等于x的因子个数,求最大的f(x)f(x)满足反素数。 线段树的区间存的是有多少人。#include#include#includeusing namespa
2013-08-11 14:15:43 639
原创 STL用法 (set)
set:set中的元素师唯一的,multiset中可以存在多个相同的。set的头文件是#includeset中的元素默认从小到大排序;也可以这样定义;int main(){ set >s1;//从大到小排序 set >s2;//从小到大排序 s1.insert(3); s1.insert(2); s1.insert(7); se
2013-08-11 09:48:04 675
原创 poj 3321 线段树(将点转换为对应区间)
题意:n个点,n-1条边,有m个查询,Q a,表示a的子树中包含a有多少苹果。C a,表示a这个点如果有苹果就被摘掉,没有苹果就长出一个。将对应点转换成对应区间,然后进行线段树#include#include#includeusing namespace std;#define mem(x,y) memset(x,y,sizeof(x))const int N=1e5+2;st
2013-08-10 10:45:52 708
原创 hdu 4276 树形dp背包
题意:n个点,n-1条边,每条边有权值,每个点有价值 ,问你能否在T时间内从1走到n,如果能,获得的最大价值。 先用spfa求出1至n的最短路径,并且将1到n最短路径上的边权致零,t减去dis【n】这样以后就可以不用考虑怎样回到n了,就和普通的树形dp一样,状态方程 dp [ u ] [ j ] = max ( dp [ u ][ j ] ,dp[ v] [k ] +
2013-08-06 08:28:21 626
原创 hdu 1695 两个区间中互素的个数 (容斥)
题意是,【1,l】,【1,r】之间个数一个数两个数的最大公约数等于k 求有多少这样的数对。设x是在【1,l】中取的数,y是在【1,r】中取的数。x =a*k ,y=b*k ,k为最大公约数, 所以a与b互素,问题转换为区间(1,l/k)(1 , r/k)中有多少互素的数对。容斥原理在这里求的是 i 在(1,l/k)中与i不互素的个数。例如 1到10中能被2,3整除的个数为 1
2013-08-03 17:04:48 954
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人