牛客练习赛20(ABC)
A. 礼物
题意:
我从买奥利奥的事情中想出了一个算法题:假设某个店铺有N种不同类型的1元奥利奥和M种不同类型的2元奥利奥,而且余量无限,我的钱有k元,我想把k元都用来买奥利奥,且可以买同类型的奥利奥,你能帮我算出有多少种购买方式吗?设答案为Z,这个数字也许会很大,所以我们只需要输出Z mod P的值。
分析:
计数问题,可以考虑动态规划:每个物品可以选无数次,即无穷背包,注意无穷背包的递推写法。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = ;
int N,M,K,P;
int d[MAXN];
int main()
{
int T;
scanf("%d",&T);
while(T--) {
memset(d,,sizeof(d));
scanf("%d%d%d%d",&N,&M,&K,&P);
d[] = ;
for(int i = ; i <= N; i++) {
for(int k = ; k <= K; k++)
d[k] = (d[k] + d[k-])%P;
}
for(int i = ; i <= M; i++) {
for(int k = ; k <= K; k++)
d[k] = (d[k] + d[k-])%P;
}
printf("%d\n",d[K] );
}
return ;
}
B. 麻婆豆腐
题意:
“咳咳...请听题!我手上有n枚硬币,第i枚正面朝上的概率是Pi。我现在每个硬币各抛一次,正面朝上看做1,背面朝上看做0,把所有硬币得到的数异或起来决定最后得到的数。问:有多少个子集合使得0和1的概率相等?” 不管音无给了怎样的数,奏都是一分钟不到就算出来了!不愧是前学生会长啊~ 于是他们就去食堂吃麻婆豆腐了,现在,你也来算一下吧。
分析:
可以说这个题很惊世骇俗了,当一个硬币的概率是0.5时,它一反转,所得异或值就会改变,而且概率相等,反之,当他的概率不是0.5时,概率必然不等,答案就转化为有多少个集合至少含有一个0.5的硬币,取补集,概率为0.5的硬币是
int main() {
int T; scanf("%d",&T);
for(int i = ; i < T; i++) {
int n; scanf("%d",&n);
int cnt = ;
double p;
for(int i = ; i < n; i++) {
scanf("%lf",&p);
if(p==0.5) cnt++;
}
cnt = n - cnt;
long long ans = ,cnts=;
for(int i = ; i < n; i++)
ans<<=;
for(int i = ; i < cnt; i++)
cnts<<=;
cout<<ans-cnts<<endl;
}
return ;
}
C. 寻宝
题意:
这个迷宫由n个房间组成,编号为0到n - 1,每个房间里都有一颗宝石,房间通过单向通道连接。每个房间里有两个门:一个通向第R个房间(R=(a·v2 + b·v + c) mod n),另一个通向迷宫出口,一旦离开迷宫,便会触发自毁机关,将再也没有机会继续收集宝石。现在,她可以在任何地点进入迷宫,沿隧道移动并收集宝石。
分析:
因为每个点,出度均为1,点的数目 ,时间复杂度需要 。
那么图里面只有环,和链+环,这样标记遍历即可。
首先遍历链,发现有环后,从那里再第二次标记,这样,环上每个结点都是环的长度。
链就相应要短一些。注意,访问的时候,下面的节点已经访问过了。
#include <bits/stdc++.h> using namespace std; long long a,b,c,m; long long f(long long v) {
return (a*v*v + b*v + c)%m;
} int main()
{
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T); while(T--) { scanf("%lld%lld%lld%lld",&a,&b,&c,&m);
vector<long long> L(m,-); for(long long i = ; i < m; i++) {
if(L[i]>=) continue; long long p = i;
long long plen = ; while(L[p]==-) {
L[p] = -;
plen ++;
p = f(p);
} if(L[p]>) {
plen+=L[p];
} long long clen = ;
while(L[p]==-) {
L[p] = -;
clen++;
p = f(p);
} p = i;
while(L[p]<) {
if(L[p]==-) L[p] = clen;
if(L[p]==-) L[p] = plen--;
p = f(p);
}
}
cout<<*max_element(L.begin(),L.end())<<endl;
}
return ;
}
牛客练习赛20(ABC)的更多相关文章
- 牛客练习赛 29 E 位运算?位运算!(线段树)
题目链接 牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- 牛客练习赛22C Bitset
牛客练习赛22C 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...
随机推荐
- java中获得对象的方法
- 设置IIS允许下载.config文件
<configuration> <system.webServer> <security> <requestFilteri ...
- java中的输入输出方法
输入 import java.util.Scanner; public class EnterTest { public static void main(String[] args) { //主方法 ...
- nyoj 10——skiing————————【记忆化搜索】
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- 吴恩达《Machine Learning Yearning》总结(1-10章)
1.为什么选择机器学习策略 案例:建立猫咪图像识别app 系统的优化可以有很多的方向: (1)获取更多的数据集,即更多的图片: (2)收集更多多样数据,如处于不常见的位置的猫的图,颜色奇异的猫的照片等 ...
- javascript模块化是什么及其优缺点介绍
模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口.模块间具有透明性 如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而 ...
- Jquery实现自动生成二级目录
在博客园开通博客以后,就看到某位博友写的js自动生成目录的文章,当时觉得生成目录能给阅读带来方便,所以就直接拿来使用了.用了一段时间以后,发现只能生成一级目录,不能生成多级目录,有点美中不足.所以想着 ...
- 设计模式之职责链模式(JAVA实现)
学习netty框架时,看到有人说netty用到了设计模式的职责链模式,学习一下职责链模式,主要参考大话设计模式. 主要场景: 小菜想要加薪,向经理提出加薪请求,经理没有权限,经理交由总监处理,总监也没 ...
- 从零开始的全栈工程师——ajax
AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = Asynchronous JavaScript and XML. AJAX 是一种用于创建快速动态网页 ...
- JavaScript数组求和
<script> function demo(){ var d=document.getElementsByTagName("input")[0].value.spli ...