2025/1/24课堂记录

news/2025/2/7 19:15:50/文章来源:https://www.cnblogs.com/yongshao/p/18690386

目录

  1. 旅行问题

  • 旅行问题

首先看见问题,我就差不多能猜到应该是dp

然后他是一个环,任何点都可能是起点,终点

而且只会转一圈,那就没必要用每次i++再%的方式了

直接把数组复制一倍

比如说123这个环

1当起点:123123

2当起点:123123

3当起点:123123

逆时针也一样

剩下的就简单了

走一步看一步,没油了就算不行

50分朴素dp,剩下超时
#include<iostream>
using namespace std;
long long int n,p[3000000],d[3000000];
bool shun(int i)
{int station=i+n;long long int oil=0;for(;i<=station;i++){oil=oil+p[i]-d[i];if(oil<0) return 0;}return 1;
}
bool ni(int i)
{int station=i-n;long long int oil=0;for(;i>=station;i--){oil=oil+p[i]-d[i-1];if(oil<0) return 0;}return 1;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>p[i]>>d[i];p[n+i]=p[i];d[n+i]=d[i];}
//	for(int i=1;i<=2*n;i++)cout<<p[i]<<" "<<d[i]<<"\n";for(int i=1;i<=n;i++){if(shun(i)==0&&ni(i+n)==0)cout<<"NIE\n";else cout<<"TAK\n";}return 0;
}

然后还看了一个比较新的代码

先把代码放出来
 #include<bits/stdc++.h>
#define int long long
using namespace std;
#define R 1000001
int n,m,o[R],d[R],s[2*R],ans[R];
pair<int,int>p;
deque< pair<int,int> >q;
signed main()
{cin>>n;for(int i=1;i<=n;i++) cin>>o[i]>>d[i];for(int i=1;i<=2*n;i++) s[i]=s[i-1]+o[(i-1)%n+1]-d[(i-1)%n+1];for(int i=1;i<=n;i++){while(!q.empty()&&q.back().first>s[i]) q.pop_back();p.first=s[i],p.second=i;q.push_back(p);}for(int i=n+1;i<=2*n;i++){ans[i-n]=q.front().first-s[i-n-1];while(!q.empty()&&i-q.front().second+1>n) q.pop_front();while(!q.empty()&&q.back().first>s[i]) q.pop_back();p.first=s[i],p.second=i;q.push_back(p);}q.clear();for(int i=1,j=2*n;i<=2*n;i++,j--) s[i]=s[i-1]+o[(j-1)%n+1]-d[((j-1>0?j-1:n)-1)%n+1];for(int i=1;i<=n;i++){while(!q.empty()&&q.back().first>s[i]) q.pop_back();p.first=s[i],p.second=i;q.push_back(p);}for(int i=n+1;i<=2*n;i++){ans[2*n-i+1]=max(ans[2*n-i+1],q.front().first-s[i-n-1]);while(!q.empty()&&i-q.front().second+1>n) q.pop_front();while(!q.empty()&&q.back().first>s[i]) q.pop_back();p.first=s[i],p.second=i;q.push_back(p);}for(int i=1;i<=n;i++) printf(ans[i]>=0?"TAK\n":"NIE\n");return 0;
}

首先,这个代码满分

用的是单调队里优化,而且是真的单调队列,不是数组模拟的

queue是队列,deque就是双端队列

pair其实就相当于结构体,而且是只能存两个数据的结构体,随用随定义

其中p就是一个pair,它是专门用来入队用的

q这个队列里面存的都是pair类型的数据

剩下的它也是直接套用的单调队列模板

先计算f[],再控制区间长度,再维护单调性

看着很难其实一点都不简单


现在是2025/2/7,看着三个周前的存稿,直接摆烂,其实后来还讲了一点树形dp,但是不难,没有新东西,就没再写了,只有一道新题战略游戏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880181.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日练习 25.2.7

Guess the K-th Zero (Hard version) 题目 这是一个交互问题。 这是问题的困难版本。与简单版不同的是,在困难版中,查询次数为 \(1 \le t \le \min(n, 10^4)\),查询总数限制为 \(6 \cdot 10^4\)。 波利卡普正在玩一个电脑游戏。在这个游戏中,一个由 \(0\) 和 \(1\) 组成的数…

树上邻域理论(树上圆理论) 小记

