题意:有n个数初始值都为1,m个操作a,b,c,表示把区间[a,b]变为c,求最后n个数的和。
经典区间更新求和问题,需要用到延迟标记(或者说是懒惰标记),简单老说就是每次更新
的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新或询问的时候。
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-07-30 12:20:23
阅读次数:
241
题目:一个数的素因子的和如果也是素数就叫做DePrimes,统计给定区间内的DePrimes。
分析:数论。本题使用用一种素数的筛法,欧拉筛法,也加线性筛法。
这种方法,每次删选分两种情况:1.素因子不重复、2.素因子重复;
利用这个性质,统计DePrimes,如果素因子不同就加和,否则就去相应的...
分类:
其他好文 时间:
2014-07-30 12:20:03
阅读次数:
398
HDU 1166【题意】:n个阵营一字排开,每个初始有a[i]个人。现有两种操作:Q a b 查询[a,b]之间总人数并输出A/S a b 在a号位添加/删除b个人【分析】:最基本的单点更新和区间查询,维护节点信息sum[o]【代码】: 1 #include 2 #include 3 #incl.....
分类:
其他好文 时间:
2014-07-30 11:56:23
阅读次数:
450
题意:给你一个序列,找两个长度为 k 且没有重合区间的数使得其和最大解题思路:1)线段树想了半天想不出只能先用线段树撸了一发,这题dp 第一名只要了 9分钟。就是把起点为 i 长度为 k 的和预处理出来,再用线段树枚举去找。解题代码: 1 // File Name: 332b.cpp 2 // .....
分类:
其他好文 时间:
2014-07-30 11:46:03
阅读次数:
373
d[i]表示在[0,i]这个区间内一共选了d[i]个数对于每个为[ai,bi]的区间,你必须在这个区间上至少取ci个不同的整数,用d[i]如何表示?d[ bi ]-d[ ai-1 ] >= ciEdge:(ai-1 -> bi) val = ci另外:0#include #include #incl...
分类:
其他好文 时间:
2014-07-30 11:27:43
阅读次数:
249
UVA 11992 - Fast Matrix Operations
题目链接
题意:给定一个矩阵,3种操作,在一个矩阵中添加值a,设置值a,查询和
思路:由于最多20列,所以完全可以当作20个线段树来做,然后线段树是区间修改区间查询,利用延迟操作,开两个延迟值一个存放set操作,一个存放add操作
代码:
#include
#include
#include
...
分类:
其他好文 时间:
2014-07-30 05:36:03
阅读次数:
320
给定一个矩阵,3种操作,在一个矩阵中添加值a,设置值a,查询和思路:由于最多20列,所以完全可以当作20个线段树来做,然后线段树是区间修改区间查询,利用延迟操作,开两个延迟值一个存放set操作,一个存放add操作代码:[cpp] view plaincopy#include#include#incl...
分类:
其他好文 时间:
2014-07-30 05:34:23
阅读次数:
334
1.select 模型 1.1 select 函数原型如下,其中 nfds 表示的描述符的最大值加1(因为这里是左闭右开区间),中间三个参数分别表示要监听的不同类型描述符的集合,timeout用来表示轮询的时间间隔,这里用NULL表示无限等待。 1.2 使用 select函数编写客户端程...
分类:
系统相关 时间:
2014-07-30 00:57:12
阅读次数:
476
给定一个初始都为0的序列,有三种操作,前两种比较正常,一个是对某个位置的数add k,另一个是query区间和。然后比较麻烦的是第三个操作,把某个区间里面的每个值改成离它最近的Fibonacci数,如果存在左右两个离它近的,优先取左边数值小的一看到前两个操作马上就想上手敲树状数组,后来看到第三个就有...
分类:
其他好文 时间:
2014-07-30 00:56:52
阅读次数:
211