zoukankan      html  css  js  c++  java
  • CODEFORCES掉RATING记 #3

      比赛:Codeforces Round #426 (Div. 2)
      时间:2017.7.30晚

      开场先看AB
      A:给你两个方向,和旋转次数(每次旋转90度),问你旋转方向是什么
      B:给你一个字符串,问你是否存在一个位置使得它前面后面都出现过的字母(>)k个
      前两题比较简单
      C:两个人在玩一个游戏。初始时两个人的分数都是(1)。每次一个人的分数( imes k),另一个人的分数( imes k^2)。给你(n)个结果问有没有可能出现这个结果。
      pollard rho暴力分解质因数
      可以发现(k)是质数的情况与原题是等价的。
      设两个人的分数为(x,y),设(a=gcd(x,y),b=frac{xy}{a^2})
      如果(a)(b)的倍数而且(frac{a}{b})只有三次项那么结果是合法的
      (1)~(1000)中只有(168)个质数,枚举质数暴力除即可。但是因为除法很慢所以会被卡常
      后来我看到一个简单的做法,直接把(x imes y)开三次方,然后判断是不是(x)(y)的因子。
      D:设当前这个数((a_i))上一次出现的位置为(j),那么切割(j)~(i-1)这段都会产生(1)的贡献。用线段树维护
      时间复杂度:(O(nklogn))
      E:有一种奇怪的做法:先枚举(0 ext{~}9)各出现几次,再用搜索判断是否存在这类数。zjt大爷说时间复杂度没有保证,但是我本机极限数据只跑了0.6秒。时间复杂度还是有保证的,大概是(O(C^9_{26}))

  • 相关阅读:
    NOJ-1581 筷子 (线性DP)
    UVA-242 Stamps and Envelope Size (DP)
    POJ 1860 (SPFA判断正环)
    POJ 3268 最短路水题
    STL----priority_queue
    STL----unique
    POJ 2031(最小生成树Kruskal算法+几何判断)
    POJ 3468(线段树区间修改+区间求和)
    学习线段树
    POJ 1251(最小生成树裸题)
  • 原文地址:https://www.cnblogs.com/ywwyww/p/8510726.html
Copyright © 2011-2022 走看看