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

week13周报

一.动态规划

  1. 走楼梯2

难点:不能连续走三次两级台阶如何表示

思路:可以用二维数组f[i][j],i表示当前台阶数,j表示已经连续走了j次二级台阶了

转移方程:f[i+2][j+1]=f[i+2][j+1]+f[i][j] 当j!=2时,我们可以选择走二级台阶

f[i+1][0]=f[i+1][0]+f[i][j] 选择走一级台阶,此时j变为了0

这两种情况是同时进行的

代码:

#include <bits/stdc++.h>

using namespace std;

int main()

{

int n;

cin>>n;

long long f[55][5];

memset(f,0,sizeof(f));

f[0][0]=1;

for(int i=0;i<=n;i=i+1)

{

for(int j=0;j<=2;j=j+1)

{

if(j!=2)

{

f[i+2][j+1]=f[i+2][j+1]+f[i][j];

}

f[i+1][0]=f[i+1][0]+f[i][j];

}

}

long long sum=f[n][0]+f[n][1]+f[n][2];

cout<<sum;

return 0;

}

2.任务分配

难点:是以时刻来枚举还是任务编号来枚举

思路:本题以时刻来枚举,可以通过起始时间和结束时间来进行转移

转移方程:

f[g[num].e]=max(f[g[num].e],f[i]+g[num].w);当此时刻i与当前任务的起始时间相等时,我们可以选择做此任务

f[i+1]=max(f[i],f[i+1]);此时刻不选择做任务或者无任务可做

两个方程同时进行

代码:

#include <bits/stdc++.h>

using namespace std;

struct ren

{

int s;

int e;

int w;

}g[1005];

bool cmp (ren a,ren b)

{

return (a.s<b.s||a.s==b.s&&a.e<b.e);

}

int f[1006];

int main()

{

int n;

cin>>n;

for(int i=1;i<=n;i=i+1)

{

cin>>g[i].s>>g[i].e>>g[i].w;

}

sort(g+1,g+n+1,cmp);

int num=1;

for(int i=1;i<=1005;i=i+1)

{

while(i==g[num].s)

{

f[g[num].e]=max(f[g[num].e],f[i]+g[num].w);

num=num+1;

}

f[i+1]=max(f[i],f[i+1]);

}

cout<<f[1005];

}

3.走路(此题略过,思路和前面两题类似)

二.二分查找

1.饿饿 饭饭

难点:如何分辨题目为二分答案类型题

思路:由于此题数据极大,普通的枚举一定过不了,需要一个快速的方法把前面的绝大部分流程跳过,因此我们用到了二分答案

二分答案的操作:寻找打到了mid轮之后,再打一轮就会超过总数k。判断条件:第mid轮打的total份饭<=总数k

代码:

#include <bits/stdc++.h>

using namespace std;

long long a[100050],c[100050];

int n;

long long k;

long long check(int x)

{

long long tt=0;

for(int i=1;i<=n;i=i+1)

{

if(a[i]<=x)

{

tt=tt+a[i];

}

else

{

tt=tt+x;

}

}

return tt;

}

int main()

{

cin>>n>>k;

long long zong=0;

for(int i=1;i<=n;i=i+1)

{

cin>>a[i];

zong=zong+a[i];

}

if(zong<k)

{

cout<<"-1";

}

else if(zong==k)

{

return 0;

}

else

{

int l=0;

int r=1e9;

while(l+1<r)

{

int mid=(l+r)/2;

if(check(mid)>k)

{

r=mid;

}

else

{

l=mid;

}

}

k=k-check(l);

int tot=0;

for(int i=1;i<=n;i=i+1)

{

if(a[i]>l)

{

c[++tot]=i;

}

}

for(int i=k+1;i<=tot;i=i+1)

{

cout<<c[i]<<" ";

}

for(int i=1;i<=k;i=i+1)

{

if(a[c[i]]!=l+1)

{

cout<<c[i]<<" ";

}

}

}

}

三.set的用法

1.订单编号

知识点:set容器其中的元素会自动排好队,并且不允许有重复元素

set的各常用成员函数列表:

insert()–在集合中插入元素

begin()–返回指向第一个元素的迭代器

end()–返回指向最后一个元素下一个位置(注意不是最后一个元素)的迭代器

clear()–清除所有元素

count()–返回某个值元素的个数

empty()–如果集合为空,返回true

find()–返回一个指向被查找到元素的迭代器

size()–集合中元素的数目

