【luogu CF643F】Bears and Juice(结论题)
Bears and Juice
题目链接:luogu CF643F
题目大意
有 n 个熊 p 张床,有一些酒桶,数量你定,其中有一个放酒其它放果汁,然后每天每个熊可以选一个酒桶集合(可以为空),如果熊吃到酒就会占一张床睡觉,如果不够床或者熊全睡了就输了。
然后问你给你 1~q 天的时间,你最多能弄多少个酒桶,使得这些熊一定能在不输的条件下找到酒的位置。
思路
很神奇的题呢!
考虑怎样会区分出酒桶(因为你酒在那个桶都要能找到),那我们考虑怎样会区分不出来。
然后再发现一个东西是我们只能从谁醉了来得到信息,有用的信息。
那我们考虑怎么区分,就是对于一个桶如果我们列一个表表示第 i i i 天第 j j j 头熊有没有吃它。
那显然如果表不同就是不同的桶啦,那表有多少个呢?
考虑枚举由多少个熊吃了这个,然后对于每个熊它可以在这 x x x 天的任意一天吃。
R x = ∑ i = 0 min ( n − 1 , p ) ( n i ) x i R_x=\sum\limits_{i=0}^{\min(n-1,p)}\binom{n}{i}x^i Rx=i=0∑min(n−1,p)(in)xi
那就结束嘞!
(由于不能逆元你组合数可以维护每个小质数有多少个,然后大的乘积是多少)
(就是小的就是可能会被下面 i i i 除掉的,也就是 130 130 130 以内的,大的就直接记录乘积即可)
(预处理出 R R R 就可以 O ( min ( n , p ) q ) O(\min(n,p)q) O(min(n,p)q) 完成求答案啦)
(带 log \log log 不管不写啦啦啦/tp)
代码
#include<cstdio>using namespace std;int n, p, q;
unsigned int ans, sum, di, vals[131];
int val[131], id[131], tot, num[131];unsigned int ksm(unsigned int x, int y) {unsigned int re = 1;while (y) {if (y & 1) re = re * x;x = x * x; y >>= 1;}return re;
}void Run(int x, int gx) {for (int i = 1; i <= tot; i++) {while (x % val[i] == 0) {num[i] += gx; x /= val[i];}}di = di * x;
}int main() {for (int i = 2; i <= 130; i++) {bool prime = 1;for (int j = 2; j < i; j++) if (i % j == 0) {prime = 0; break;}if (prime) id[i] = ++tot, val[tot] = i;}scanf("%d %d %d", &n, &p, &q);di = 1; vals[0] = 1;for (int i = 1; i <= p && i < n; i++) {Run(n - i + 1, 1); Run(i, -1);sum = 1;for (int j = 1; j <= tot; j++) sum *= ksm(val[j], num[j]);vals[i] = sum * di;}for (int i = 1; i <= q; i++) {sum = 0; di = 1;for (int j = 0; j <= p && j < n; j++)sum += vals[j] * di, di = di * i;ans ^= sum * i;}printf("%u", ans);return 0;
}
【luogu CF643F】Bears and Juice(结论题)相关推荐
- [CF643F]Bears and Juice
题目 传送门 to CF 题目概要 有 n n n 只小白鼠,有 k k k 瓶药(其一是毒药).共 t t t 天时间,从第 0 0 0 天开始,你可以给小白鼠任意喝药,次日你可以看到这些小白鼠的存 ...
- CodeForces - 1498E Two Houses(交互+图论,结论题)
题目链接:点击查看 题目大意:给出一个由 nnn 个点组成的竞赛图,现在要求出一组点对 (A,B)(A,B)(A,B),满足两个点可以互达,且入度的绝对值之差最大 题目分析:结论题,先放结论: 结论: ...
- agc015F - Kenus the Ancient Greek(结论题)
题意 题目链接 $Q$组询问,每次给出$[x, y]$,定义$f(x, y)$为计算$(x, y)$的最大公约数需要的步数,设$i \leqslant x, j \leqslant y$,求$max( ...
- 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组
题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...
- CF869A The Artful Expedient 结论题+数论
传送门 题目描述 Tommy和Karen在玩一个游戏. 他们各自准备了一个长度为n的数组,Tommy的数组称作a,Karen的数组称作b. 保证这2n个数互不相同,设这2n个数构成的集合为S. 现在他 ...
- 数字迷阵(矩阵快速幂+结论题)
数字迷阵(矩阵快速幂+结论题) 题目描述 小可可参观科学博物馆时,看到一件藏品,上面有密密麻麻的数字,如下所示: 1 2 3 5 8 13 21 34 55 ...
- 牛客练习赛51 C 勾股定理 (结论题)
大致题意 给一个 n (1<=n<=1e9) ,求其组成直角三角形的另外两条边,输出任意一组即可. 思路 结论题 除了 1,2 没用答案,其余的所有正整数满足以下勾股数结论. 可以记忆一下 ...
- [BZOJ3609][Heoi2014]人人尽说江南好 结论题
Description 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家), 最近他 想起了小时候在江南玩过的一个游戏. 在过去,人们是要边玩游 ...
- 【uoj#175】新年的网警 结论题+Hash
题目描述 给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1.对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 ...
最新文章
- 信号编程之sigaction函数和sigqueue函数
- 关闭PdfReader右侧工具栏的方法
- SAP Spartacus 的 Banner Component 请求
- 从谷歌公司发现的十个至理名言
- 信息学奥赛一本通 1245:不重复地输出数 | OpenJudge NOI 1.11 08:不重复地输出数
- svg标签的CSS3动画特效 - 经典特效2
- html手机号带国家前缀,今天跟大家总结一下手机型号的前缀、后缀(...
- 机器学习——Azure机器学习模型在线搭建实验原理+详细操作步骤+分析(以UCI数据库的数据为例)
- 信号的同调性(Coherence)分析及MATLAB实例
- 大龄程序员都去哪了?
- 不用社保也可以办理深圳居住证(全程网上办理) 解决提交后一直暂存状态
- 公共DNS服务器IP地址
- CNN基础——如何设置BatchSize
- NYOJ-54小明的存钱计划
- 小人物吃金币_android小游戏(1)
- 常见的Hash算法(General Purpose Hash Function Algorithms)
- Spring Boot 项目 - API 文档搜索引擎
- 整数n分解成素数乘积c语言,C程序实现整数的素数和分解问题
- Android 2D游戏引擎1
- 阅读bottle.py源码收获
热门文章
- 算法(1) 冒泡排序
- 使用three.js创建3D机房模型-分享一
- html 标签中 title 的换行
- Rust语言:元编程,强大的宏系统,菜鸟到高手进阶的必经之路
- 使用ContentObserver实现短信提醒功能
- 深圳一服装厂如何利用大数据塑造核心竞争力转型先进制造业?
- 地下城与勇士体验服不显示服务器,地下城与勇士M手游体验服进不去怎么办?内测问题与解决方案汇总[多图]...
- 远程挂断电话流程分析
- Windows下Linux子系统的安装与使用 wsl
- java socket 两台电脑,Socket程序两台计算机为什么连接失败?(在同一台电脑上就成功)...