ACWING寒假每日一题python
ACWING寒假每日一题
一、孤独的照片

一个点一个点的来看,比如对于GHGHG中间的G,找到他的左边的G,以及右边的G的位置,l,r分别等于1,答案就要多加上11
但是如果对于 GHHGHHG 中间的G,我们可以看到l,r等于2,那么就一个中间G的对于他的左半边来说,能拍l-1张照片,右半边也是能拍r-1张,之后左右一起看的话能拍lr张。
知道这个就好做了,我们只需要把每个G和H点的坐标存起来,然后遍历一编就行了,不过要注意边界,例如对于第一个G点,他的l是等于他的坐标的,那么我们只需要把G[0]设置为-1,这样计算l的时候就会等于G[1](l = g[i] - g[i-1] -1)
具体代码如下
n = int(input())
s = input()
res = 0
g,h = [-1],[-1] # 第一个点 h[1] - h[1-1]-1 就是h[1]
for i in range(n):if s[i] == 'G':g.append(i) # 记录G的位置else:h.append(i) # H的位置
g.append(n) # 处理右边界, 最后一个点 h[i+1]-h[i]-1
h.append(n)
for i in range(1,len(g)-1):l = g[i] - g[i-1] - 1 r = g[i+1] - g[i] - 1if l >= 2:res += l-1if r >= 2:res += r-1res += r*l
for i in range(1,len(h)-1):l = h[i] - h[i-1] - 1 r = h[i+1] - h[i] - 1if l >= 2:res += l-1if r >= 2:res += r-1res += r*lprint(res)
二、统计次数

对于python来说并不难,我们有count函数,其他语言我就不知道了,O(n)时间复杂度
代码如下
n,k = map(int,input().split())
res = 0
for i in range(1,n+1):i = str(i)k = str(k)res += i.count(k)
print(res)
三、上课睡觉


对于每组数据,我们从大到小遍历堆数,就是总共要合成成几堆,假设为K堆,那么我们需要的操作就是n-k,因为k从大到小,所以我们找到的一定是操作数最少的。
假设分为k堆,首先要判断总数sum % k 是否等于0,如果不等于代表他不能被k等分,就不行
如果可以的话,因为只有相邻的合并,所以我们从小到大遍历石堆,设置一个遍历m m 去 += w[i],w为石堆,然后如果等于 sum // k 就让m归0,继续往下找,如果m>sum//k 那就肯定不行了,然后最后如果m == 0 代表最后合成的一堆也等于 sum // k ,就成功拉。
PS:可能说的有点乱,总的来说就是需要遍历石堆里的,然后从头到尾合并,都合并成sum//k,如果合并着合并着发现大于sum//k了,那就肯定不行了,因为你如果舍弃掉开头那个,就算你这堆可以等于sum//k,但是你开头那个就没办法和别的石子合并了。因为这堆的开头的那个石子的前面要么没石头,要么它的前面已经合并为sum//k了。
#### 代码如下def solve(w,cnt,totle):if totle % cnt != 0: return False# 如果总数不能除尽堆数,证明这个堆数是不可能的k = totle // cntm = 0for i in range(len(w)):m += w[i]if m > k : return Falseif m == k : m = 0return m == 0 # 如果最后面刚好最后一堆的总和也等于平均数,就返回Trueif __name__ == '__main__':t = int(input())for i in range(t):n = int(input())w = [int(x) for x in input().split()]totle = sum(w)for cnt in range(n,0,-1) : # 遍历堆数 就是要多最多的堆if solve(w,cnt,totle) : print(n - cnt) # 例如5堆最后分为3堆,就要操作5-2次break
四、学分绩点

这题也是比较暴力的题,就没什么好说的
代码如下
if __name__ == '__main__':n = int(input())xuefen = [int(x) for x in input().split()]scores = [int(x) for x in input().split()]res = 0for i in range(n):if scores[i] >= 90:res += xuefen[i] * 4.00elif scores[i] >= 85:res += xuefen[i] * 3.7elif scores[i] >= 82:res += xuefen[i] * 3.3elif scores[i] >= 78:res += xuefen[i] * 3.0elif scores[i] >= 75:res += xuefen[i] * 2.7elif scores[i] >= 72:res += xuefen[i] * 2.3elif scores[i] >= 68 :res += xuefen[i] * 2.0elif scores[i] >= 64:res += xuefen[i] * 1.5elif scores[i] >= 60:res += xuefen[i] * 1.0else: res += 0print('{:.2f}'.format(res/sum(xuefen)))
五、奶牛大学

