A 肥猪的钢琴床

思路: 我比赛的时候是没做出来,没往dp想,后来赛后看大佬代码才知道正解。我们发现对于每个点来说,都有两种情况,一种是取1留0,一种是取0留1,这正好是吻合了dp的想法,还有一种极端情况是把前面的所有的1全部去掉。所以我们就获得了三个dp式子
dp[i][0]=dp[i-1][0]+a[i]-‘0’;
dp[i][1]=min(dp[i-1][1]+‘1’-a[i],dp[i-1][0]+‘1’-a[i]);
dp[i][2]=min(dp[i-1][1]+a[i]-‘0’,dp[i-1][2]+a[i]-‘0’);
最后三种情况取大就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[1000007];
int dp[1000007][5];
int main()
{int n;scanf("%d",&n);scanf("%s",a+1);for(int i=1;i<=n;i++){dp[i][0]=dp[i-1][0]+a[i]-'0';dp[i][1]=min(dp[i-1][1]+'1'-a[i],dp[i-1][0]+'1'-a[i]);dp[i][2]=min(dp[i-1][1]+a[i]-'0',dp[i-1][2]+a[i]-'0');}printf("%d\n",min(dp[n][0],min(dp[n][1],dp[n][2])));return 0;}

B 拯救小a

思路: 就直接算有多少个a就好了,签到题。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[100000];
int main()
{int cnt=0;while(~scanf("%s",a)){if(a[0]=='.')break;int len = strlen(a);for(int i=0;i<len;i++){if(a[i]-'a'==0){cnt++;}}}printf("%d\n",cnt);return 0;}

C 母牛的俄罗斯轮盘赌

思路: 一开始我以为是斐波那契博弈的变形,后来没做出来,最后是推了10几个情况,然后发现了规律,规律很容易看出来(自己去推一下就可以了)。是(先后先后后)循环的。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{int t;cin>>t;while(t--){int n;cin>>n;n%=5;int flag=0;if(n==0||n==2)flag=1;if(flag==1)printf("Cow\n");else printf("Pig\n");}return 0;}

D 中学数学题

思路: 因为是求q进制下的后导零,而且q是质数,所以有后导零只有可能是阶乘中有q,有几个q就有几个后导零。(你可以从10进制去理解)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{int t;cin>>t;while(t--){int n,p;cin>>n>>p;ll cnt=0;for(int i=p;i<=n;i+=p){int t = i;while(t%p==0){cnt++;t/=p;}}printf("%lld\n",cnt);}return 0;}

E 枚举求和

思路: 因为k是gcd(i,j)的因子,所以只有可能在i,j都是k的倍数的时候才有可能。所以我们只要求出n和m中各有几个k的倍数相乘就行了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{int t;scanf("%d",&t);while(t--){ll n,m,k;scanf("%lld%lld%lld",&n,&m,&k);ll ans=(n/k)*(m/k);printf("%lld\n",ans);}

G 排解忧伤

思路: 这个题我们只要先把每个座位上有几个人想坐存下来,然后从前往后顺次遍历。当碰到一个位置不够坐时,就把现在还有多少人没位置存下来(包括前面留下来的),然后一个人坐下,剩下的人都要往后一位,所以最终的怒气值要加上现在没有坐下的人的数量。全部遍历完后,看是否还有人没有坐下,如果有就输出-1就行了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int dis[1000007];
int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x;scanf("%d",&x);dis[x]++;}int flag=0;int aa=0;ll ans=0;for(int i=1;i<=n;i++){if(dis[i]!=0){aa+=dis[i]-1;ans+=aa;}else{if(aa>0){aa--;ans+=aa;}}}if(aa>0){printf("-1\n");}else{printf("%lld\n",ans);}return 0;}

I 历史

思路: 签到题,数一下有4次,输出就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[100000];
int main()
{printf("The Chinese teams has won 4 championships\n");return 0;}

K 很基础的模拟题

