Peter算法小课堂—简单建模(4)

太戈编程1655题

一条直线上,你安排了n个哨兵站岗放哨,编号从1到n。其中i号哨兵的坐标位置是x[i]。不会有哨兵站在相同的位置。作为指挥官,你需要知道3个信息:

1.从左到右,每个哨兵的坐标依次是几?

2.从左到右,每个哨兵依次是几号哨兵?

3.哨兵编号从1到n,每个哨兵依次站在从左到右的第几个?

离散化

什么是离散化呢?数据离散化处理_哔哩哔哩_bilibili

给出一列数字,在有些情况下,这些数字的值的绝对大小并不重要,而相对大小很重要。例如,对一个班级学生的成绩进行排名,此时不关心成绩的绝对值,只需要输出排名,如分数为{95,50,72,21},排名为{1,3,2,4}。

“离散化”就是用数字的相对值替代它们的绝对值。离散化是一种数据处理的技巧,它把分布广而稀疏的数据转换为密集分布,从而能让算法更快速、更省空间的处理。步骤:1.排序 2.离散化 3.归位

离散化手工编码:

#include <bits/stdc++.h>
using namespace std;
const int N=500010;
struct data{int val;int id;
}olda[N];
int newa[N];
bool cmp(data x,data y){return x.val<y.val;
}
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>olda[i].val;olda[i].id=i;}sort(olda+1,olda+1+n,cmp);for(int i=1;i<=n;i++){newa[olda[i].id]=i;}for(int i=1;i<=n;i++) cout<<newa[i];return 0;
}

那么,回到1655,这题应该怎么做呢?

#include <bits/stdc++.h>
using namespace std;
const int N=100009;
int rk[N];
struct guard{//结构体int x,id;
};
guard g[N];
bool cmp(const guard&u,const guard&v){//排序return u.x<v.x;
}
int main()
{freopen("guard.in","r",stdin);freopen("guard.out","w",stdout);int n;cin>>n;	 for(int i=1;i<=n;i++) cin>>g[i].x;for(int i=1;i<=n;i++) g[i].id=i;//学号赋值sort(g+1,g+1+n,cmp);for(int i=1;i<=n;i++) rk[g[i].id]=i;for(int i=1;i<=n-1;i++) cout<<g[i].x<<" ";cout<<g[n].x<<endl;    for(int i=1;i<=n-1;i++) cout<<g[i].id<<" ";cout<<g[n].id<<endl;    for(int i=1;i<=n-1;i++) cout<<rk[i]<<" ";    cout<<rk[n]<<endl;return 0;
}

太戈编程56题

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树

差分

cin>>l>>m;
for(int i=1;i<=m;i++){cin>>a>>b;if(a>b) swap(a,b);a++;b++;//确保都为正整数d[a]++;d[b+1]--;
}

 那么,第5行我为什么敢无缘无故+1呢?这都是缓冲格的帮助。

然后呢?

#include <bits/stdc++.h>
using namespace std;
const int N=1000009;
int l,m,a,b,s[N],d[N];
int main(){freopen("tree.in","r",stdin);freopen("tree.out","w",stdout);cin>>l>>m;for(int i=1;i<=m;i++){cin>>a>>b;if(a>b) swap(a,b);a++;b++;d[a]++;d[b+1]--;}int ans=l+1;for(int i=1;i<=l+1;i++){s[i]=s[i-1]+d[i];if(s[i]) ans--;}cout<<ans<<endl;return 0;
}

但是……如果303题怎么办呢?

太戈编程303题

#include <bits/stdc++.h>
using namespace std;
const int M=1000000009;
struct pnt{int x,tag;
}p[M];
bool cmp(const int&a,const int&b){if(p[a].x<p[b].x) return 1;if(p[a].x>p[b].x) return 0;if(p[a].tag<p[b].tag) return 1;return 0;
}
int main(){int l,m;cin>>l>>m;for(int i=1;i<=m;i++){int a,b;cin>>a>>b;if(a>b) swap(a,b);a++;b++;p[i].x=a;p[i].tag=1;p[i+m].x=b+1;p[i+m].tag=-1;}for(int i=1;i<=2*m;i++) id[i]=i;sort(id+1,id+1+2*m,cmp);int ans=l+1,pre=0;for(int i=1;i<=2*m;i++){if(s[i-1]) ans-=p[id[i]].x-pre;pre=p[id[i]].x;s[i]=s[i-1]+p[id[i]].tag;}cout<<ans<<endl;
}

希望这些对大家有用,三连必回

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

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

相关文章

[ 8 种有效方法] 如何在没有备份的情况下恢复 Android 上永久删除的照片?

我们生命中最重要的时刻&#xff0c;但这样做有缺点&#xff0c;其中之一就是数据丢失的风险。您可能倾向于定期删除无意义的照片&#xff0c;同时保存可爱的照片&#xff0c;从而使您的 Android 设备井井有条。然而&#xff0c;有些人在删除自己珍视的图像时不小心犯了错误。您…

VMware----基于 VMware 玩转 CentOS 虚拟机创建、克隆以及配置后台运行

查看原文 文章目录 一、安装 Vmware二、创建 CentOS7 系统的虚拟机三、克隆虚拟机四、设置虚拟机后台运行 一、安装 Vmware &#xff08;1&#xff09;打开VMware下载地址页面&#xff0c;滑动页面&#xff0c;找到如下界面&#xff0c;点击【下载】 &#xff08;2&#xff…

NPM的介绍和使用

初识npm npm是Node.js世界里最流行的包管理器,用于Node模块的发布、安装和管理。npm是Node Package Manager(Node包管理器)的缩写。 利用npm可以非常方便地安装各种第三方包,不需要关心包之间的各种依赖关系,因为npm会自动处理这些繁琐的工作。这极大地简化了项目的配置,使我们…

windows10-tdengine的安装及使用

win10-tdengine的安装及使用 一、下载及安装配置1.1 下载安装1.2 配置1.3 关闭防火墙和开放端口1.3.1 关闭防火墙1.3.2 开放6030端口 二、启动及关闭服务2.1 启动tdengine服务2.2 关闭tdengine服务2.2 开机自启动配置 四、可视化工具五、TDengine 命令行&#xff08;CLI&#x…

mybatisplus使用雪花id通过swagger返回ID时精度丢失问题

在使用mybatisplus自带雪花的时候会发现返回的ID是19位的长度&#xff0c;因此在通过swagger页面展示的时候会发现后端返回的和页面展示的ID不一致问题。是因为精度丢失的问题。因此需要更改雪花ID的长度跟踪进去&#xff1a;发现是DefaultIdentifierGenerator类实现了Identifi…

深入理解JVM虚拟机第三十三篇:详解JVM学习路线与内容回顾

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring等等很多应用和源码级别的高质量视频和笔记资料,你想学的我们这里都有! 🥭🥭3:QQ群:583783824 📚📚 工作VX:BigTreeJava 拉你…

基于urllib库的网页数据爬取

实验名称&#xff1a; 基于urllib库的网页数据爬取 实验目的及要求&#xff1a; 【实验目的】 通过本实验了解和掌握urllib库。 【实验要求】 1. 使用urllib库爬取百度搜索页面。 2. 使用urllib库获取百度搜索的关键字搜索结果&#xff08;关键字任选&#xff09;。 实验原理及…

孩子还是有一颗网安梦——Bandit通关教程:Level 15 → Level 16

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…

WEB网页设计期末作业个人主页——基于HTML+CSS制作个人简介网站

这个个人主页是我在WEB网页设计课程期末作业中完成的。我使用HTML和CSS来制作这个网站&#xff0c;以介绍我自己和我的兴趣爱好。在这个网站上&#xff0c;您可以找到以下信息&#xff1a; 关于我自己的一些背景和个人信息 我的技能和工作经验 我所喜欢的一些书籍、电影和音…

CLIP 对比预训练 + 文字图像相似度:离奇调查,如何训练视觉大模型?

CLIP&#xff1a;如何训练视觉大模型&#xff1f; 对比预训练图像编码器文本编码器最大的亮点&#xff1a;zero-shot图像分类 CLIP论文地址&#xff1a;https://arxiv.org/pdf/2103.00020.pdf CLIP 对比学习 预训练 文字图像相似度。 对比预训练 传统方法训练视觉模型的方…

活动 | Mint Blockchain 赞助支持清迈 WAMOTOPIA 线下活动

在 2023 年的末尾&#xff0c;南洋清迈的土地上&#xff0c;瓦猫 2.0 正在从 Builders, Creators, Thinkers, Dreamers 的集体梦想中走来。新年到来之际&#xff0c;瓦猫社区即将在泰国清迈创造通往新世界的即兴 - 突现部落 Spontaneous pop-up Tribe&#xff1a;瓦猫托邦 Wamo…

JVM-11-运行时栈帧结构

“栈帧”&#xff08;Stack Frame&#xff09;则是用于支持虚拟机进行方法调用和方法执行背后的数据结构&#xff0c;它也是虚拟机运行时数据区中的虚拟机栈&#xff08;Virtual MachineStack&#xff09;的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回…