。。。题目顺序打乱了,不想调整了,旁边有目录可以直接跳题
题目链接http://acm.csust.edu.cn/contest/56

第一题:吸氧羊

。。。。没看过喜羊羊和灰太狼的人就等死吧。。。

人物的顺序是:喜羊羊,懒羊羊,美羊羊,沸羊羊,暖羊羊,慢羊羊

那么直接printf就没了。。。

以下是AC代码:

#include <cstdio>
using namespace std;int main()
{printf ("1 5 3 4 6 2\n");return 0;
}

第二题:大梦初醒

多组输入+浮点数运算和小数的保留。。。没了

以下是AC代码:

#include <cstdio>int main()
{double x,y;while (scanf ("%lf%lf",&x,&y)!=EOF){double ans=3*x+2.0/y+1;printf ("%.2lf\n",ans);}return 0;
}

第三题:冲出秋名山

。。。遇到1就把速度*2,否则就直接初始化速度为1,每次经过车道的时候取一个不超过2的23次方值就好了。

我这里用了位运算<<左移,大概就是*2的意思,左移几位就相当于乘以2的几次方。

以下是AC代码:

#include <iostream>
#include <algorithm>
using namespace std;#define ll long longint main()
{int n;cin>>n;int mx=1<<23;//相当于2的23次方(1左移23位在二进制下)int ans=1;for (int i=1; i<=n; i++){int x;cin>>x;if (x) ans<<=1;//相当于ans=ans*2else ans=1;ans=min(ans,mx);//需要头文件algorithm,也可以直接三目运算:ans=(ans<mx)?ans:x;//实际上题目对数据有保证的,所以可以直接忽略这一句}cout<<ans<<endl;return 0;
}

第四题:热心的快递员

找到T的位置和P的位置,然后记录一下,最后两个相减取绝对值就好了

以下是AC代码:

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;char s[150];int main()
{int n,m;cin>>n;cin>>s+1;//这里我是从1开始的,一般没加1的是从0编号开始的int pc=0,xiao=0;for (int i=1; i<=n; i++){//如果cin>>s的话是从0开始的if (s[i]=='P') pc=i;else if (s[i]=='T') xiao=i;}if (!pc || !xiao) printf ("-1\n");else {printf ("%d\n",abs(xiao-pc));}return 0;
}

第五题:幸福的列车easy&hard

可以直接暴力从0到w判断是否合法就ok了,时间复杂度最多到1e3*1e5=1e8。。1s可以跑过去
以下是AC代码:

