问题2274--数据结构难题(Nice boat)(HDU4902)

2274: 数据结构难题(Nice boat)(HDU4902)

时间限制: 1 Sec  内存限制: 128 MB
提交: 6  解决: 6
[提交] [状态] [讨论版] [命题人:]

题目描述

There is an old country and the king fell in love with a devil. The devil always asks the king to do some crazy things. Although the king used to be wise and beloved by his people. Now he is just like a boy in love and can’t refuse any request from the devil. Also, this devil is looking like a very cute Loli.
Let us continue our story, z*p(actually you) defeat the 'MengMengDa' party's leader, and the 'MengMengDa' party dissolved. z*p becomes the most famous guy among the princess's knight party.
One day, the people in the party find that z*p has died. As what he has done in the past, people just say 'Oh, what a nice boat' and don't care about why he died.
Since then, many people died but no one knows why and everyone is fine about that. Meanwhile, the devil sends her knight to challenge you with Algorithm contest.
There is a hard data structure problem in the contest:
There are n numbers a_1,a_2,...,a_n on a line, everytime you can change every number in a segment [l,r] into a number x(type 1), or change every number a_i in a segment [l,r] which is bigger than x to gcd(a_i,x) (type 2).
You should output the final sequence.
题目大意:
有n个数字a1,a2,···,an,每次都可以将[l,r]区间的每个数字都更改为数字x(类型1),或将[l,r]区间每个大于x的ai都更改为最大公约数gcd(ai,x)(类型2),请输出最后的序列。

输入

The first line contains an integer T, denoting the number of the test cases.
For each test case, the first line contains a integers n.
The next line contains n integers a_1,a_2,...,a_n separated by a single space.
The next line contains an integer Q, denoting the number of the operations.
The next Q line contains 4 integers t,l,r,x. t denotes the operation type.

T<=2,n,Q<=100000
a_i,x >=0
a_i,x is in the range of int32(C++)

大意:
第1行包含一个整数T,表示测试用例的数量。每个测试用例的第1行都包含整数n。下一行包含以空格分隔的n个整数a1,a2,···,an。再下一行包含一个整数Q,表示操作数量。下面的Q行,每行都包含4个整数t、l、r、x,t表示操作类型,l、r表示区间左右端点。T≤2,n,Q≤100000,ai,x≥0且在int32范围内。

输出

For each test case, output a line with n integers separated by a single space representing the final sequence.
Please output a single more space after end of the sequence
大意:
对每个测试用例,都单行输出以空格分隔的最终序列,在序列结束后输出一个空格。

样例输入 Copy

1
10
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709 
10
1 3 6 74243042
2 4 8 16531729
1 3 4 1474833169
2 1 8 1131570933
2 7 9 1505795335
2 3 7 101929267
1 4 10 1624379149
2 2 8 2110010672
2 6 7 156091745
1 2 5 937186357

样例输出 Copy

16807 937186357 937186357 937186357 937186357 1 1 1624379149 1624379149 1624379149 

来源/分类