8056: BZOJ4056:[Ctsc2015]shallot

Memory Limit:2560 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

小葱和小绪是一对好朋友,自从小葱11连出了1UR2SR之后,小绪就觉得小葱的人品特别好, 于是小绪给小葱出了一道题来测试小葱的人品。 小绪首先在平面上画了N个点,分别是P1,P2,...,PN。 小绪把这N个点顺次相连,即连接(P1,P2),(P2,P3),...,(PN-1,PN),得到N-1条线段。  之后小绪每次在平面上画出一条直线,然后问小葱这条直线与多少条线段相交。特别的,在线段端点处相交算作相交, 直线完全覆盖线段时也算作相交。 这样的问题自然难不倒小葱,小葱只需要凭自己的人品用直觉就能给出正确的答案。  小绪想测试小葱的人品究竟有多好,于是他加大了问题的难度: 除了每次询问以外,小绪会不时地讲一个新的点P插入 到Pi和Pi+1之间,然后按照顺序对所有的点重新标记下标,即在Pi之后的点的下标会依次增加,而点P会变成新的点Pi+1。 特别的,点P也可以插入到第一个点之前或最后一个点之后。  人品超级好的小葱依旧能够轻松的给出答案,于是小绪又进一步提高了难度:  每次插入或提问之后,小绪都将操作后的所有线段记录了下来,称作一个历史版本。历史版本T表示在第T次操作后得到的历史版本。  插入新点的操作改为了在某一个历史版本T的基础上,插入一个点P,并得到一个新的历史版本。  小绪对小葱的提问改为了对于一个历史版本T,给出一条直线,询问这条直线会与多少条线段相交。  小葱虽然人品很好,但面对这样的问题却也束手无策了,他只好找到来参加CTSC的你,请你来帮他解决这个问题。 


输入格式

第一行两个整数N,M,C『注:原文如此』,表示一开始的点数和总共的操作数,以及数据是否加密。 如果C=1,那么代表数据被加密过,每次询问操作中的X0,Y0,X,Y以及插入操作中的X,Y都是被加密过的数据, 你需要将它们异或last_ans从而得到正确的数据,其中last_ans是上一次询问的答案,刚开始last_ans=0。  接下来N行每行两个整数,其中第i行的两个整数表示Pi的横坐标和纵坐标。  接下来M行,表示小绪的M次操作,其中第i行(从1开始标号)操作后得到的结果为历史版本i。  对于每次操作,首先会有一个字母代表小绪的这次操作的操作类型。  如果这个字母是'H',代表本次操作为一次询问操作。接下来会有五个整数T,X0,Y0,X,Y,代表在历史版本T的情况下, 小绪给出一条经过(X0,Y0),方向为(X,Y)的直线,小葱要回答出它会和多少条直线相交。  如果这个字母是'Z',代表本次操作为一次插入操作。接下来会有四个数T,i,X,Y,代表小绪在历史版本T的基础上, 在Pi后面插入了一个坐标为(X,Y)的点。特别地,如果i=0,表示该点在P1之前。 


输出格式

要求对每一次询问操作,输出一行一个整数代表小葱应该回答的正确答案。 


样例输入

2 3 0
0 0
1 1
H 0 1 0 -1 1
H 1 0 1 1 1
H 2 -1 -1 1 1

样例输出

1
0
1

提示

 样例解释1: 

对于第三次村问,直线完全覆盖了线段,小绪会认为这也算相交。  数据规模和约定:  保证每次询问操作的T一定小于等于当前操作的数量,所有输入数据均为整数。  有以下4类特殊数据,它们两两没有交集:  1.对于10%的数据,保证1<=N,M<=1000;  2.对于15%的数据,保证对于第i次操作,T=i-1;  3.对于15%的数据,保证C=0且不存在修改操作;  4.对于15%的数据,对于询问操作,保证Y=0(加密过的数据指解密后的Y),即给出的直线平行于x轴。  以上数据还保证1<=N,M<=5*104。  对于100%的数据,保证1<=N,M<=105,所有的坐标范围在[-108,108]内,且每组数据中所有询问的答案总和不超过106,插入操作的次数不会超过5*104。注意这些线段可能会互相相交。


题目来源

没有写明来源

加入题单

上一题 下一题 算法标签: