T1
【题目描述】
有一个正整数序列 A A A, A A A中含有 N N N个正整数 A 1 , A 2 , . . . , A N A_1 ,A_2 , ... , A_N A1,A2,...,AN 。
现在依次执行以下 Q Q Q个操作: B i C i B_i C_i BiCi (表示第 i i i个操作,将 A A A中所有值为 B i B_i Bi的元素替换为 C i C_i Ci)
当操作 i i i( 1 ≤ i ≤ Q 1≤i≤Q 1≤i≤Q)完成后,请你求出此时 A A A中所有元素的和 S i S_i Si。
一眼题,用桶记录每个数的个数,如果 x − > y x->y x−>y,则计算此时的和: s = s + t [ x ] ∗ ( y − x ) ; s=s+t[x]*(y-x); s=s+t[x]∗(y−x);同时更新 y y y的个数: t [ y ] = t [ y ] + t [ x ] ; t[y]=t[y]+t[x]; t[y]=t[y]+t[x]; 把 x x x的个数赋为 0 0 0: t [ x ] = 0 ; t[x]=0; t[x]=0;
T2
【题目描述】
未来的某一天, N ( 1 ≤ N ≤ 1000000000000001 ) N(1≤N≤1000000000000001) N(1≤N≤1000000000000001)艘外星人战舰突然出现在地球上空,外星人的计数很奇怪,和地球上的计数规则很不一样。于是这些战舰的编号如下:
编号为 1 , 2 , … , 26 1,2,…,26 1,2,…,26的战舰分别被命名为 a , b , … , z a,b,…,z a,b,…,z;
编号为 27 , 28 , 29 , … , 701 , 702 27,28,29,…,701,702 27,28,29,…,701,702的战舰分别被命名为 a a , a b , a c , … , z y , z z aa,ab,ac,…,zy,zz aa,ab,ac,…,zy,zz;
编号为 703 , 704 , 705 、 … 、 18277 , 18278 703,704,705、…、18277,18278 703,704,705、…、18277,18278的战舰分别被命名为 a a a 、 a a b 、 a a c 、 … 、 z z y 、 z z z aaa、aab、aac、…、zzy、zzz aaa、aab、aac、…、zzy、zzz ;
编号为 18279 , 18280 , 18281 、 … 、 475253 , 475254 18279,18280,18281、…、475253,475254 18279,18280,18281、…、475253,475254的战舰分别被命名为 a a a a 、 a a a b 、 a a a c 、 … 、 z z z y 、 z z z z aaaa、aaab、aaac、…、zzzy、zzzz aaaa、aaab、aaac、…、zzzy、zzzz;
编号为 475255 , 475256 , … 475255,475256,… 475255,475256,…的战舰分别被命名为 a a a a a , a a a a b , … aaaaa,aaaab,… aaaaa,aaaab,…;
已经了解到,第 N N N艘战舰就是外星人的指挥母舰。
地球联合作战指挥部必须要知道第N艘战舰的名字才能精准打击!
于是,指挥部给你一个编程任务:当任意给你一个整数 N N N时,你的程序能快速计算出编
号为 N N N的这艘战舰的名字?
类似于十进制转为二十六进制,但注意转进制时要先 n − − n-- n−−(否则直接这么处理,如果 n % 26 = = 0 n\%26==0 n%26==0,应该是 z z z,但这样操作就比 ′ a ′ 'a' ′a′还小,就会出问题)
错误示范!!!
while(n>0){
c[++q]='a'+(n%26)-1;n=n/26;
}
还有,
l
o
n
g
l
o
n
g
long\ long
long long的时候乘除常量要在常量后面加
L
L
LL
LL(第二次错了吧…要注意)
R
i
g
h
t
c
o
d
e
Right\ code
Right code
T3
异或 ( x o r ) (xor) (xor)运算的定义
对于 N N N个非负整数 x 1 , x 2 , x 3 . . . x N x_1,x_2,x_3...x_N x1,x2,x3...xN,这些数的异或:
x 1 x o r x 2 x o r x 3 . . . x o r x N x_1\ xor\ x_2\ xor\ x_3...xor\ x_N x1 xor x2 xor x3...xor xN
按照下面的方式定义:
x 1 x o r x 2 x o r x 3 . . . x o r x n x_1\ xor\ x_2\ xor\ x_3 ... xor\ x_n x1 xor x2 xor x3...xor xn,把他们用 2 2 2进制表示。对应的位数上的 1 1 1的个数为奇数的话,那么该位的结果为 1 1 1,对应的位数的 1 1 1的个数为偶数的话,该位的结果为 0 0 0。
小明有 N N N只猫,猫的编号从 1 1 1到 N N N。小明给每只猫一个标牌,标牌上面写着一个特殊标牌号 a i a_i ai,但是现在 N N N只猫的原始牌号 a i a_i ai均被淘气的小明修改成了 b i b_i bi。
b i b_i bi表示除了 i i i号猫自己以外的其它的猫的原始牌号的 x o r xor xor运算结果。
现在我们给出 1 1 1到 N N N号猫更改后的标牌号 b 1 , b 2 , b 3 , . . . . , b N b_1 ,b_2 ,b_3 ,....,b_N b1,b2,b3,....,bN ,请你根据这些标牌号求出每个小猫的原始标牌号 a 1 , a 2 , a 3 , . . . . , a N a_1 ,a_2 ,a_3 ,....,a_N a1,a2,a3,....,aN。
1、预备知识:异或(
X
O
R
XOR
XOR)的几个性质:
A^A=0;A^0=A;A^B^B=A;A^B=B^A;A^C=(A^B)^(B^C )
2、本题是已知
B
[
]
B[]
B[]数组,求
A
[
]
A[]
A[]数组,并且
N
N
N为偶数,下面以
N
=
4
N=4
N=4为例进行推导分析。
已知:
B[1]=A[2]^A[3]^A[4] 不含A[1]
B[2]=A[1]^A[3]^A[4] 不含A[2]
B[3]=A[1]^A[2]^A[4] 不含A[3]
B[4]=A[1]^A[2]^A[3] 不含A[4]
所以有:
B[1]^B[2]^B[3]^B[4]=A[1]^A[2]^A[3]^A[4]
则有:
(B[1]^ B[2]^ B[3]^ B[4])^ B[1] =(A[1]^ A[2]^ A[3]^ A[4])^ (A[2]^ A[3]^A[4]) =A[1]
同理,可以求出
A
[
2
]
、
A
[
3
]
、
A
[
4
]
A[2]、A[3]、A[4]
A[2]、A[3]、A[4]
于是累乘然后依次异或即可
C
o
d
e
Code
Code
T4
原题来自 数星星
二维偏序
数据已经按
y
y
y为第一关键字、
x
x
x为第二关键字进行升序排序,对某个点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)来说,前面的点都在它的“左下方”,所以不用考虑
y
y
y,只需考虑在
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)前面有多少个
x
x
x是小于或等于
x
0
x_0
x0的,这个数量就是点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)的等级。
C
o
d
e
Code
Code