科林明伦杯哈理工第十届同步赛部分题解

  • B题 搭积木问题
    • F题 三角形

B题 搭积木问题

链接:https://ac.nowcoder.com/acm/contest/5758/B
来源:牛客网

题目描述

存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一。问最少多少次操作,可以让所有数都变成1。
数据保证一定有解。

输入描述:
输入t,代表有t组数据。每组数据输入n,代表有n个数。接下来一行输入n个数,数字大小小于1e6。(t<=1000,n<1e5,∑n < 1e6)

输出描述:
每组数据输出一个整数代表最少需要操作的次数。

示例1

输入
1
6
1 3 5 2 7 1

输出

9

被卡了2小时,原来是搭积木问题。
用a[1]~a[n]存高度。
遍历a[1]到a[n]。
若后列>前列,总次数增加差值。
否则,不用加(因前列搭积木到高度等于后列时可以把后列搭好了)。
第一个点单独处理,它前列是地面(本题地面高1,用a[0]=1初始化)。
代码:

#include <iostream>
#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
int a[100005];
int main()
{int t,n,i,sum;a[0]=1;while(scanf("%d",&t)!=EOF){while(t--){scanf("%d",&n);sum=0;for(i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]>a[i-1]){sum+=a[i]-a[i-1];}}printf("%d\n",sum);}}return 0;
}

F题 三角形

链接:https://ac.nowcoder.com/acm/contest/5758/F
来源:牛客网

题目描述

小明有一根长度为a的木棒,现在小明想将木棒分为多段(每段木棒长度必须为整数),
使得分隔后的木棍中,取出的任意三段都不能构成三角形,小明想知道木棒最多被分成几段?

输入描述:
输入数据的第一行是t,表示数据的组数, 接下来每组数据输入一个a
(t<=1000, 1 <= a < 2^64 - 1)

输出描述:
对于每组输入样例,打印木棒最多被分为多少段

示例1

输入

1
3

输出
1
2
用手写写思路就来了,为使分的小段最多,分段应从最小开始取 1 1 2 3 5 8…… 容易知道这是斐波那契数列求和问题。 注意木棒长度1 <= a < 2^64 - 1,用unsigned long long 存数据


#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;int main()
{int t,cnt;unsigned long long n,sum,a,b,temp;
while(cin>>t)
{while(t--){cin>>n;//n为1,2单独判断if(n==1){cnt=1;}else if(n==2){cnt=2;}else{    a=b=1;cnt=2;sum=2;while(1){temp=a+b;a=b;b=temp;if(sum+b<=sum||sum+b<=b)//防止sum+b越界{break;              }sum=sum+b;if(sum>n)//超过木棒长{break;}cnt++;}}cout<<cnt<<endl;}
}return 0;
}

科林明伦杯哈理工第十届同步赛部分题解相关推荐

  1. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛部分题解

    B 减成一 差分 输入同时对原数组处理,最终区间减数即为每次差分的累加和 int a[100010]; int b[100010]; int main() {t=read();while(t --) ...

  2. 科林明伦杯”哈尔滨理工大学第十届程序设计竞赛B(减成1)

    科林明伦杯"哈尔滨理工大学第十届程序设计竞赛 存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多少次操作,可以让所有数都变成1. 数据保证一定有解. 输入描述: 输入t, ...

  3. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解 萌新又来写题解啦 原题链接 B 减成一 题意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多 ...

  4. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 E 赛马 python

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛 E 赛马 python E 好家伙 田忌赛马真就 匹配就不解释了 思路,主要咱不止一匹马 所以就最好的比 对方比这个数小的即可 所以 ...

  5. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)---全题目+题解

    文章目录 A.点对最大值 B.减成一 C.面积 D.扔硬币 E.赛马 F.三角形 G.养花 H.直线 I.字典序 J.最大值 A.点对最大值 链接:https://ac.nowcoder.com/ac ...

  6. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) F

    F 三角形 链接:https://ac.nowcoder.com/acm/contest/5758/F 来源:牛客网 小明有一根长度为a的木棒,现在小明想将木棒分为多段(每段木棒长度必须为整数), 使 ...

  7. 科林明伦杯 哈尔滨理工大学第十届程序设计竞赛 (补)

    B减成一 利用差分数组,把前后差为正的数都加起来,这里a[0]要设置为1. #include <iostream> #define ll long longusing namespace ...

  8. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛

    链接 B. 减成一 题目描述 存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多少次操作,可以让所有数都变成1. Solution 情况1:如果num[i] >= num[i ...

  9. “科林明伦杯”哈尔滨理工大学第十届部分题解

    题目链接 B 可以截一 #include <iostream> #include <cstring> #include <algorithm> using name ...

最新文章

  1. 异步方法顺序调用问题
  2. 本构二次开发 c语言,umat二次开发超弹性本构.doc
  3. python编程实例详解-Python编程之列表操作实例详解【创建、使用、更新、删除】...
  4. 谷歌更强 NLP 模型 XLNet 开源:20 项任务全面碾压 BERT!
  5. 一文解决new/delete与malloc/free相关问题:区别?注意事项?使用方式?
  6. C#里Attribute属性
  7. python学习-综合练习六(列表翻转、变量交换、复制列表、元素求和(lambda和递归)、字典排序、字典pop)
  8. little w and Segment Coverage(差分)
  9. pdmreader读写注册表失败_用PDMreader
  10. Python内置模块和第三方模块
  11. JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax
  12. 推荐|风控教父新书来袭(含红宝书三本风控秘籍)
  13. 标量、向量、矩阵、张量
  14. Codeforces 295 (Div.1)
  15. JVM-深入虚拟机字节码执行引擎
  16. 200Smart PLC 与丹佛斯变频器MODBUS RTU通讯实例
  17. 关于jsp表单提交中action所指向Servlet路径问题的总结
  18. 你真的了解TCP/IP吗
  19. 《安富莱嵌入式周报》第275期:2022.07.18--2022.07.24
  20. coding ssh端口指定_CODING添加部署账户SSH公钥

热门文章

  1. 笔记本显示dns服务器,笔记本电脑显示无线网DNS设置错误该怎么解决
  2. 详解UniSwap、无聊猿、PlatoFarm空投的逻辑
  3. 【c++】——函数的堆栈调用详细过程
  4. 人在外省想在老家装监控,在手机上能看,要什么条件和材料?
  5. NUC 折腾笔记 - Linux 系统篇
  6. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
  7. 关于MPEG-4 、mp4v 和 mp4a
  8. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
  9. Webots中常用的函数(C版)
  10. 计算机科学终审多长时间,一些计算机科学核心期刊的投稿经验