zoukankan      html  css  js  c++  java
  • CSP-S 模拟46

    已经一个月多没写博客了,昨天考试考炸了,改完T1、T2, T3看不懂题解就这样

    我的成绩

    倒数第一

    T1  Set

    前缀和水题(我还是太菜了),

    N个数前缀和有N个,在模N意义下,只可能是0,1,2,… N-1,共N种情况,当前缀和为0时,显然是1~i,

    那么除去为0的情况,N个前缀和里必有两个前缀和相等,那么这一段区间和是N的倍数,输出即可

    T2 Read

    完全没想到可以这么做,推了半天柿子,蛮有信心的开打,结果最基本的统计不会(我就是菜鸡,我SB)

    不过还是想说一下我都在忙啥(可能以后会用的着)

    可以不看——————————————————————————————————

    S=(1<<k)-1,形如11111111的二进制数,

    &S即为% (1<<k)

    A[n]=(A[n-1]*y+z)%mod

    打表得递推式推着推着会出现连续的相等的数,即这各值以后都不会变了

    开始推~ A[n]=((((A[1]*y+z)*y+z)*y+z)……

    $ A[n]=A[1]*y^{n-1}+z*(y^{n-2}+y^{n-3}+……+y+1) $

    不变的条件是A[n]==A[n+1]

    $ A[n+1]-A[n]=(A[1]*y^{n}-A[1]*y^{n-1})+z*y^{n-1} =0$

    由 A[1]=x 得

    (x*y-x+z)*y^{n-1}%mod==0

    可求出连续相等的数的第一个位置n,貌似用BSGS求,不太会(好吧,我忘了)

    不过这个东西好像没啥用~

    ———————————————————————————————————————

    正解求出数量最多的种类,在扫一遍求出该种类的个数,没了,大概就是一个简单的统计,我TM的整那么复杂还Wa0

    T3 Race(好题

    对于排名为X的人会获得X^2 的积分,而他前面会有X个人,非常神奇的转换一下,这就是从比他靠前的人每选两个人加个1,

    把每个数从二进制高位到低位存到trie树中,

    对于一个数a[]找到与他前几个高位一样,而第i位不同的数的个数num,

    对于这些数只要天数的第i位与a[]的第i位相同,那么异或完之后这些数都大于a[],那么两两组合贡献为num*num,再乘上天数 2^(m-1) (第i位与a[]相同,所以是2^(m-1))

    那么还有其他的第j位不同的数的个数num2,它们和第i位不同的数同时大于a[]的天数是 2^(m-2) ,贡献$ 2^num*num_2*2^{m-2} $

    统计每一个数的积分和,异或一下

  • 相关阅读:
    新手第一次联系oracle的碰到的触发器不能创建的问题
    dubbo注册中心占位符无法解析问题(二)
    dubbo注册中心占位符无法解析问题(一)
    .
    Ubuntu16 安装后配置
    TiDB-----使用 TiUP cluster 在单机上模拟生产环境部署步骤
    TiDB 单机安装(在 Linux OS 上部署本地测试环境)
    WPF查找子控件和父控件方法
    Java基础相关
    C++ namespace浅析
  • 原文地址:https://www.cnblogs.com/heoitys/p/11548273.html
Copyright © 2011-2022 走看看