思路: 确实是很基础的模拟题,按照它说的打就行了,不会卡时间,就用最原始的模拟(改数,然后循环移位)就可以过。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,q;
int a[100000];int main()
{scanf("%d%d",&n,&q);for(int i=1;i<=n;i++) {scanf("%d",&a[i]);}while(q--){int e;cin>>e;if(e == 1){int x;scanf("%d",&x);for(int i=x;i<n;i++){a[i]=a[i+1];}n--;}else if(e==2){int x,y;scanf("%d%d",&x,&y);for(int i=n+1;i>x;i--){a[i]=a[i-1];} a[x]=y;n++;}else if(e==3){int x;scanf("%d",&x);int j=x+1;while(a[j]==a[x]&&j<=n){j++;}int sum=j-x-1;for(int i=x+1;i<=n-sum;i++){a[i]=a[i+sum];}n-=sum;a[x]+=sum*a[x];}for(int i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");}return 0;
}

L 母牛上柱

思路: 就正常把圆柱侧面展开,求一下距离就行了,注意夹角内不一定是最小的,可能是夹角外面最小。(我一开始这里wa了一发。。。)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double pai = 3.1415926535;
int main(){int t;cin>>t;while(t--){double a,b,r,h;cin>>a>>b>>r>>h;double e=min(abs(a-b),360-abs(a-b));double ans=(e*2*pai*r/360.0)*(e*2*pai*r/360.0)+h*h;printf("%.2lf\n",ans);}return 0;
}

2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)(详细题解)相关推荐

  1. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛 A.肥猪的钢琴床(dp动态规划)

    题目链接:https://ac.nowcoder.com/acm/contest/9692/A 题目描述 肥猪很喜欢睡懒觉,与此同时肥猪十分喜欢买各种各样神奇的床. 今天肥猪买了一张很宽很宽的钢琴床, ...

  2. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤

    2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤 题目链接 题目描述 猪猪参加小米赞助的icpc比赛之后惨遭打铁,为了排解忧伤,他开始观察嘉宾席. 嘉宾席是间隔为1,一字排 ...

  3. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G- 排解忧伤

    原题链接: https://ac.nowcoder.com/acm/contest/9692 题意: 这题就是说有m个嘉宾抢最多n个座位,抢不到心仪的座位就只能继续往前走,还得生气,怒气值就是这位嘉宾 ...

  4. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛------母牛上树

    题目描述 母牛刚来到广东柱子大学时,就被学校的柱子深深地迷住.于是,母牛立下了flag,要在大学4年爬遍学校的柱子.同时,每个柱子顶部都有一个最佳的俯瞰学校的观测点.母牛在爬柱子时,会从柱子底爬到柱子 ...

  5. 牛客竞赛,GDDU第十届文远知行杯新生程序设计竞赛,摸鱼记(BDEIKL题解,补G,ACFHJ)

    碎碎念 比赛前看到评论区的提问 这个是干啥的,求解答,第一次参加 抽奖送牛客卫衣的 hhhh重在参与 然后[注意事项]里面写的 1 参赛形式:个人,面向零基础20级新生和部分有基础新生. 4 请各位教 ...

  6. 广东工业大学文远知行杯新生程序设计竞赛(重现赛)复习

    广东工业大学文远知行杯新生程序设计竞赛(重现赛) 1,F,亚子和燐子的game 思路: 我们可以维护一个堆(里面的数都相等,其实就是一个数),每扔进去一个数,就继续维持堆中数字相等(维持方法,就是谁大 ...

  7. 广东工业大学文远知行杯新生程序设计竞赛(牛客比赛)

    链接如下: 广东工业大学文远知行杯新生程序设计竞赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校 ...

  8. 【比赛回顾】2020广工文远知行杯新生程序设计竞赛(初赛)

    [比赛回顾]2020广工文远知行杯新生程序设计竞赛(初赛) 写在前面: 已经更新完除E和F以外的题解(因为这两道我没有时间做了,以后抽空做完后补充).可能我的题解并不是最优的,欢迎交流和讨论~ 文章目 ...

  9. 2018年广东工业大学文远知行杯新生程序设计竞赛 1001 文远知行β

    Problem Description "上一个国家的人真的是好心呢." 在山脉群之间,是一片宽广平坦的大地.被草木覆盖的绿意,顺着灰色的山间延伸. 摩托车(注:两轮的车子,尤其是 ...

最新文章

  1. 用来代替SQUID的软件VARNISH
  2. java contions_Java基础---数组总结
  3. python图形编程基础-Python从基础到入门系列教程
  4. Python学习笔记:入门(2)
  5. 限制CheckBoxList控件只能单选
  6. 1026 程序运行时间 (15 分)(c语言)
  7. Unit testing Cmockery 简单使用
  8. 用于zsh的高亮插件 zsh-syntax-highlighting
  9. python实例 75,76
  10. 关于Python爬虫,一条高效的学习路径
  11. 十个人在一座荒岛上_如果您在荒岛上,您将携带哪个执照?
  12. php基类控制器,控制器基类
  13. Python导入jar包
  14. 干净虚拟机(centos 6.4)上从头到尾安装并调试Mdrill(二)
  15. 2019年1月30日
  16. Android 项目使用 Jenkins 打包时的异常问题 AAPT: C:\Windows\System32\config\systemprofile\.gradle\caches
  17. 为Visual Studio创建项目模板(VSIX / C#/ 2019)
  18. 数据可视化技术有什么特点
  19. gromacs 安装_gromacs cpu版安装
  20. SpringBoot 结合 Mybatis 实现创建数据库表

热门文章

  1. 判断一个对象/数组是否为空
  2. HTML之框架组合网页
  3. labelImg的使用(可简单明了)
  4. windows update更新返回错误码统计(WUSA.exe)
  5. APP测试-头像测试点
  6. linux点阵字符显示字体颜色,使用文泉驿点阵字体解决Linux中文化问题
  7. 数字孪生示范项目——从单摆谈起(4)IoT探索
  8. 「洛谷 P5043」:树同构【树哈希】
  9. 性能测试-操作和优化分析
  10. 【实践】NLP领域中的ERNIE模型在阅读理解中的应用