当前位置: 首页 > wzjs >正文

有没有在淘宝找人做网站被骗过的黄页网站推广服务

有没有在淘宝找人做网站被骗过的,黄页网站推广服务,好f123网站,网页设计报告需求分析OK,继续写我们的第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目,后面的题目比较麻烦了,所以我们再分两期讲。 这一期的题有 : 回文数组,挖矿 文章目录 回文数组基本思路第一步,获取半个数组每个数需要…

OK,继续写我们的第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目,后面的题目比较麻烦了,所以我们再分两期讲。
这一期的题有 : 回文数组,挖矿
请添加图片描述

文章目录

  • 回文数组
    • 基本思路
        • 第一步,获取半个数组每个数需要变化的情况
        • 第二步,贪心思想优先选择同加同减操作
    • 代码
  • 挖矿
    • 思路分析
    • 代码
  • 感谢大伙观看,别忘了三连支持一下
  • 大家也可以关注一下我的其它专栏,同样精彩喔~
  • 下期见咯~

回文数组

题目链接:回文数组
在这里插入图片描述
在这里插入图片描述

基本思路

题目中给出我们两种操作:

相邻的两个数 +1 或 -1
一个数 +1 或 -1

对于样例 1,2,3,4
让它成为回文数组,我们是不是让 1 和 4 相互趋近,让 1 加数 或者 让 4 减数。
再转换一下思路,是不是 让 1 加数,让 4 减数 ,不论是哪一种,是不是最后的效果是一样的。

也就是说,我们只需要操作一半的数组 让它变成和另一半一样是不是就成功了。

第一步,获取半个数组每个数需要变化的情况

然后,我们就是要对数组进行操作了,这题是获取最优解,所以采用贪心的思想,也就是说,在操作的时候优先选择同加同减。

第二步,贪心思想优先选择同加同减操作

OK,分析先到这,我们来试试对不对。

代码

import os
import sys# 请在此输入您的代码
n = int(input())lst = list(map(int, input().split()))
change = []
for i in range(n // 2):change.append(lst[i] - lst[n - 1 - i])
# 上面是获取出一半的数组需要变化的情况cnt = 0
for i in range(len(change)):cnt += abs(change[i])if i < len(change) - 1:if change[i] > 0 and change[i + 1] > 0:change[i + 1] -= min(change[i], change[i + 1])if change[i] < 0 and change[i + 1] < 0:change[i + 1] -= max(change[i], change[i + 1])
print(cnt)

挖矿

题目链接:挖矿
在这里插入图片描述
在这里插入图片描述

思路分析

看完题目,我的想法就是枚举。

首先,我们先排除多次折返,因为如果多次折返,那么肯定不如往一个方向走到头,再折返这样多。

那么剩下的就是一次折返 和 不折返。

在这里插入图片描述
基本思路是这么回事,然后我们想想怎么实现:
例如说:
向左:
走 1 步 —— 获得 1 矿石
走 2 步 —— 获得 1 矿石
走 3 步 —— 获得 2 矿石
走 4 步 —— 获得 2 矿石
……

在遍历每次的情况之后,再加上此时向右走最多能获得的矿石的数量。

这是不是就是大伙熟悉的求区间和,也就是前缀和
如果不熟悉前缀和,可以看看我这期文章:前缀和 —— 算法如此简单

分析到这,开始试一试吧。

代码

n, m = map(int, input().split())
lst = list(map(int, input().split()))
r = [0 for _ in range(int(1e6) + 10)] #比 0 大的数
l = [0 for _ in range(int(1e6) + 10)] #比 0 小的数
Max = 0
x = 0 #只用来记录 0 处是否有矿的情况
for i in lst:if i > 0:r[i] += 1elif i < 0:l[-i] += 1 # 位置都是绝对值的位置else:x = 1for i in range(1, m+1):l[i] += l[i-1]r[i] += r[i-1]
# 上面生成两个记录矿数的前缀和列表
# 下面开始遍历所有情况for i in range(1, m+1):# 先向左再向右t = l[i] # t用来记录挖矿数if m - 2 * i > 0:t += r[m - 2 * i] #加上右边最多能采到的矿的数目Max = max(Max, t) #取最大值# 先向右再向左t = r[i]  # t用来记录挖矿数if m - 2 * i > 0:t += l[m - 2 * i]  # 加上左边最多能采到的矿的数目Max = max(Max, t)  # 取最大值print(Max + x)

感谢大伙观看,别忘了三连支持一下

大家也可以关注一下我的其它专栏,同样精彩喔~

下期见咯~

请添加图片描述

http://www.dtcms.com/wzjs/59269.html

相关文章:

  • 网站建设优缺点如何进行网站推广
  • 美橙互联网站模板网域名查询地址
  • wordpress主题信息seo自动发布外链工具
  • 广东省建设教育协会官方网站首页苏州百度 seo
  • 沈阳免费自助建站模板肇庆百度快照优化
  • 西安政府网站开发公司cms建站系统
  • 做网站banner宁波seo外包推广平台
  • 做门户网站找哪家公司互联网营销师培训班
  • 凡科建站登陆网站seo属于什么专业
  • 网站没内容 可以备案么推广软文是什么意思
  • 阜宁网站制作公司报价宁波seo外包服务平台
  • 东营市建设工程信息网宁波如何做seo排名优化
  • wordpress做导航站百度网站排名优化价格
  • 卡盟平台seo学校
  • dedeseo网站教你如何快速建站
  • 手机资讯网站源码什么是网店推广
  • wordpress导航栏文字大小不一样聊石家庄seo
  • 彩票网站什么做seo的工作内容主要包括
  • 网站做短信接口具体方法大数据营销平台那么多
  • 做推送的网站除了秀米还有百度一下 你知道首页
  • 大学生做推送的网站百度关键词指数查询工具
  • 一个可以用来做测试的网站网络策划是做什么的
  • 上海期货配资网站开发广东深圳龙华区
  • 武汉网站多少网络推广计划书
  • 做盗版小说网站 风险百度指数电脑版
  • 学习建网站玩网站建设学习公司网站设计
  • 陕西网站建设品牌公司推荐企业邮箱
  • 邳州微网站开发西安seo顾问培训
  • 关于域名和主机论坛的网站dw软件怎么制作网页
  • 佛山公司网站设计成人短期技能培训学校