将每头奶牛愿意出的学费给排序一下,然后一个个去遍历,以第一个,第二个…作为学费,找到最大值,用enumerate就会很方便,例如以第三头牛的愿意出的最大价格做学费,sum = 学费 *(n-i) 。如果有重复的不用担心,例如愿意出的最大价格排好序后是 1 3 3 3 … 那么在计算第一个3的时候,就是学费为3的能赚到钱的最大值,后面两个不会覆盖掉第一个3
代码如下
if __name__ == '__main__':n = int(input())s = [int(x) for x in input().split()]s.sort()maxsum = 0finalmoney = 0for i,money in enumerate(s):sum = money * (n-i)if sum>maxsum:maxsum = sumfinalmoney = moneyprint(maxsum,finalmoney)
六、选数异或

直接暴力的话肯定会TLE的,我们先预处理一个数组 maxl ,maxl[i] 代表右边界为i, 能容忍的左边界最大是多少,如果最后 l > maxl[r] ,就 say no 了 ,因为你比我能容忍的最大还大。
那要怎么算这个maxl呢,首先如果第i个数的异或x的值假设为b,maxl[i - 1] 表示前一个位置能容忍的最大值,那么maxl[i] 是不是要等于 max( maxl[i-1] , b的最后一个位置)。
那么我们现在只需要算出前面出现过的数的最后一个位置就行了,再建立一个endpos表示每个数的最后一个位置。在遍历的时候让endpos[arr[i]] = i 就行(arr为原数组)
又因为l和r是从1开始的,所以我们的原始数组arr应该也从坐标1开始,在第一个位置上加个-1就行。
具体代码如下
## a ^ b = x --> a ^ x = b
N = 10**7
if __name__ == '__main__':n,m,x = map(int,input().split())endpos = [-1] * Narr = [-1]+[int(x) for x in input().split()]maxl = [-1] * (n+2)for i in range(1,n+1):# 对于每个位置来说,他能容许的左边的最大值(l 不能比这个再大了,可以在它的左边)是 maxl[i - 1] 或者 它目前这个位置的数异或值的最后一个位置maxl[i] = max(maxl[i-1] , endpos[arr[i]^x]) # arr[i] ^ x 是你这个点想要的那个b arr[i] ^ b = x,endpos[b] 就表示b出现的最后位置endpos[arr[i]] = i # 记录一下每个数字出现的最后位置,每个重复数字都记录的是后面那个数字的下标for i in range(m):l,r = map(int,input().split())if (l != r and maxl[r] >= l):print('yes')else: print('no')
相关文章:
ACWING寒假每日一题python
ACWING寒假每日一题 一、孤独的照片 一个点一个点的来看,比如对于GHGHG中间的G,找到他的左边的G,以及右边的G的位置,l,r分别等于1,答案就要多加上11 但是如果对于 GHHGHHG 中间的G,我们可以看到l,r等于2&a…...
御黑行动来袭--助力三月重保,构筑安全防线!
三月重保在即,重要网站及业务系统“零风险 零事故”是终极目标,作为业界网络安全实战派“老兵”--知道创宇将一如既往,为您提供重保期间“万无一失”的重要网站及业务系统防护。 值此三月重保的重要备战期,知道创宇推出由主力产品…...
JavaScript HTML DOM 元素 (节点)
HTML DOM 是指 HTML 文档对象模型,它是一种用于创建和处理 HTML 页面的标准 API。在 JavaScript 中,HTML DOM 可以被用来操作和修改网页的内容和结构。在本篇文章中,我们将详细探讨 JavaScript HTML DOM 元素 (节点)的作用以及在实际工作中的…...
mybatis-plus ---2
mybatis-plus插件 官网地址 分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 配置并使用自带分页插件 Configuration MapperScan("com.itzhh.mapper")//可以将主类中的注解移到此处 public class MybatisPlusConfig {Beanpublic …...
如何在Qt中设置背景图片,且不覆盖其它控件
正常情况,我们直接通过在样式表里设置背景图片会出现背景图片覆盖其它控件的情况,比如下面操作: 首先右击空白处,点击改变样式表。 然后选择background-image 然后点击铅笔图标 之后我们要先添加前缀,也就是我们…...
PMP考前冲刺2.14 | 2023新征程,一举拿证
承载2023新一年的好运让我们迈向PMP终点一起冲刺!一起拿证!每日5道PMP习题助大家上岸PMP!!!PMP项目管理题目1-2:1.公司了解到一个项目机会,领导让之前做过类似项目的项目经理报告一个粗略的成本…...
feign进行文件上传报错解决方案及有多个入参时的注意事项
一、情景回顾1、简单的文件上传的接口/*** 文件上传MultipartFile格式** param multipartFile 源文件* param filename 自定义文件名称,允许为空,为空时直接从源文件中拿* return*/RequestMapping("/uploadFileForMultipartFile")LogModuleAnn…...
java 枚举类型enum的用法详解
Java Enum原理 public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE }; 实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。 因此,在比较两个枚举类型的值时,永远不需要调用equals方法…...
Java 基础面试题——关键字
目录1.Java 中的关键字是指什么?有哪些关键字?2.instanceof 关键字的作用是什么?3.访问修饰符 public、private、protected、以及不写(default)时的区别?4.Java 中有没有 goto 关键字?5.在 Java 中&#x…...
C++——运算符重载
1、运算符重载的概念 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。运算符重载的目的是让语法更加简洁运算符重载不能改变本来寓意,不能改变基础类型寓意运算符重载的本质是另一种函数调用…...
前端食堂技术周刊第 70 期:Volar 的新开端、Lighthouse 10、良好的组件设计、React 纪录片、2022 大前端总结
美味值:🌟🌟🌟🌟🌟 口味:黑巧克力 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Volar 的新开端Chrome 110 的新功能Lighthouse 10Nuxt v3.2.0加速 JavaSc…...
react路由详解
在学习react路由之前,我们肯定需要安装路由。大家先运行如下命令安装路由。安装之后随我一起探索react路由。 安装 版本v6 npm i react-router-dom -S 页面准备 创建两个文件夹 pages和 router pages文件夹里面放的是页面 router文件夹里面是进行路由配置 路由…...
mysql数据库完全备份和增量备份与恢复
mysql数据备份: 数据备份方式 物理备份: 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外…...
CF1667E Centroid Probabilities
题目描述 对于所有点数为 nnn 的树,如果其满足 对于所有 i∈[2,n]i\in [2,n]i∈[2,n],与 iii 相连的 jjj 中有且只有一个点 jjj 满足 j<ij<ij<i ,那么我们称其为好树 对于 1∼n1\sim n1∼n 每个点求出来有多少好树满足重心为 iii …...
全网详细总结com.alibaba.fastjson.JSONException: syntax error, position at xxx常见错误方式
文章目录1. 复现问题2. 分析问题3. 解决问题4. 该错误的其他解决方法5. 重要补充1. 复现问题 今天在JSONObject.parse(json)这个方法时,却报出如下错误: com.alibaba.fastjson.JSONException: syntax error, position at 0, name usernameat com.aliba…...
快速部署个人导航页:美好的一天从井然有序开始
很多人都习惯使用浏览器自带的收藏夹来管理自己的书签,然而收藏夹存在着一些问题。 经过长时间的累积,一些高频使用的重要网站和偶尔信手收藏的链接混在了一起,收藏夹因为内容过多而显得杂乱无章;收藏夹没有什么美观可言…...
【Python】如何在 Python 中使用“柯里化”编写干净且可重用的代码
对于中级Python开发者来说,了解了Python的基础语法、库、方法,能够实现一些功能之后,进一步追求的就应该是写出优雅的代码了。 这里介绍一个很有趣的概念“柯里化”。 所谓柯里化(Currying)是把接受多个参数的函数变换…...
ROS笔记(4)——发布者Publisher与订阅者Subscribe的编程实现
发布者 以小海龟的话题消息为例,编程实现发布者通过/turtle1/cmd_vel 话题向 turtlesim节点发送消息,流程如图 步骤一 创建功能包(工作空间为~/catkin_ws/src) $ cd ~/catkin_ws/src $ catkin_create_pkg learning_topic roscpp rospy s…...
Linux进程概念(一)
文章目录Linux进程概念(一)1. 冯诺依曼体系结构2. 操作系统(Operator System)2.1 考虑2.2 如何理解操作系统对硬件做管理?2.3 操作系统为什么要对软硬件资源做管理呢?2.4 系统调用和库函数概念2.5 计算机体系结构3. 进程的初步理解…...
Leetcode.1124 表现良好的最长时间段
题目链接 Leetcode.1124 表现良好的最长时间段 Rating : 1908 题目描述 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格…...
3个技巧让LaTeX参考文献自动符合GB/T 7714国标:告别手动排版烦恼
3个技巧让LaTeX参考文献自动符合GB/T 7714国标:告别手动排版烦恼 【免费下载链接】gbt7714-bibtex-style BibTeX styles for Chinese National Standard GB/T 7714 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style 还在为毕业论文、学术论…...
面向28nm ELK晶圆的WLCSP封装激光开槽质量与可靠性研究
2017 — Investigation of Production Quality and Reliability Risk of ELK Wafer WLCSP Package Research and Development, Taiwan Semiconductor Manufacturing Company, Ltd., Hsinchu Science Park, Hsinchu, Taiwan, R.O.C. 摘要 本文系统研究了28nm工艺ELK(极端低k)…...
MarkFlowy桌面应用打包与发布:Tauri框架实战经验分享
MarkFlowy桌面应用打包与发布:Tauri框架实战经验分享 【免费下载链接】MarkFlowy The AI Markdown Editor 项目地址: https://gitcode.com/gh_mirrors/ma/MarkFlowy MarkFlowy作为一款高性能智能化跨端Markdown编辑器,采用Tauri框架实现了轻量级桌…...
基于RAG技术构建AI知识库插件:从原理到实践
1. 项目概述与核心价值最近在折腾个人知识库和AI助手,发现一个挺有意思的插件项目:urantia-hub/urantia-papers-plugin。乍一看这个名字,可能很多人会有点懵,不知道这具体是干嘛的。简单来说,这是一个为AI助手…...
海洋AI工具集seait:从数据处理到模型部署的工程实践指南
1. 项目概述:一个面向“海洋”的AI工具集最近在GitHub上闲逛,发现了一个挺有意思的项目,叫seait。第一眼看到这个名字,我下意识地把它拆成了“sea”和“it”,心想这大概是个和海洋或者海事相关的IT工具。点进去一看&am…...
如何通过虚拟地址查找物理地址
1 如何通过虚拟地址查找物理地址(原理与代码) 本文说明 虚拟地址(VA)到物理地址(PA) 的映射在 x86-64 Linux 上如何理解与实现,并给出可编译的示例代码。不同架构(ARM、RISC-V&#…...
基于Code Llama的本地AI编程助手:VSCode插件部署与优化实战
1. 项目概述:为什么我们需要一个更聪明的代码助手?在VSCode的插件市场里搜索“AI代码补全”,结果可能会让你眼花缭乱。从基于GPT的Copilot到各种开源模型驱动的工具,选择很多,但痛点也很明显:要么需要稳定的…...
ARM ETMv4跟踪寄存器架构与调试实践
1. ARM ETMv4 跟踪寄存器架构概述ARM嵌入式跟踪宏单元(ETM)是处理器调试架构中的关键组件,ETMv4作为其第四代架构,提供了更强大的指令和数据跟踪能力。与传统的断点调试不同,ETM采用实时跟踪技术,能够在不中断处理器运行的情况下&…...
AI应用开发利器:NeuroAPI网关统一管理多模型调用与智能路由
1. 项目概述:一个面向AI应用开发者的API网关最近在折腾AI应用开发的朋友,估计都绕不开一个核心痛点:如何高效、稳定地管理多个不同厂商、不同模型的AI服务调用。无论是OpenAI的GPT系列、Anthropic的Claude,还是国内外的各种大模型…...
企业微信 API 实操系列:构建全链路私域自动化增长体系
一、 核心逻辑:从“人力驱动”到“算法驱动” 传统的私域运营高度依赖人工:导购手动加人、手动发消息、手动备注。这种模式在面对万级以上的客户量时,必然会出现响应延迟、话术偏差和数据流失。基于 API 的运营体系核心在于“事件驱动”。当客…...