#include <cstdio>const int mac=1e3+10;int a[mac];int main()
{int n,m;scanf("%d%d",&n,&m);for (int i=1; i<=n; i++){scanf ("%d",&a[i]);}int ans=0;for (int i=0; i<=m; i++){//枚举开始人数int mark=0,sum=i;for (int j=1; j<=n; j++){sum+=a[j];if (sum>m || sum<0) {//不合法标记后跳出mark=1;break;}}if (!mark) ans++; }printf ("%d\n",ans);return 0;
}

。。。这是之前的数据范围。。。后来验题的时候亲爱的狗 PC看我n*m的复杂度过了,然后就。。。在后面加了几个零。。。所以就只能O(n)的方法了,暴力过不了了QAQ。。

至于O(n)的复杂度怎么写。实际上我们只需要跑一次所有的站,然后在跑的过程中记录一下最大值和最小值,那么最大值加上我们的初始人数必须要小于等于W,最小值加上初始人数必须大于等于0。于是就完美的解决了。初始人数最多就是Min{W-最大值,W},最小就是Max{-最小值,0},不过担心可能会卡你们int,所以w就没改,不然很多变量都需要开long long的。就又可以卡死一片人了QWQ,这里是开了long long版本的

以下是AC代码:

#include <cstdio>#define ll long longconst int mac=1e6+10;
const ll inf=1e18+10;int main()
{int n;ll w;scanf ("%d%lld",&n,&w);ll sum=0,maxx=-inf,minn=inf;for (int i=1; i<=n; i++){ll x;scanf ("%lld",&x);sum+=x;maxx=(maxx>sum)?maxx:sum;minn=(minn<sum)?minn:sum;}ll most=(maxx>=0)?(w-maxx):w;ll small=(minn>=0)?0:-minn;if (small>most) printf ("0\n");else printf ("%lld\n",most-small+1);return 0;
}

第六题:喝冰阔落2.0

这题当时验题的时候就知道会挂一大片人。。。。我们的OJ有点坑人,本来按照正常的复杂度的话是1s就可以过了。。。但事实上不加读入挂的话连过都过不了,如果我们不知道读入挂的存在的话,就只能将复杂度最高的a=2的情况单独列出来,当a=2的时候,答案是2*x-1,应该没人会去专门讨论这个QWQ,如果按照正常的讨论,即x=0,a=1然后正常模拟一下就可以过了。

怎么模拟呢?x是初始的可乐,然后设置个ans和can代表答案和空盒子的数量,那么模拟的过程就是:

int ans=0;//初始化
while (1){ans+=x;//加上现在手中还剩的可乐if (x+can<a) break;//如果手中剩下的可乐+空瓶子不够换一瓶可乐就breakcan+=x;//空瓶子的数量增加x=can/a;//用空瓶子又换来的可乐的数量can-=x*a;//空瓶子的数量减少
}

然后这里放出出题人的题解:

喝冰阔落2.0题解
又是一个喝冰阔落
事先说好,pc说让我出一个难一点的思维题,所以我才出的难一点的
所以如果难了请认准pc 提供滴滴代打
这题就是利用一个逆向思维
你使用a个瓶子换得一瓶可以喝的可乐
11111111 -------1
-a瓶可乐-- 换的可乐
相当于你用a-1个瓶子 换得一瓶没有瓶子的可乐
我们可以这么理解 ,你先找店家借一瓶可乐,然后你再换店家a个可乐瓶
所以对于每瓶新可乐,我们的花费是(a-1)个可乐瓶
只要对最后a-1瓶可乐判断一下就行啦
是不是很简单呢?(说不定以后还有冰阔落3.0哦 )大家加油

就是不用循环的思维写法复杂度O(1)

以下是AC代码:(暴力模拟代码)

#include <cstdio>int main()
{int t;scanf ("%d",&t);while (t--){int a,x;scanf ("%d%d",&a,&x);int ans=0,can=0;if (!x) printf ("0\n");else if (a==1) printf ("INF\n");else {if (a==2) {//简单优化printf ("%d\n",x*2-1);continue;}while (1){ans+=x;if (x+can<a) break;can+=x;x=can/a;can-=x*a;}printf ("%d\n",ans);}}return 0;
}

以下是AC代码:(按照出题人思路写的):

#include <cstdio>int main()
{int t;scanf("%d", &t);while (t--){int a,x;scanf ("%d%d",&a,&x);if (a==1 && x){printf ("INF\n");continue;}if (x==0) {printf ("0\n");continue;}int ans=x+x/(a-1);if (x%(a-1)==0) ans--;printf ("%d\n",ans);}return 0;
}

第七题:YSL爱数学

最笨的方法就是if和else打一大串。。。

这里用了位运算&,即判断二进制状态下该数字的最后一位是否为1

以下是AC代码:

#include <cstdio>
#include <iostream>
using namespace std;#define ll long longint main()
{ll a,b,c;cin>>a>>b;if (a&1) printf ("odd");//相当于 if (a%2)....else printf ("even");if (b&1) printf (" odd");else printf (" even");c=a+b;if (c&1) printf (" odd");else printf (" even");c=a-b;if (c&1) printf (" odd");else printf (" even");c=a*b;if (c&1) printf (" odd");else printf (" even");c=a/b;if (c&1) printf (" odd");else printf (" even");return 0;
}

当然,如果学了函数的话,就可以写得简洁好看些,我们写两个函数,一个返回a,b当前的值,一个判断奇偶性。然后关于末尾空格的问题我们简洁地写法就是三目运算判断输出回车还是换行就行了

以下是AC代码:

#include <cstdio>#define ll long longll a,b;ll update(int i)
{if (i==1) return a;else if (i==2) return b;else if (i==3) return a+b;else if (i==4) return a-b;else if (i==5) return a*b;return a/b;
}int odd(ll x)
{if (x%2) return 1;//或者if (x&1) return 1;return 0;
}int main()
{scanf ("%lld%lld",&a,&b);for (int i=1; i<=6; i++){ll c=update(i);if (odd(c)) printf ("odd%c",i==6?'\n':' ');else printf ("even%c",i==6?'\n':' ');}return 0;
}

CSUST-2019新生有奖赛正式赛题解相关推荐

  1. HNUCM信息科学与工程学院第二届新生赛——正式赛

    HNUCM信息科学与工程学院第二届新生赛--正式赛 简单题 A:Yftc的字符串转换 题目描述 Ytfc来到了一个魔法密林,里面住着一只魔法兔子,Yftc想去见见这只魔法兔子,但是这个魔法密林很奇怪, ...

  2. 第十三届NENUACM校赛正式赛总结

    目录 A B C D E F G H I 这次比赛主要是心态稳定,一直坚持不懈地想把题A掉,运气好就好在有很多思维题,我出的题没有用到高级点的算法. 一个点在于自己潜心研究了一点组合数学,其实并没有比 ...

  3. 成都东软学院2016年ACM冬季校赛正式赛 - 题解

    Problem A: 数组的价值 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 121  Solved: 4 [Submit][Status][BBS ...

  4. ZZULI郑州轻工业大学21级新生赛正式赛

    A: 另一个爱与希望的故事 题目描述 madoka的面前有n级台阶,目前她处于第0级台阶,她每一次可以选择选择爬一级台阶或是连爬两级台阶,madoka想知道她有几种到达第n级台阶的走法.出乎意料的是, ...

  5. 2023团体程序设计天梯赛--正式赛

    L1-1 最好的文档 有一位软件工程师说过一句很有道理的话:"Good code is its own best documentation."(好代码本身就是最好的文档).本题就 ...

  6. 记2022天梯赛正式赛

    补题链接:PTA | 程序设计类实验辅助教学平台 目录 L1-1 今天我要赢 (5 分) L1-2 种钻石 (5 分) L1-3 谁能进图书馆 (10 分) L1-4 拯救外星人 (10 分) L1- ...

  7. 2022天梯赛正式赛(附天梯赛题目链接)

    文章目录 L1-1 今天我要赢 (5 分) L1-2 种钻石 (5 分) L1-3 谁能进图书馆 (10 分) L1-4 拯救外星人 (10 分) L1-5 试试手气 (15 分) L1-6 斯德哥尔 ...

  8. 2021年中职组网络安全山东省赛“正式” 赛卷

    2021 年山东省职业院校技能大赛 中职组"网络安全" 赛项 竞赛题库 网络安全赛项专家组 2021 年 11 月 赛题说明 一. 竞赛时间安排与分值权重 二. 竞赛拓扑图 模块编 ...

  9. 郑大第九届校赛正式赛(1818: squee_spoon and his Cube VI)

    1818: squee_spoon and his Cube VI Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 59  Solved: 15 Sub ...

最新文章

  1. 【java】兴唐第二十四节课
  2. 蓝桥杯:入门训练 序列求和
  3. 【NLP】基于深度学习的文本分类应用
  4. Redis中的Sentinel 连接使用
  5. c语言通讯录以及写入文件,学C三个月了,学了文件,用C语言写了个通讯录程序...
  6. Spring aop优雅实现redis分布式锁 aop应用redis分布式锁
  7. 【英语-刘晓艳-词汇】词汇06
  8. Ts_半分查找猜数字游戏(初始版),
  9. Mongodb系列- java客户端简单使用(CRUD)
  10. .NET现成程序给你用[四]
  11. C#——SqlParameter的使用方法及注意事项
  12. [原创]AD7705/AD7706的使用
  13. 解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
  14. LAMP平台部署及应用_wuli大世界_新浪博客
  15. SMAP_SSS_ L2c、L3_V04.0.n 文件下载途径(一键同时下载多个数据~)
  16. iOS开发——设置支持的iOS设备(512m内存以上设备)
  17. 旋光效应可视检测液体的浓度(附MATLAB代码)
  18. 2005-11-11
  19. 《大数据》第1期“专题”——大数据与智慧城市
  20. java sql语句之插入语句的拼接规则

热门文章

  1. 深度学习:OpenCV基础方法总结及示例
  2. 戴德金的数学归纳法 戴德金读后之五(尾篇)
  3. 华为云CodeArts Req需求管理工具,7大特性限时免费体验
  4. Nginx之14斗转星移 - (GeoIP) 1
  5. Python Web开发(六):前后端分离的架构
  6. linux fork 函数,Linux的fork()系统调用
  7. 在AD的PCB插入LOGO
  8. java写的学生信息查询系统_用JAVA写一个简易的学生信息管理系统
  9. 不知道怎么做数据挖掘?这几个必备技能点你掌握了嘛?
  10. 解决linux下mysql初始密码或者密码忘记