2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)(详细题解)
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年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)(详细题解)相关推荐
- 2020年广东工业大学第十届文远知行杯新生程序设计竞赛 A.肥猪的钢琴床(dp动态规划)
题目链接:https://ac.nowcoder.com/acm/contest/9692/A 题目描述 肥猪很喜欢睡懒觉,与此同时肥猪十分喜欢买各种各样神奇的床. 今天肥猪买了一张很宽很宽的钢琴床, ...
- 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤
2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤 题目链接 题目描述 猪猪参加小米赞助的icpc比赛之后惨遭打铁,为了排解忧伤,他开始观察嘉宾席. 嘉宾席是间隔为1,一字排 ...
- 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G- 排解忧伤
原题链接: https://ac.nowcoder.com/acm/contest/9692 题意: 这题就是说有m个嘉宾抢最多n个座位,抢不到心仪的座位就只能继续往前走,还得生气,怒气值就是这位嘉宾 ...
- 2020年广东工业大学第十届文远知行杯新生程序设计竞赛------母牛上树
题目描述 母牛刚来到广东柱子大学时,就被学校的柱子深深地迷住.于是,母牛立下了flag,要在大学4年爬遍学校的柱子.同时,每个柱子顶部都有一个最佳的俯瞰学校的观测点.母牛在爬柱子时,会从柱子底爬到柱子 ...
- 牛客竞赛,GDDU第十届文远知行杯新生程序设计竞赛,摸鱼记(BDEIKL题解,补G,ACFHJ)
碎碎念 比赛前看到评论区的提问 这个是干啥的,求解答,第一次参加 抽奖送牛客卫衣的 hhhh重在参与 然后[注意事项]里面写的 1 参赛形式:个人,面向零基础20级新生和部分有基础新生. 4 请各位教 ...
- 广东工业大学文远知行杯新生程序设计竞赛(重现赛)复习
广东工业大学文远知行杯新生程序设计竞赛(重现赛) 1,F,亚子和燐子的game 思路: 我们可以维护一个堆(里面的数都相等,其实就是一个数),每扔进去一个数,就继续维持堆中数字相等(维持方法,就是谁大 ...
- 广东工业大学文远知行杯新生程序设计竞赛(牛客比赛)
链接如下: 广东工业大学文远知行杯新生程序设计竞赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校 ...
- 【比赛回顾】2020广工文远知行杯新生程序设计竞赛(初赛)
[比赛回顾]2020广工文远知行杯新生程序设计竞赛(初赛) 写在前面: 已经更新完除E和F以外的题解(因为这两道我没有时间做了,以后抽空做完后补充).可能我的题解并不是最优的,欢迎交流和讨论~ 文章目 ...
- 2018年广东工业大学文远知行杯新生程序设计竞赛 1001 文远知行β
Problem Description "上一个国家的人真的是好心呢." 在山脉群之间,是一片宽广平坦的大地.被草木覆盖的绿意,顺着灰色的山间延伸. 摩托车(注:两轮的车子,尤其是 ...
最新文章
- 百度宣布:搜索业务总裁向海龙离职,另回购10亿美元股份
- android setContentView()
- 理解SpringMVC-------DispatchServlet
- java session使用_java学习之web基础(8):使用session实现带验证码的登录功能
- MQ保证消息的可靠性传输
- raspberry pi_在月光下将Raspberry Pi变成蒸汽机
- 几何画板自定义工具_几何画板最强版 v5.06 中文版(含教程/实例/控件/打包机/工具集)...
- LeetCode MySQL 197. 上升的温度
- CentOS6实现路由器功能
- wordpress主题 阿里百秀XIU v7.7版本 兼容 PHP 8.0
- GIS基础软件及操作(五)
- Mac OS修改Mac地址
- 海量计算机入门视频教程
- FOXIT PDF EDITOR工具分割PDF
- RPA机器人技术一般用于什么行业?
- 录取为2021年同济大学秋季博士研究生(电子与信息工程学院计算机科学与技术)
- 【ACM】2022.7.31训练赛
- Thor 0.0.2 发布!
- 萌新接触前端的第一课——HTML
- 如何养育不哭闹的小孩--分享在美国养孩子的妈妈经验
热门文章
- NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)
- 李卓豪:网易数帆数据中台逻辑数据湖的实践
- U盘装WIN7安装程序无法定位现有分区,也无法创建新的系统分区(转载)
- java tcp 自定义数据包_通过TCP接收数据包
- python海龟绘图画树_python,递归函数画树,海龟作图,turtle
- 2016-2017 ACM-ICPC, NEERC (Online Mirror) 酱油记
- 花生壳内网穿透+https+tomcat不能进行网页访问(二、跨域访问的问题)
- Gerbil:支持GPU加速的kmer count工具
- 【Bioinfo Blog 006】【R Code 005】——GEO表达谱数据质控
- 【技术分享】思科设备ISIS配置