邻域:记 \(f(u, r)\) 表示距离 \(u\) 不超过 \(r\) 的点组成的邻域。令 \(x, y\) 为点集 \(S\) 中两个距离最远的点,设 \(u\) 为 \(x, y\) 中点(可能是一条边的中心),设 \(d\) 为 \(x, y\) 的距离,那么覆盖 \(S\) 的最小邻域为 \(f(u, \frac d2)\)。邻域 \(f(u_1, r_1)\)…

Docker搭建Jenkins并共用宿主机Docker部署服务(一)搭建Jenkins及插件配置 -转载

前言 公司项目多忙着开发,所有项目服务都是博主一个个部署的,时间久了也是心累,所以抽时间把Jenkins部署上,之后让其他开发人员自己部署(让我解脱吧!!)。 部署Jenkins容器 Docker安装就不在赘述了,可以看我之前的文章(懒了);直接开始拉取jenkins镜像。 拉取镜像 docker…

Adam优化器、其与策略梯度法结合

一.Adam优化器旨在根据历史梯度信息来调整每个参数的学习率,从而实现更高效的网络训练。Adam算法的核心思想是同时计算梯度的一阶矩(均值)和二阶矩(未中心的方差)的指数移动平均,并对它们进行偏差校正,以确保在训练初期时梯度估计不会偏向于0。Adam优化器是一种梯度下降…

ES6-3 Babel转码器

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在老版本的浏览器执行。这意味着你可以用ES6的方式编写程序,又不用担心现有的环境是否支持浏览器支持性查看:https://caniuse.com/Babel官网:https://babeljs.io/ 1、转码示例原始代码用了箭头函数,Babel将…

c++专题三

C++专题三学习日记 stack(栈) 仅支持查询或删除最后一个加入的元素(栈顶元素)函数名 功能 时间复杂度top() 返回栈顶元素 O(1)empty() 判断是否为空 O(1)size() 返回元素个数 O(1)push() 在栈顶插入元素 O(1)pop() 删除栈顶元素 O(1)queue(队列) 仅支持查询或删除第一个加入的…

mower 明日方舟自动化脚本的docker镜像构建以及使用

一、前言碎碎念 由于我目前使用的arm开发板,默认没有启用桌面可视化环境,而且又不想装一大堆软件和包影响实机环境,所以使用docker进行mower的镜像构建以及使用 测试平台如下,x64和arm64平台均已经过构建以及使用测试二、mower构建以及部署过程 接下来使用arm平台ubuntu进行…

我的公众号接入AI了

背景 近期,DeepSeek等AI应用的爆火让我深刻意识到AI技术在各个领域中的巨大潜力。为了更好地拥抱AI,我决定在我的所有工作生活场景中尽可能地加入AI,以提升效率和体验。 作为拥抱AI的一环, 我选择了为我的微信公众号接入AI功能,使其能够智能回复用户消息,提供更丰富的交互…

大模型时代的软件进化论:恐龙式软件 vs. 猴群式软件

春节期间,IT圈内两件大事持续发酵,一件是中国大模型DeepSeek R1的开源震动全球AI界,让中国科技界扬眉吐气,廉价大模型走入千家万户;另一件是SAP被客户居然之家告上法庭,要求索赔590万开发费用和1700万软件费用,最终法院判SAP退还350万研发费用。这两件事的背后,实际上映…

xtrabackup 命令备份

Percona XtraBackup 安装下载地址: https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-32/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-32.1.el8.x86_64.rpm 官方YUM安装说明: Percona 版本和 YUM - Percona XtraBackup在…

React—03—类组件中事件处理函数的this绑定、事件处理函数的传参;jsx的条件判断渲染;jsx的循环渲染

零、如何给html元素加事件监听 1.原生方式:通过querySelector()方法,捕捉到元素,比如说button元素,然后通过btn.onclick = () =>{}或者通过btn.addEventListensers(click, ()=>{})的方式 2.vue的方式,在元素上使用v-on指令,比如@click 3.react方式,在元素上使用事…

巧用通义灵码,提升前端研发效率

本次分享,主题是利用通义灵码提升前端研发效率。分享内容主要包括以下几部分:首先,我将从前端开发的角度介绍对通义灵码的基本认识;其次,我将展示通义灵码在日常研发中的应用案例;然后,我将通过实例说明,良好的设计能够显著提升通义灵码的效果。在第四个部分,我将介绍…