Yes actually I could not figure out how to implement that lazy propagation in the array . Yes please help me in doing that.
On Wed, Feb 9, 2011 at 10:56 PM, Arpit Sood <soodfi...@gmail.com> wrote: > you are not actually using the concept of lazy propagation in the code, you > are doing update in O(n). if you want the solution then reply back. > > > On Wed, Feb 9, 2011 at 6:22 PM, Gaurav Saxena <grvsaxena...@gmail.com>wrote: > >> @arpit : could you please tell me what is the problem with the update >> function ?? >> >> On Wed, Feb 9, 2011 at 3:32 PM, Arpit Sood <soodfi...@gmail.com> wrote: >> >>> there is problem with the update function... >>> >>> On Tue, Feb 8, 2011 at 8:14 PM, Gaurav Saxena <grvsaxena...@gmail.com>wrote: >>> >>>> Hey thanks for your help >>>> I have written a code using range trees but I am still getting TLE [?][?] >>>> [?] >>>> Please suggest me something >>>> >>>> >>>> Here is my code >>>> >>>> /* >>>> * File: main1.c >>>> * Author: gs >>>> * >>>> * Created on 8 February, 2011, 7:46 PM >>>> */ >>>> >>>> #include <stdio.h> >>>> #include <stdlib.h> >>>> >>>> >>>> #define MAX 300000 >>>> #define loop0(i,j) for(int i=0;i<j;i++) >>>> #define loop1(i,j) for(int i=1;i<j;i++) >>>> # define true 1 >>>> # define false 0 >>>> >>>> >>>> _Bool flag[MAX]; >>>> int value[MAX]; >>>> >>>> /*void initialize(int node, int b, int e) >>>> { >>>> if (b == e) >>>> { >>>> flag[node] = false; >>>> value[node] = 0; >>>> } >>>> else >>>> { >>>> initialize(2 * node, b, (b + e) / 2); >>>> initialize(2 * node + 1, (b + e) / 2 + 1, e); >>>> value[node] = 0; >>>> flag[node] = false; >>>> } >>>> }*/ >>>> >>>> int update(int node, int b, int e, int i, int j) >>>> { >>>> int p1, p2; >>>> if (i > e || j < b) >>>> return 0; >>>> if(b==e) >>>> { >>>> if(flag[node] == true) >>>> return 1; >>>> else >>>> return 0; >>>> } >>>> if (b >= i && e <= j) >>>> { >>>> if(flag[node] == true) >>>> { >>>> flag[node] = false; >>>> flag[2*node] = !flag[2*node]; >>>> flag[2*node+1] = !flag[2*node+1]; >>>> p1 = update(2 * node, b, (b + e) / 2, i, j); >>>> p2 = update(2 * node + 1, (b + e) / 2 + 1, e, i, j); >>>> return (value[node] = p1 + p2); >>>> } >>>> else >>>> return value[node]; >>>> } >>>> else >>>> { >>>> if(flag[node]==true) >>>> { >>>> flag[node]=false; >>>> flag[2*node]=!flag[2*node]; >>>> flag[2*node+1]=!flag[2*node+1]; >>>> } >>>> p1 = update(2 * node, b, (b + e) / 2, i, j); >>>> p2 = update(2 * node + 1, (b + e) / 2 + 1, e, i, j); >>>> return value[node] = p1 + p2; >>>> } >>>> } >>>> >>>> int query(int node, int b, int e, int i, int j) >>>> { >>>> int p1, p2; >>>> if (i > e || j < b) >>>> return 0; >>>> if (b >= i && e <= j) >>>> { >>>> flag[node] = !flag[node]; >>>> return value[node] = e - b + 1 - value[node]; >>>> } >>>> else >>>> { >>>> if(flag[node]==true) >>>> { >>>> flag[node]=false; >>>> flag[2*node]=!flag[2*node]; >>>> flag[2*node+1]=!flag[2*node+1]; >>>> } >>>> p1 = query(2 * node, b, (b + e) / 2, i, j); >>>> p2 = query(2 * node + 1, (b + e) / 2 + 1, e, i, j); >>>> if(p1==-1) >>>> p1=0; >>>> if(p2==-1) >>>> p2=0; >>>> return (value[node] = p1 + p2); >>>> } >>>> } >>>> >>>> int main() >>>> { >>>> int i, n, q,ret; >>>> int cmd, a, b, z; >>>> scanf("%d %d",&n,&q); >>>> // initialize(1, 0, tests-1); >>>> for(i=0;i< q;i++) >>>> { >>>> scanf("%d %d %d",&cmd,&a,&b); >>>> if(cmd==0) >>>> value[1] = query(1,0,n-1,a,b); >>>> else >>>> printf("%d\n",update(1,0,n-1,a,b)); >>>> } >>>> return 0; >>>> >>>> } >>>> >>>> >>>> >>>> >>>> On Tue, Feb 8, 2011 at 3:41 PM, sunny agrawal >>>> <sunny816.i...@gmail.com>wrote: >>>> >>>>> make a tree where each node have the following structure >>>>> >>>>> 1. rangeLow >>>>> 2. rangeHigh >>>>> 3. headCount of its complete subTree >>>>> 4. boolean variable change, if true means all nodes of that subtree >>>>> need to be flipped but we are not flipping in the hope if again a flip >>>>> occur >>>>> we can reset the flag and we can save some time >>>>> 5.isHead >>>>> >>>>> initialise range tree as for root range 0->MAX >>>>> leftSubTree 0->MAX/2 rightSubTree MAX/2+1 -> MAX >>>>> all headCount initially 0 >>>>> all changes to false >>>>> >>>>> as a query comes, if it matches with range of some node we can stop >>>>> propagating at that level and making change true so no need to go till >>>>> leaf >>>>> nodes >>>>> new head count at that node will be (total nodes in its range - prev >>>>> headCount) >>>>> >>>>> >>>>> if you are still not able to get it you should read a range tree >>>>> tutorial, that will really help >>>>> >>>>> On Tue, Feb 8, 2011 at 2:28 PM, Gaurav Saxena >>>>> <grvsaxena...@gmail.com>wrote: >>>>> >>>>>> Actually I could not figure out any good way of doing this . [?][?] >>>>>> Could you please suggest me something or give some idea . >>>>>> Thanks for helping >>>>>> >>>>>> On Tue, Feb 8, 2011 at 1:51 PM, sunny agrawal < >>>>>> sunny816.i...@gmail.com> wrote: >>>>>> >>>>>>> i think time complexity of the O(nlgn) for an avg case will suffice >>>>>>> >>>>>>> no it will not be inefficient if we keep sufficient information at >>>>>>> each node >>>>>>> each node will keep information of all its childs(headCount) and >>>>>>> using some optimizations such as if two flips on same range occur >>>>>>> simultaneously, then after all there will be no effect at all so there >>>>>>> was >>>>>>> no need of doing anything. >>>>>>> >>>>>>> On Tue, Feb 8, 2011 at 1:27 PM, Gaurav Saxena < >>>>>>> grvsaxena...@gmail.com> wrote: >>>>>>> >>>>>>>> If we make segments of the range of coins which are heads then in >>>>>>>> some case the result will become alternate which could be more >>>>>>>> inefficient. >>>>>>>> Any idea what time complexity will suffice ? >>>>>>>> Could you please elaborate your reply . >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Feb 8, 2011 at 1:08 PM, sunny agrawal < >>>>>>>> sunny816.i...@gmail.com> wrote: >>>>>>>> >>>>>>>>> i think your solution will be O(n) for each query >>>>>>>>> so it will be O(Q*N), that will surely timeout >>>>>>>>> read about Range Trees, segment trees from wiki or CLRS >>>>>>>>> >>>>>>>>> On Tue, Feb 8, 2011 at 1:01 PM, Gaurav Saxena < >>>>>>>>> grvsaxena...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> I need help regarding the codechef flip coin problem . >>>>>>>>>> I am trying a code with O(n) time and it is giving TLE . >>>>>>>>>> Couldn't figure out a better solution. >>>>>>>>>> http://www.codechef.com/problems/FLIPCOIN/ >>>>>>>>>> >>>>>>>>>> Thanks for help . >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Thanks and Regards , >>>>>>>>>> Gaurav Saxena >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>>> Groups "Algorithm Geeks" group. >>>>>>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>>>>>> For more options, visit this group at >>>>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Sunny Aggrawal >>>>>>>>> B-Tech IV year,CSI >>>>>>>>> Indian Institute Of Technology,Roorkee >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "Algorithm Geeks" group. >>>>>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>>>>> For more options, visit this group at >>>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Thanks and Regards , >>>>>>>> Gaurav Saxena >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Algorithm Geeks" group. >>>>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Sunny Aggrawal >>>>>>> B-Tech IV year,CSI >>>>>>> Indian Institute Of Technology,Roorkee >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Algorithm Geeks" group. >>>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>>> To unsubscribe from this group, send email to >>>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Thanks and Regards , >>>>>> Gaurav Saxena >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Algorithm Geeks" group. >>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Sunny Aggrawal >>>>> B-Tech IV year,CSI >>>>> Indian Institute Of Technology,Roorkee >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Algorithm Geeks" group. >>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> algogeeks+unsubscr...@googlegroups.com. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>> >>>> >>>> >>>> >>>> -- >>>> Thanks and Regards , >>>> Gaurav Saxena >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Algorithm Geeks" group. >>>> To post to this group, send email to algogeeks@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> algogeeks+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/algogeeks?hl=en. >>>> >>> >>> >>> >>> -- >>> Arpit Sood >>> Some day you will see things my way. >>> http://arpit-sood.blogspot.com >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Algorithm Geeks" group. >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >> >> >> >> -- >> Thanks and Regards , >> Gaurav Saxena >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. >> > > > > -- > Arpit Sood > Some day you will see things my way. > http://arpit-sood.blogspot.com > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > -- Thanks and Regards , Gaurav Saxena -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
<<344.gif>>
<<33F.gif>>