swap()–交换两个集合变量

upper_bound()–返回大于某个值元素的迭代器

lower_bound()--饭后第一个大于某个值元素的元素位置

max_size()–返回集合能容纳的元素的最大限值

rbegin()–返回指向集合中最后一个元素的反向迭代器

rend()–返回指向集合中第一个元素的反向迭代器

erase(itr)-删除整个已存在的容器

难点:此题需要返回未出现过的比原先值大的第一个数,这需要枚举很多内容,极有可能出现time limited这一错误信息

思路:set函数中的lower_bound()函数可以直接返回第一个大于元素的位置,可以用set存储

另外,我们可以用分区间的做法,来把已选值剔除出我们的枚举区间

另另外,这题思路好难,我尽力了

代码:

#include <bits/stdc++.h>

using namespace std;

int n;

set<pair<int,int> > c;

inline void insert(int l,int r)//往insert()函数中内置代码

{

if(l>r)

{

return;

}

c.insert(make_pair(r,l));

}

int main()

{

cin>>n;

c.insert(make_pair(2e9,1));

for(int i=1;i<=n;i=i+1)

{

int x;

cin>>x;

auto itr=c.lower_bound(make_pair(x,0));

if(itr->second<=x)//分区间做法

{

cout<<x<<" ";

insert(itr->second,x-1);

insert(x+1,itr->first);

c.erase(itr);

}

else

{

cout<<itr->second<<" ";

insert(itr->second+1,itr->first);

c.erase(itr);

}

}

}

相关文章:

week13周报

一.动态规划走楼梯2难点&#xff1a;不能连续走三次两级台阶如何表示思路&#xff1a;可以用二维数组f[i][j],i表示当前台阶数&#xff0c;j表示已经连续走了j次二级台阶了转移方程&#xff1a;f[i2][j1]f[i2][j1]f[i][j] 当j&#xff01;2时&#xff0c;我们可以选择走二级台阶…...

离散选择模型中的分散系数theta到底该放在哪里呢?

前言 \quad~~一直都在想为啥子离散选择模型中分散系数以分母形式出现而在路径选择公式中以系数形式出现呢&#xff1f;看着公式想了想&#xff0c;现在想出了一个似乎感觉应该差不多很合理的答案&#xff0c;希望与大家一起探讨。 进入正题 根据随机效用理论&#xff0c;决策…...

【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程

&#x1f4ad; 写在前面&#xff1a;本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写&#xff0c;该教材由Randal E. Bryant和David R. OHallaron 合著…...

节流还在用JS吗?CSS也可以实现哦

函数节流是一个我们在项目开发中常用的优化手段&#xff0c;可以有效避免函数过于频繁的执行。一般函数节流用在scroll页面滚动&#xff0c;鼠标移动等。 为什么需要节流呢&#xff0c;因为触发一次事件就会执行一次事件&#xff0c;这样就形成了大量操作dom,会出现卡顿的情况…...

带你看看 TypeScript 5.0 的新特性

一、写在前面 TypeScript 5.0 已经于 2023 年 3 月 16 日发布了&#xff0c;带来了许多新功能&#xff0c;同时也在性能方面进行了优化&#xff0c;下面让我们来一起看看新版 TypeScript 中比较有重要的变化吧。 二、新特性 2-1、速度、包体积优化 首先是新版本性能的提升&…...

C语言预处理条件语句的 与或运算

C语言预处理条件语句的 与或运算 1.#ifdef 与或运算 #ifdef (MIN) && (MAX) ----------------------------错误使用 #if defined(MIN) && defined(MAX) ---------------- 正确使用 #ifdef (MIN) || (MAX) -----------------------------错误使用 …...

从零实现深度学习框架——学习率调整策略介绍

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽量不使用外部完备的框架前提下,实现我…...

系统架构:经典三层架构

引言 经典三层架构是分层架构中最原始最典型的分层模式&#xff0c;其他分层架构都是其变种或扩展&#xff0c;例如阿里的四层架构模式和DDD领域驱动模型。阿里的 四层架构模型在三层基础上增加了 Manager 层&#xff0c;从而形成变种四层模型&#xff1b;DDD架构则在顶层用户…...

数据结构--二叉树

