20200716NOIP模拟测

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 1iQ)完成后,请你求出此时 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](yx);同时更新 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;

C o d e Code Code


T2

【题目描述】
未来的某一天, N ( 1 ≤ N ≤ 1000000000000001 ) N(1≤N≤1000000000000001) N1N1000000000000001艘外星人战舰突然出现在地球上空,外星人的计数很奇怪,和地球上的计数规则很不一样。于是这些战舰的编号如下:
编号为 1 , 2 , … , 26 1,2,…,26 1226的战舰分别被命名为 a , b , … , z a,b,…,z abz
编号为 27 , 28 , 29 , … , 701 , 702 27,28,29,…,701,702 272829701702的战舰分别被命名为 a a , a b , a c , … , z y , z z aa,ab,ac,…,zy,zz aaabaczyzz
编号为 703 , 704 , 705 、 … 、 18277 , 18278 703,704,705、…、18277,18278 7037047051827718278的战舰分别被命名为 a a a 、 a a b 、 a a c 、 … 、 z z y 、 z z z aaa、aab、aac、…、zzy、zzz aaaaabaaczzyzzz
编号为 18279 , 18280 , 18281 、 … 、 475253 , 475254 18279,18280,18281、…、475253,475254 182791828018281475253475254的战舰分别被命名为 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 aaaaaaabaaaczzzyzzzz
编号为 475255 , 475256 , … 475255,475256,… 475255475256的战舰分别被命名为 a a a a a , a a a a b , … aaaaa,aaaab,… aaaaaaaaab
已经了解到,第 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 x1x2x3...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 b1b2b3....bN ,请你根据这些标牌号求出每个小猫的原始标牌号 a 1 , a 2 , a 3 , . . . . , a N a_1 ,a_2 ,a_3 ,....,a_N a1a2a3....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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值