This problem has been engaged for a long time, in fact there are many pits point.On the internet to find a lot of solutions, found that the idea is actually similar, so it is not repeated.Recommend a better one, please poke this.In addition, if it is possible to update multiple times, but the final query only needs one time, there is no write pushup function, only one pushdown.1#include 2 3 Const intMAXN =131072;4 //const int MAXN = ten;5 intQL, QR, op;6 intSETV[MAXN 2], XORV[MAXN 2];7 BOOL inch
A more comprehensive topic.A two-dimensional segment tree that supports the add and set operations of the interval and then queries the Sum,min,max of the sub-matricesAfter writing this problem is also drunk, code warehouse also has a code is in the process of query also pushdown down pass the mark.1#include 2#include 3#include 4 using namespacestd;5 6 Const intMaxnode =1 -;7 int_sum, _min, _max, op, x1, x2, y1, y2, X, V;8 9 structIntervaltreeTen { One intMaxv[maxnode], Minv[maxnode], Sumv[m
Setv[] come up and get it all negative. Sum in query don't forget to add one.1#include 2#include 3#include 4#include 5#include 6 using namespacestd;7 Const intMAXN =100000+Ten;8 Const intMAXN3 = MAXN *3;9 Const intINF =-1u>>1;Ten intA[MAXN], minv[maxn3], maxv[maxn3], sumv[maxn3], setv[maxn3]; One intV, QL, QR, _min, _max, _sum; A intN, Q; - CharTP; - voidFreshintOintLcintRC) { theMinv[o] =min (MINV[LC], MIN
Main topicThere are n from 1. n the number of seats, given in chronological order, each guest is seated in the first few empty seats, and finally asks a few questions where the number I guest sits.AnalysisSegment Tree + two points1 //Fast Sequence Operations II2 //Rujia Liu3 //Input Format:4 //N m array range is a[1]~a[n], initialized to 0. The operation has a M5 //1 L R v = set A[l]=a[l+1]=...=a[r] = v. where v > 06 //2 L R query a[l]~a[r] sum, min and Max7#include 8#include 9#include Ten using
unit. Ask the maximum value of the shortest flower.
Question: At the beginning, you must first select the shortest flower and the adjacent flower for watering. Then a _ (I) to a _ (I + W-1) plus a unit. I didn't expect any good method at the time, so I wanted to use the line segment tree to maintain the minimum value of the interval and find the lower bound of the minimum value each time. Then water all the flowers on the right. At the beginning, I thought about the lower bound for a long time.
Personal feeling a little bit pitAdd tags are permanentlyThe tag used for set is passed#include #include#include#include#defineLson o#defineRson (o#defineLS o#defineRS (ousing namespacestd;Const intn=1e4,inf=1e9;intminv[n2],maxv[n2],sumv[n2];intaddv[n2],setv[n2];intql,qr,p,v;// PointintQuerymin (intOintLintR) { intm=l+ (r-l) >>1), ans=INF; if(QLreturnMinv[o]; if(qlmin (ans,querymin (Lson)); if(m+1min (ans,querymin (Rson)); returnans;}voidChangeintO
achieve the final result, if the algorithm is correct, the code is not written wrong. However, set operation is different, like brush paint, the final brush is the final color. What do we do? Hit Mark! The marking here is equivalent to the change of the special situation to do the change, is to find out the last three values to hit, then how to do? If the current interval is completely contained within the interval that we need to modify/query, then the direct modification is marked V, otherwis
Test instructionsAll 0 matrices of the R row C column have three operations 1 x1 y1 X2 y2 v sub-matrix (x1,y1,x2,y2) all elements increased by V2 x1 y1 X2 y2 v sub-matrix (x1,y1,x2,y2) All elements are set to V3 x1 y1 X2 y2 query sub-matrix element's and, Min, max valuesAnalysis: The interval of the segment tree is updated and the matrix is transformed into one dimension.#include #includeSet>#include#include#include#include#include#include#includestring>#include#include#include#include#include#i
(including A and b) paths. OutputFor each query operation, output one line of answers.Sample Input6 52 2 1 2 1 11 21 32 42 52 6Q 3 5C 2 1 1Q 3 5C 5 1 2Q 3 5Sample Output312HINTNumber nIt's obviously a bare question ... I thought the dynamic tree was good to write some, however, a SB wrongly stared at 2h+. Can my Code ability still be used to feed the dog to describe it?#include #include#include#include#include#include#defineLC Ch[x][0]#defineRC Ch[x][1]#defineRep (i,s,t) for (int i=s;i#defineDw
problem is not imitate the school courseware, because I think Rujia is better. The comments are all written in the code.1#include 2 Const intmaxn=100050;3 intsumv[maxn2];4 intsetv[maxn2];5 voidPushup (intRT) {///Update Current Value6sumv[rt]=sumv[rt1]+sumv[rt1|1];7 }8 voidPushdown (intRtintx) {///When this node changes, this node is updated and passed to the next node9 intlc=rt1,rc=rt1|1,mid=x>>1;Ten if(setv[rt]>=0){ Onesetv[rt1]=
Question: intersection, merger, subtraction, and population
Idea: Use the leaf node of the Line Segment tree to record whether the point is covered by the interval. Because of the open interval, consider discretization and multiply the value by 2.
U: overwrite the interval [l, r] to 1.I: overwrite [-∞, l) (r, ∞] to 0.D: overwrite the range [l, r] to 0.C: overwrite [-∞, l) (r, ∞] to 0, and the [l, r] range is 0/1 interchangeable.S: [l, r] 0/1 Interchange
Interval modification is easy, but it is d
Test instructions: There are n operations, the type of operation has a a B to add the value of the interval [A, a] in turn 1 2 ... b-a+1, the operation of B a B is to add the value of the interval [b] in turn b-a+1 ... 2 1, Operation c A B x indicates that the value of the interval [A, a] is replaced by X, and the operation s a B requires all the numbers in the output interval [a, a].The key: A and B operations are to add a arithmetic progression interval, so to use the segment tree to maintain
A value of two minutes, and then the segment tree is simulated.#include #defineLson (o#defineRson (oConst intn=1e5+Ten;using namespacestd;intn,m,a[n],x,q;structopt{intOpt,l,r,id;} B[n];structsegment_tree{intsumv[n2],setv[n2]; InlinevoidPushup (intO) {sumv[o]=sumv[lson]+Sumv[rson];} InlinevoidPushdown (intOintLintR) { if(setv[o]==-1)return; intTag=setv[o],m
the left sub-interval and the sum of the left dial hand interval combined with the right sub-interval, and the minimum and the same method.#include Const intN =100005; struct Tree {intSum, MAXX, Minn;intSetv, rev; void F (intValint Left,int Right) {if(!val) {sum =-sum;inttemp = Maxx; Maxx =-minn; Minn =-temp; Rev ^=1; }Else{minn = min (val, Val * ( Right- Left+1)); Maxx = Max (Val, Val * ( Right- Left+1)); sum = val * ( Right- Left+1);
------------Drop PROCEDURE if EXISTSSelectcitylike;Create PROCEDURE 'Selectcitylike'(inch_citynamevarchar(Ten))BEGIN Set @exec_sql =CONCAT ("Select * fromStudentwhereName like '% ", _cityname,"%'");PREPAREstmt from @exec_sql;--definitionEXECUTEstmt--executing a preprocessing statementdeallocate PREPAREstmt--Delete DefinitionEnd-------Loop statement: Check results before Operation----------Create PROCEDUREproc4 ()BEGINDeclare var int;Set var=0; while var6 DoInsert intoTVALUES(var);Set var=var+1;
From my question on the stack overflow, https://stackoverflow.com/questions/51675355/how-to-eval-a-cond-case-and-return-function-object.(Hy authors reply in a timely manner, but before the question in GitHub issue was rejected haha ha)My problem is that I need to assemble myself with conditional expressions (cond [P e]).P is changeable, and E is basically the same. So hopefully with GCC compiled into the intermediate language RTL, do point optimization in the RTL layer, partial evaluation.To be
Directly add content
First, the CASE conditions in the Stored Procedure
CREATEPROCEDUREp_case(INparameter1INT)
BEGIN
DECLAREvariable1INT;
SETvariable1=parameter1+1;
CASEvariable1
WHEN0THENINSERTINTOtVALUES(0);
WHEN1THENINSERTINTOtVALUES(1);
ELSEINSERTINTOtVALUES(2);
ENDCASE;
END;
LOOPS Loop[1] WHILE... END WHILE[2] LOOP... END LOOP[3] REPEAT... END REPEAT【4】 GOTO
I. WHILE... END WHILE
CREATEPROCEDUREp_while()
BEGIN
DECLAREvINT;
PROCEDURE proc6 ()-begin-Declare Vint; -Setv=0; -Loop_lable:loop-INSERT into T values (v); -Setv=v+1; -ifV >=5 Then-leave loop_lable; -Endif; -end Loop; -end; -//MySQL > DELIMITER;Loop loops do not require initial conditions, which are similar to while loops and do not require an end condition like repeat loops, and the meaning of the leave statement is to leave the loop.
LABLES IdentificationLABLES
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.