牛客网小白月赛40

  • A 数字游戏
  • B 跳跳跳
  • D 优美字符串
  • E 分组
  • F 过桥
  • G 空调遥控
  • I 体操队形

牛客比赛页面跳转

这是一篇菜鸟的自我总结,大佬勿喷,轻点轻点~

A 数字游戏

题目意思: 二进制中单数个1最后一位0变1或者1变0,双数个1最高位1变0,问几次能全0。
题解: 不难看出分单数1和双数1的情况,在此情况的基础上分尾数是1或者0的情况,所以就四种情况讨论,可以通过模拟小的样例得出规律。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,x,a[40],len,cnt,ans;
ll ejz(ll x)
{int i=0;while(x){a[i]=x%2;if(a[i]==1)cnt++;x/=2;i++;}return i-1;
}
int main()
{scanf("%d",&t);while(t--){cnt=0;for(int i=0;i<=39;i++)a[i]=0;scanf("%lld",&x);len=ejz(x);if(cnt%2==1){if(a[0]==1)ans=cnt*2-1;else ans=cnt*2+1;}else{if(a[0]==1)ans=cnt*2-2;else ans=cnt*2;}printf("%lld\n",ans); }return 0;
}

B 跳跳跳

题目意思: 给出一个1-n的具有ai权值的环,自选起点往左或者右跳(必须是没跳过的点)n次,每次获得期望i*ai(i为第几次跳跃),求期望最大。
题解: 知道是dp了最后还是晚了一步,通过补题A了这道题,枚举区间[i,j]的最大值是[i+1,j]往左跳还是[i,j-1]往右跳,区间dp的模板。

#include <iostream>
#define int long long
using namespace std;
const int N=4010;
int dp[N][N],a[N],n,ans;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];a[i+n]=a[i];}for(int i=1;i<=2*n;i++){dp[i][i]=a[i];ans=max(dp[i][i],ans);}for(int k=2;k<=n;k++){for(int l=1;l+k-1<=2*n;l++){int r=l+k-1;dp[l][r]=max(dp[l+1][r]+k*a[l],dp[l][r-1]+k*a[r]);ans=max(dp[l][r],ans);}}cout<<ans<<endl;return 0;
}

D 优美字符串

题目意思: 水题,相同字符中间加一个不同的字符就好了,计数的话就cnt++。

#include<bits/stdc++.h>
using namespace std;
int t,cnt;
string s;
int main()
{cin>>t;while(t--){cnt=0;cin>>s;for(int i=1;i<s.length();i++)if(s[i]==s[i-1])cnt++;cout<<cnt+s.length()<<endl;} return 0;
}

E 分组

题解: 二分枚举m组最大容量。

#include<bits/stdc++.h>
using namespace std;
int n,x,k,cnt,ans,l,r;
map<int,int>m;
bool pd(int x)
{int y=0;for(auto &bianli:m){if(bianli.second%x==0)y+=bianli.second/x;else y+=(bianli.second/x+1);}if(y<=k)return true;return false;
}
int main()
{scanf("%d %d",&n,&k);while(n--){scanf("%d",&x);m[x]++;}if(m.size()>k){printf("-1\n");return 0;}//不够组 int l=1,r=200010;while(l<=r)//二分求最多能装的人数最少 {int mid=l+r>>1;if(pd(mid))r=mid-1,ans=mid;else l=mid+1;}printf("%d\n",ans);return 0;
}

F 过桥

题解: 逆推枚举从终点到起点的最小时间,a[i]<0的回跳其实没有意义。(吐槽:看着逆推的dp还挺像期望dp的)

#include<bits/stdc++.h>
using namespace std;
int n,a[2010],dp[2010];
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>a[i];memset(dp,0x3f3f3f3f,sizeof(dp));dp[n]=0;for(int i=n-1;i>=1;i--)//逆推dp {if(a[i]<0)continue;//回跳没意义 for(int k=i+1;k<=i+a[i];k++)dp[i]=min(dp[i],dp[k]+1);}if(dp[1]==0x3f3f3f3f)cout<<-1<<endl;else cout<<dp[1]<<endl;return 0;
}

G 空调遥控

题解: 还是二分查找,对于每个i,a[i]-p为温度的时候a[i]刚好是能容忍的最大值,以a[i]-p为温度查找的话最小值应该在a[i]-2*p的位置。i-pos+1就是数量啦。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N],n,p,ans;
int main()
{cin>>n>>p;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);ans=1;for(int i=2;i<=n;i++){int pos=lower_bound(a+1,a+i,a[i]-2*p)-a;//以a[i]-p为温度,长度为[a[i]-2*p,a[i]] ans=max(ans,i-pos+1);}cout<<ans<<endl;
}

I 体操队形

题解: 10!==10的阶层,可以用枚举,需要用到全排列next_permutation(b,b+n)然后得出是否满足就行了。

