[关闭]
@Falsyta 2016-12-27T14:32:12.000000Z 字数 1721 阅读 1380

死亡阴影之谷

OI


目录

[0] PE 464
[0] PE 303
[2-] PE 565

杂记 & 题解

2016.12.13 火曜日

原来的机房要被拆了……从我学OI到现在已经有3个机房惨遭黑手了……
身边物是人非,连机房都没了,我也快到了要离开的时候了……
到了晚上打开了一些不太对的歌单整个人画风都不对了……
也不知道我18岁的时候会在干什么……整个人都非常绝望。
最悲伤的是待了4年快要离开了也没留下来什么。
但也只能这样了,只能希望自己能再留下来一年了。

一边回忆一下开学来写的题一边写写新题吧。

PE 464

感觉在PE上出个裸树状数组也是挺厉害的。

考虑算不合法的方案数,显然只可能不符合两个条件中的一个,于是直接所有方案数减违反第一个限制减违反第二个限制的方案数就行了。
化成就变成一个树状数组大暴力了……

PE 303

我的智力真的有点低啊……
直接建边跑BFS不就好了……我是智障么……

  1. def calc(n):
  2. print n
  3. last = [(-1, -1) for _ in xrange(n)]
  4. last[1] = (0, 1)
  5. last[2] = (0, 2)
  6. q = [1, 2]
  7. for u in q:
  8. vs = [(u * 10 + d) % n for d in xrange(3)]
  9. for d, v in enumerate(vs):
  10. if last[v][0] == -1:
  11. q.append(v)
  12. last[v] = (u, d)
  13. cur = 0
  14. ans = 0
  15. pow10 = 1
  16. while last[cur][0] != 0:
  17. v, d = last[cur]
  18. ans = ans + d * pow10
  19. pow10 = pow10 * 10
  20. cur = v
  21. return ans + pow10 * cur
  22. res = 2
  23. for i in xrange(3, 10001):
  24. res += calc(i)
  25. print res

PE 565

智力低到爆炸……
显然是直接算所有的贡献。
的情况可以直接暴力,的话需要素数筛。

考虑如果是合数,那么考虑的一个素因子,有,也就是,其中

然后就变成埃氏筛了……

我居然写了一个miller-rabin大暴力就上了……真的是……

不包括数论板子的暴力

  1. m = 10 ** 11
  2. ans = 0
  3. cur = 4033
  4. valid = []
  5. while cur < m:
  6. not_prime = False
  7. for d in _known_primes:
  8. if cur % d == 0:
  9. not_prime = True
  10. break
  11. if (not not_prime) and is_prime(cur):
  12. valid.append(cur)
  13. t = m // cur
  14. ans += cur * (1 + t) * t / 2
  15. if cur * cur <= m:
  16. tt = m // (cur * cur)
  17. ans -= cur * cur * (1 + tt) * tt / 2
  18. cur += 4034
  19. for i in prime_list:
  20. val = i * i
  21. sigma = (1 + i + i * i) % 2017
  22. while val <= m:
  23. if sigma == 0:
  24. valid.append(val)
  25. t = m // val
  26. ans += val * (1 + t) * t / 2
  27. if val * i <= m:
  28. print val * i
  29. tt = m // (val * i)
  30. ans -= val * i * (1 + tt) * tt / 2
  31. val *= i
  32. sigma = (sigma + val) % 2017
  33. valid = sorted(valid)
  34. for i in valid:
  35. for j in valid:
  36. if i * j > m:
  37. break
  38. if (j < i) and (i % j != 0):
  39. t = m // (i * j)
  40. ans -= i * j * (1 + t) * t / 2
  41. print ans

2016.12.27 火曜日

难过……
在各种地方被各种各样的人虐……
记得自己一直以来也都是这样……
无论是在逃避还是在面对……
事实并没有改变啊……
我到底在干嘛啊……

CF484C Strange Sorting

从第步到第步的转移可以看成一个置换……
快速幂就行了……

CF487C Prefix Product Sequence

……

CF487D Conveyor Belts

分块……

CF487E Tourists

点双树上树剖……

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注