牛客练习赛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 ...
随机推荐
- (转)[Nginx] – 配置文件优化 [一 ,二]
[Nginx] – 安全优化 – 配置文件优化 [二] 原文:https://www.abcdocker.com/abcdocker/586 [Nginx] – 性能优化 – 配置文件优化 [一] 原 ...
- vue中promise的使用
vue中promise的使用 promise是处理异步的利器,在之前的文章<ES6之promise>中,我详细介绍了promise的使用, 在文章<js动画实现&&回 ...
- storm中几个概念的大小关系
从图可以看出来:topology>supervisor>worker>excutor>task; 也就是说一个topology可以运行在多个supervisor上,一个supe ...
- bootstrap的datepicker使用(1.将默认的英文设置为中文2.选择日月年的时候记录之前的操作)
参考网页 bootstrap datepicker 属性设置 以及方法和事件 1.如何将bootstrap的datepicker默认的英文设置为中文 第一步,新建一个js文件(bootstrap ...
- android检查网络连接状态的变化,无网络时跳转到设置界面
在AndroidManifest.xml中加一个声明<receiver android:name="NetCheckReceiver"> <intent-filt ...
- 从XCodeGhost事件看软件来源鉴别的重要性
事件 事件引爆于9月18日乌云网公布的一则分析报告:"XCode编译器里有鬼 – XCodeGhost样本分析",这份纯粹的技术分析报告引发中国iOS生态链的众多开发者的关注. 引 ...
- spring-boot 1.4.x遇到的cpu高的问题
如果你的spring-boot应用里tomcat线程耗cpu较高,并主要耗在做读取jar的操作上(堆栈类似下面),可能跟我们遇到同样的问题. CRC32.update(byte[], int, int ...
- [转]Implementing User Authentication in ASP.NET MVC 6
本文转自:http://www.dotnetcurry.com/aspnet-mvc/1229/user-authentication-aspnet-mvc-6-identity In this ar ...
- 全局数据 GetGlobalDataSet
/// <summary> /// 获取全局数据 /// </summary> /// <returns></returns> public DataS ...
- 正则表达式验证问题(用户名、密码、email、身份证
实现的代码如下: <html> <head> <meta charset="UTF-8"> </head> <body> ...