#include<bits/stdc++.h>
using namespace std;
const int N=11;
int a[N],b[N],n,ans,pl[N];
bool pailie()
{for(int i=0;i<=10;i++)pl[i]=0;for(int i=1;i<=n;i++){if(a[b[i]]==b[i])//随意 {pl[b[i]]=1;continue;}if(pl[a[b[i]]]==1)return false;//前面出现过 pl[b[i]]=1;}return true;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=i;do{ans+=pailie();}while(next_permutation(b+1,b+n+1));printf("%d\n",ans);return 0;
}

牛客网小bai月赛40相关推荐

  1. 牛客网-小周的曲射炮

    牛客网-小周的曲射炮(公式推导) 题目描述 小周最近在玩一款二战游戏,他因而对曲射炮的轨迹产生了很大的兴趣,但是在尝试计算后,小周发现这个问题并不是那么简单,他因而来请教你这位计算机高手,请你来帮帮他 ...

  2. 牛客网 - 小乐乐打游戏(BFS)

    链接:https://ac.nowcoder.com/acm/contest/301/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  3. 牛客网 小睿睿的方案 解题报告

    小睿睿的方案 链接: https://ac.nowcoder.com/acm/contest/371/C 来源:牛客网 题目描述 小睿睿虽然已经是人生赢家了,但当他看见学校里其他人秀恩爱时仍旧会十分不 ...

  4. 【牛客网】 小白月赛16 D小阳买水果

    题目链接:https://ac.nowcoder.com/acm/contest/949/D 题意:寻找最长的连续序列,满足序列和大于0. 题解:按照前缀和的大小排序,可以保证后面的一定大于等于前面( ...

  5. 【牛客网】小白月赛16 H 小阳的贝壳

    题目链接:https://ac.nowcoder.com/acm/contest/949/H 题意:求区间gcd,带修改. 题解:线段树gcd,差分,单点修改,区间询问.注意gcd满足的性质,可以使其 ...

  6. 牛客网小白二(2018.4.21)

    需要加强的内容:1.递归(尼姆堆) 2.字符与字符串的输入输出,有关其求长度或个数的的函数.语法等 3.有向图.无向图.树的遍历 一.数字方阵 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/ ...

  7. 牛客网 小A买彩票 (dp)

    题目链接:点此跳转 题目大意: 小A最近开始沉迷买彩票,并且希望能够通过买彩票发家致富.已知购买一张彩票需要3元,而彩票中奖的金额分别为1,2,3,4元,并且比较独特的是这个彩票中奖的各种金额都是等可 ...

  8. 【牛客网】 小白月赛16 J题 小雨坐地铁

    题目链接:https://ac.nowcoder.com/acm/contest/949/J 题意:多条地铁线路,从起点到终点的最短路. 题解:使用分层图最短路. 很容易想到建 m 层图,如果多条地铁 ...

  9. 牛客网 OI 赛制测试赛

    比赛链接:这里写链接内容 A 斐波那契 链接:https://www.nowcoder.com/acm/contest/181/A 来源:牛客网 设f[i]表示斐波那契数论的第i项 f[1]=1,f[ ...

最新文章

  1. ajax+php+jq+面向对象,php+jquery+ajax+json的一个最简单实例
  2. 一个快速、完善的Android开发框架整合实践(QuickAndroid)
  3. android 怎么加链接地址,Android TextView添加超链接的方法示例
  4. 禁止更改计算机名_【复习收藏】计算机操作系统考点归纳
  5. 20170908校内训练
  6. mapPartition方法与map方法的区别(转载)
  7. [构造训练]CF1227G Not Same,CF1375H Set Merging,CF1364E X-OR
  8. python命名空间特性_PHP关键特性之命名空间实例
  9. OpenCV精进之路(九):图像轮廓和图像分割修复——图像修复技术
  10. 实战:京东购物车静态界面实现
  11. oracle decode和case when,竟然where 后可以跟着decode 那也就是 where后可以跟着case when ????...
  12. matlab运行没有图片,simulink模型运行时没报错,但scope没有图像,什么原因?
  13. 解决element为新版的 vue-cli 准备了相应的 Element 插件的报错(缺少头像组件)
  14. 软件人员kpi制定模板_最常用5大绩效工具(附模板):OKR、KPI、MBO、平衡计分卡、360度...
  15. 树上随机游走的期望距离
  16. 4G摄像头采用GB28181协议成功接入LiveGBS国标流媒体平台的设置流程
  17. 华云数据出席“云网芯安密屏”讨论会:加快数字化转型 推动湖北信创产业快速发展
  18. thinkphp6 短信宝/腾讯云发送手机号验证码
  19. 38 --> 详解 OpenWRT RESET按键、键盘响应逻辑
  20. i.MX6网卡驱动程序fec.c的分析(AR8035网卡驱动程序的详细分析)之二

热门文章

  1. python time模块_Python time模块和datetime模块
  2. 专利查新报告该怎么做?
  3. 支付宝正式发布黑莓版客户端
  4. 对于计算机网络体系结构的初步思考(附图解)
  5. 太赫兹芯片是什么原理_太赫兹科学与技术原理
  6. C#中错误:线程间操作无效,从不是创建控件的线程访问它。
  7. python编写24点游戏
  8. 物联网卡能否长期使用 有没有限制
  9. Revit2019二次开发外部工具(附加模块)的安装
  10. 计算机exce常用功能,电脑办公实用小技巧