https://cn.vjudge.net/problem/HDU-4614 题意 n个花瓶,m个操作,花瓶里面有的有花,有的是空的.1操作是从a开始往右放b朵花,花瓶有了的不放,跳过,直到a右边都放满了花,多余的扔了.输出本次放花的起始位置,如果一朵不能放,输出一句话. 分析 1~N 的区间,用1表示空的,0表示放了花的.维护一个sum,就是和.对于操作二就是求区间和. 操作一用二分找第一个符合位置的数. #include <iostream> #include <cstdio>…
描述Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When she receive some flowers, she will try to put them in the vases, one flower in one vase. She randomly choose the vase A and try to put a fl…
Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 3220    Accepted Submission(s): 1273 Problem Description Alice is so popular that she can receive many flowers everyday. She ha…
<题目链接> 题目大意: 有n个花瓶,每个花瓶中只能放一朵花.两种操作,一种是从A开始放F朵花,如果有的花瓶中已经有花则跳过这个花瓶,往下一个花瓶放:第二种是将区间[A,B]之间花瓶中的花清空.如果是第一种操作,输出这次放的花的左右端点:如果是第二种操作,输出这次总共清理出了多少支花. 解题分析: 本题可以很巧妙的将这两种操作全部转化为区间修改,毫无疑问,第二种操作肯定是区间修改:对于第一种操作,可以用二分答案将x后的第num个空瓶的坐标查找出来,因为二分答案时需要直接查询指定区间内空瓶的数量…
Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 38    Accepted Submission(s): 10 Problem Description Alice is so popular that she can receive many flowers everyday. She has N v…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题目大意:有n个空花瓶,有两种操作: 操作①:给出两个数字A,B,表示从第A个花瓶开始插花,插B朵花,输出第一个和最后一个插入的花瓶,如果任意花瓶都已经满了不能插花,则输出“Can not put any one.”. 操作②:给出两个数字A,B,表示清空第A~B个花瓶,并输出清空掉的花朵数目. 解题思路:线段树,关于操作②,很简单弄个sum表示区间空花瓶数,计算时清空掉的花朵数=区间长度-s…
题目链接 比赛的时候一直想用树状数组,但是树状数组区间更新之后,功能有局限性.线段树中的lz标记很强大,这个题的题意也挺纠结的. k = 1时,从a开始,插b个花,输出第一个插的位置,最后一个的位置,一个都没插,输出不能插. k = 2时,将[a,b]区间都清空,输出这个区间上本来有多少朵花. 主要是k = 1的时候,很难弄.给出区间[a,b]要找到第一个空花瓶,空花瓶的个数 = 总的-插花的个数 这肯定是一个单增的,所以利用二分求下界,这个位置,就是第一个空花瓶的位置,最后一个花瓶的位置需要特…
题目大意:爱丽丝有N个花瓶,每个花瓶最多放一朵花.然后又如下两个操作. 1:A B    从第A个花瓶开始,往后依次插B朵花,直到不能插为止.如果一朵花都不能插入就输出“can.....”,否则输出第一个插花位置和最后一个插花位置. 2:A B    输出A B 之间有多少朵花   然后将这些花瓶清空. 当时比赛的时候始终找不到办法求出 最后一个插花位置.  也想过二分  但是想着怕效率太慢就没写. 其实最后想想也是 只有50000个操作   再乘以log N的二分  最多也就20W左右吧. 我…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题意: 给你N个花瓶,编号是0  到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花. 然后有2个操作. 1)a b 往在a位置后面(包括a)插b朵花,输出插入的首位置和末位置. 2)a b 输出区间[a , b ]范围内的花的数量,然后全部清空. 操作看起来挺简单的但写起来还是有点复杂的 首先建树的时候可以设置变量first与ends分别表示一个区间最先出现的0和最后出现的0,sum…
http://acm.hdu.edu.cn/showproblem.php?pid=4614 直接线段树维护 代码: #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<set> #include<map> #include<stack> #include<vecto…