HDU 5514】的更多相关文章

Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1315    Accepted Submission(s): 443 Problem Description There are m stones lying on a circle, and n frogs are jumping over them.The stones a…
Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4904    Accepted Submission(s): 1631 Problem Description There are m stones lying on a circle, and n frogs are jumping over them.The stones…
Frogs Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5514 Description There are m stones lying on a circle, and n frogs are jumping over them.The stones are numbered from 0 to m−1 and the frogs are numbered fro…
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意 : 有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过a[i]个石子 问所有被至少踩过一次的石子的序号之和 思路 : 不难发现, 从0开始, 每次越过a[i]个石子, 那么gcd(a[i], m)的倍数都能被经过 石子 k * (gcd(a[i], m)) < m 的都被算入 但如果按单独每个a[i]来计算对答案的贡献, 肯定会有重复, 重复部分就是lcm(a…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5514 [题目大意] m个石子围成一圈,标号为0~m-1,现在有n只青蛙,每只每次跳a[i]个石子, 问能被青蛙跳到的石子一共有几个 [题解] 我们发现k*gcd(m,a[i])的位置均可以被跳到,那么我们首先筛出m的约数, 判断其是否被覆盖到,不考虑重复的情况下, 每个被覆盖到的约数的贡献为x*((m-1)/x)*((m-1)/x+1)/2, 但是约数的倍数也为约数的情况被重复计算,因此我们按约…
Frogs Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 551464-bit integer IO format: %I64d      Java class name: Main There are m stones lying on a circle, and n frogs are jumping over them.The stones are numb…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意:有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过xi个石子.问所有被至少踩过一次的石子的序号之和. 题解:根据裴蜀定理每个青蛙可以跳到的最小石子编号为 gcd(xi,m) = bi,所有小于 m 的 bi 的倍数都是可以到达的石头.显然所有 bi 都为 m 的因子,标记 m 中所有能到达的因子,进行容斥,比如因子2.3.6都可以到达,计算 2 和 3 的倍数的时…
题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4)\)只青蛙.第\(i\)只青蛙每次能往前跳\(a_i\)步,但是他们跳的次数不加限制. 如果一块石头能至少被一只青蛙跳上去,那么称这块石头被占领了. 求所有可能被占领的石头的编号和. 分析: 首先我们应该发现这样一个事实: 每次向前跳\(a_i\)步的效果和跳\(GCD(a_i, m)\)步是一样…
题目链接 题意:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条ai个石头,问最后所有青蛙跳过的石头的下标总和是多少? 题解:暴力肯定会超时,首先分解出m的因子,自己本身不用分,因为石头编号是0到m-1,第i只青蛙只能走到gcd(ai, m)的位置,我们就可以把m的因子提取出来,然后对青蛙能走到的因子位置打标记.两个数组,第一个数组a代表是否能走到该因子,第二个数组b表示是否已经加过了,加过了几次,遍历到那个因子的时候要加上(a[i]-b[i])倍的数,这个数很可能是负数.至于公式利用等差…
题目描述:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条a[i]个石头,问最后所有青蛙跳过的石头的下标总和是多少? 思路:经过绘图我们发现,每次跳过的位置一定是k*gcd(a[i], m).然后我就不会了= =.于是看了别人的题解,方法挺好的. 找出所有的m的因子,然后对能通过gcd(a[i],m)得到的因子用vis数组标记,然后用num[i]表示该因子重复计算了几次,然后利用重复计算的次数来容斥一下就出来了.具体看代码吧 //看看会不会爆int!数组会不会少了一维! //取物问题一定要…