摘要:
题意:n个人围城一圈,每个人决定下一个出局的人在他的第几个位置,首先出局的人是第k个人分析:反素数+约瑟夫这道题最主要需要理解的就是线段树是如何模拟的反素数,sum数组记录的是队列中还剩余多少个人k表示的是在剩余里的人,其排在第几个,通过对线段树的询问找到该第k个人在初始队列中排第几个若k0的时候,... 阅读全文
摘要:
题意:n个人围城一圈,每个人决定下一个出局的人在他的第几个位置,首先出局的人是第k个人分析:反素数+约瑟夫这道题最主要需要理解的就是线段树是如何模拟的反素数,sum数组记录的是队列中还剩余多少个人k表示的是在剩余里的人,其排在第几个,通过对线段树的询问找到该第k个人在初始队列中排第几个若k<=sum[rt<<1]则进入到其左子节点,否则的话,k-sum[rt<<1|1]进入到右子节点还有一个难点就是,剩余中k位置的更新,当next[id]>0的时候,在k-1位置的人已经被删除了,所以应该在加上next[id]后还应该减去1,同时每次取余的时候t都已经减1了, 阅读全文