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. 百度宣布:搜索业务总裁向海龙离职,另回购10亿美元股份
  2. android setContentView()
  3. 理解SpringMVC-------DispatchServlet
  4. java session使用_java学习之web基础(8):使用session实现带验证码的登录功能
  5. MQ保证消息的可靠性传输
  6. raspberry pi_在月光下将Raspberry Pi变成蒸汽机
  7. 几何画板自定义工具_几何画板最强版 v5.06 中文版(含教程/实例/控件/打包机/工具集)...
  8. LeetCode MySQL 197. 上升的温度
  9. CentOS6实现路由器功能
  10. wordpress主题 阿里百秀XIU v7.7版本 兼容 PHP 8.0
  11. GIS基础软件及操作(五)
  12. Mac OS修改Mac地址
  13. 海量计算机入门视频教程
  14. FOXIT PDF EDITOR工具分割PDF
  15. RPA机器人技术一般用于什么行业?
  16. 录取为2021年同济大学秋季博士研究生(电子与信息工程学院计算机科学与技术)
  17. 【ACM】2022.7.31训练赛
  18. Thor 0.0.2 发布!
  19. 萌新接触前端的第一课——HTML
  20. 如何养育不哭闹的小孩--分享在美国养孩子的妈妈经验

热门文章

  1. NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)
  2. 李卓豪:网易数帆数据中台逻辑数据湖的实践
  3. U盘装WIN7安装程序无法定位现有分区,也无法创建新的系统分区(转载)
  4. java tcp 自定义数据包_通过TCP接收数据包
  5. python海龟绘图画树_python,递归函数画树,海龟作图,turtle
  6. 2016-2017 ACM-ICPC, NEERC (Online Mirror) 酱油记
  7. 花生壳内网穿透+https+tomcat不能进行网页访问(二、跨域访问的问题)
  8. Gerbil:支持GPU加速的kmer count工具
  9. 【Bioinfo Blog 006】【R Code 005】——GEO表达谱数据质控
  10. 【技术分享】思科设备ISIS配置