目录1.树概念及结构1.1数的概念1.2数的表示2.二叉树概念及结构2.1二叉树的概念2.2数据结构中的二叉树2.3特殊的二叉树2.4二叉树的存储结构2.4.1顺序存储2.4.2链式存储2.5二叉树的性质3.堆的概念及结构3.1堆的实现3.1.1堆的创建3.1.2堆的插入3.1.3堆顶的删除3.1.4堆的代码实现3.…...

Keil5安装和使用小记

随着keil版本的更新&#xff0c;一些使用问题一随之产生。本文针对安装目前最新版本keil软件和使用问题做一些总结。 目录1 Keil5下载&安装1.1 官网下载链接1.2 软件安装1.2.1 安装说明1.2.2 关于 51 和 ARM 共存的问题1.3 软件破解2 pack包安装 & 破解2.1 下载2.2 安装…...

多机器人集群网络通信协议分析

本文讨论的是多机器人网络通信各层的情况和协议。 每个机器人连接一个数据传输通信模块&#xff08;以下简称为数传&#xff0c;也泛指市面上的图传或图数一体的通信模块&#xff09;&#xff0c;数传之间进行组网来传递信息。 根据ISO的划分&#xff0c;网络通信的OSI模型分…...

【PyTorch】手把手带你快速搭建PyTorch神经网络

手把手带你快速搭建PyTorch神经网络1. 定义一个Class2. 使用上面定义的Class3. 执行正向传播过程4. 总结顺序相关资料话不多说&#xff0c;直接上代码1. 定义一个Class 如果要做一个神经网络模型&#xff0c;首先要定义一个Class&#xff0c;继承nn.Module&#xff0c;也就是i…...

【完整代码】用HTML/CSS制作一个美观的个人简介网页

【完整代码】用HTML/CSS制作一个美观的个人简介网页整体结构完整代码用HTML/CSS制作一个美观的个人简介网页——学习周记1HELLO&#xff01;大家好&#xff0c;由于《用HTML/CSS制作一个美观的个人简介网页》这篇笔记有幸被很多伙伴关注&#xff0c;于是特意去找了之前写的完整…...

Java分布式事务(九)

文章目录&#x1f525;XA强一致性分布式事务实战_Atomikos介绍&#x1f525;XA强一致性分布式事务实战_业务说明&#x1f525;XA强一致性分布式事务实战_项目搭建&#x1f525;XA强一致性分布式事务实战_多数据源实现&#x1f525;XA强一致性分布式事务实战_业务层实现&#x1…...

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

摘要&#xff1a;动物识别系统用于识别和统计常见动物数量&#xff0c;通过深度学习技术检测日常几种动物图像识别&#xff0c;支持图片、视频和摄像头画面等形式。在介绍算法原理的同时&#xff0c;给出Python的实现代码、训练数据集以及PyQt的UI界面。动物识别系统主要用于常…...

K8S集群之-ETCD集群监控

### 生产ETCD集群监控核心指标 etcd服务存活状态 ​ up{job~"kubernetes-etcd.*"}0 ​ 说明&#xff1a;up0代表服务挂掉 etcd是否有脱离情况 etcd_server_has_leader{job~"kubernetes-etcd.*"}0 说明&#xff1a;每个instance&#xff0c;该值应该都…...

一文弄懂熵、交叉熵和kl散度(相对熵)

一个系统中事件发生的概率越大&#xff0c;也就是其确定性越大&#xff0c;则其包含的信息量越少&#xff0c;可以认为一个事件的信息量就是该事件发生难度的度量&#xff0c;事件所包含的信息量越大则其发生的难度越大。并且相互独立的事件&#xff0c;信息量具有可加性。相互…...

10从零开始学Java之开发Java必备软件Intellij idea的安装配置与使用

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言壹哥在前面的文章中&#xff0c;带大家下载、安装、配置了Eclipse这个更好用的IDE开发工具&#xff0c;并教会了大家如何在Ecli…...

04 - 进程参数编程

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录1. 问题1.1 再论execve(...)1.2 main函数&#xff08;默认进程入口&#xff09;1.3 进程空间概要图1.4 编程实验&#xff1a;进程参数剖析1…...

【python进阶】你真的懂元组吗?不仅是“不可变的列表”

&#x1f4da;引言 &#x1f64b;‍♂️作者简介&#xff1a;生鱼同学&#xff0c;大数据科学与技术专业硕士在读&#x1f468;‍&#x1f393;&#xff0c;曾获得华为杯数学建模国家二等奖&#x1f3c6;&#xff0c;MathorCup 数学建模竞赛国家二等奖&#x1f3c5;&#xff0c…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...