poj万人题
poj提交数量过万的题,除了水爆了的题就是无比经典的,不得不刷的题。 准备将poj上提交次数过万的题刷个遍。 持续更新中。。。
poj 2828(线段树)
此题乃是Zhu, Zeyuan神牛出的,拿到题目就觉得这题真的是很有意思,苦想一天无果。 感叹大神的思维果真奇妙。 随随便便提出的问题都成为了如此经典。看了下讨论发现貌似不好想,再尝试了下发现有些问题还是没有想出解决掉方法,而且越来越混乱, 无奈只能看题解了。。。
由于插队是具有最高优先级,而且显然最后一个人插在哪里那么他的最终位置就是哪里。 所以可以从后往前看。先将最后一个人放好,再根据最后一个人的位置判断倒数第二个人的位置。 由此如果能在得知后n个点的位置推出从后往前第n+1个点的位置,那么这题就可以得到完美解决。直接模拟的话需要n*n的复杂度,明显不行。
用num[s]表示从l[s]到r[s]中还有多少空格可以放入(l[s]表示这段线段的左端点,r[s]表示这段线段的右端点)
当要插入到当前线段的第i个位置时,其实并不一定能插到i的位置,因为如果从起点到i上已经有点了,那么表示这点必须得后退,且出现一个点后退一步,且后退途中遇到新的点又得多后退一步。
到底是插入到左段还是右段 如果i<=num[2*s] (插入点的位置小于左段可插入的个数),那么就插入左段,否则插入右段且更新插入位置,i变成i-(cntleft-cnthave) 或者i+cnthave-cntleft其中cntleft表示左端的点个数cnthave表示左端有多少点已经插入了。 这个是用线段树的关键所在,可以举几个例子推一下。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
using namespace std;
#define N 200200 int n;
int gp[N],gv[N];
int l[*N],r[*N],num[*N];
int ans[N]; void build(int tl,int tr,int s)
{
l[s]=tl;
r[s]=tr;
if(tl==tr)
{
num[s]=;
return ;
}
int mid=(tl+tr)/;
build(tl,mid,*s);
build(mid+,tr,*s+);
num[s]=num[*s]+num[*s+];
} void update(int x,int w,int s)
{
if(l[s]==r[s])
{
ans[l[s]]=w;
num[s]=;
return ;
}
if(x<=num[*s])//左段又足够的空间,且要插入的位置比较靠前
update(x,w,*s);
else //左段不够,必须得到右边
update(x-num[*s],w,*s+);
num[s]--;
} int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(num,,sizeof(num));
build(,n,);
for(int i=;i<=n;i++)
scanf("%d%d",gp+i,gv+i);
for(int i=n;i>=;i--)
{
update(gp[i]+,gv[i],);
}
for(int i=;i<n;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[n]); }
return ;
}
poj万人题的更多相关文章
- 字节跳动已经10万人了?渣本双非Android程序员怎么上车?
字节跳动已经 10 万人了? 是的,在 2020 年字节跳动的员工总数从 6 万蹿到 10 万,平均每个工作日就有 150 人在办理入职,加入字节跳动全球超过 240 个办公点. 更有统计,在总部北京 ...
- POJ推荐50题
此文来自北京邮电大学ACM-ICPC集训队 此50题在本博客均有代码,可以在左侧的搜索框中搜索题号查看代码. 以下是原文: POJ推荐50题1.标记“难”和“稍难”的题目可以看看,思考一下,不做要求, ...
- 第一章 基础设施,1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的(作者:蔡华)
1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的 前言 在今年的双11中,双11天猫狂欢夜的直播成为一大亮点. 根据官方披露数据,直播总观看人数超4257万,同时观看人数峰值达5 ...
- 最短路+线段交 POJ 1556 好题
// 最短路+线段交 POJ 1556 好题 // 题意:从(0,5)到(10,5)的最短距离,中间有n堵墙,每堵上有两扇门可以通过 // 思路:先存图.直接n^2来暴力,不好写.分成三部分,起点 终 ...
- 每年有20万人进军IT行业,为何还会人才短缺?
众所周知,IT行业是个高薪行业,也是很多人的梦想职业,在全球最缺人的十大行业中IT行业居首位. 但是现在很多人都有一个疑问: 几乎每所大学里都有计算机技术相关专业,再加上IT培训机构的输出,每年培养出 ...
- 落实制度靠流程<摘自平安50万人的执行力>
落实制度靠流程<摘自平安50万人的执行力> 讲在嘴上的制度是给人听的,写在纸上的制度是给人看的,落实在流程上的制度才是可靠的.制度的执行不能都依赖个人的自觉性. 很多企业都在强调和推行制 ...
- Python如何实现微信群万人同步直播?
很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的. 2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录 ...
- https://docs.huihoo.com/infoq/qconbeijing/2016/day1/工程效率提升专题/2-2-支持百度万人开发的工具装备及百度工程能力建设-夏仲璞.pdf
https://docs.huihoo.com/infoq/qconbeijing/2016/day1/工程效率提升专题/2-2-支持百度万人开发的工具装备及百度工程能力建设-夏仲璞.pdf http ...
- 突破JAVA万人面试,懂多线程者得天下
突破JAVA万人面试,懂多线程者得天下 在面试中,求职者会遇到很多棘手的问题,其中关于"线程安全"."线程同步"."线程死锁"等方面的面 ...
随机推荐
- Apache Drupal URL重写【转】
文章来源:http://www.cnblogs.com/ghj1976/archive/2010/07/19/1780844.html 在 drupal 跟目录下有个 .htaccess 文件, 这个 ...
- 通过设置标签class值控制标签的显示与隐藏
需求背景如下: 原项目居民.单位.计量三模块共用一个jsp文件,显示的页面也顺理成章的统一了,幸亏没有调用同一个js,在此基础上要求居民和单位计量的分离,即居民的显示居民的相关信息,单位和计量的显示相 ...
- Windows未能启动,原因可能是最近更改了硬件或软件,解决此问题的步骤
电脑开机出现显示这样一段文字"Windows未能启动,原因可能是最近更改了硬件或软件,解决此问题的步骤":出现问题的界面是这样的 步骤如下: 1.直接按"Enter&qu ...
- C#音视频网络流解码:H264视频和ACC音频
下面两种方式是直接翻译过来的,还有问题,比如指针的使用和值的传入.考虑C#和C++的差异,还是要抱着怀疑的态度去看待,不一定是对的. H264视频解码网络流: using FFmpeg.AutoGen ...
- Docker构建nginx的nginx-rtmp-module视频服务器镜像
文章地址:https://www.cnblogs.com/linyilong3/p/5862595.html GitHub nginx-rtmp-module 及配置 Dockerfile构建配置: ...
- openssl 创建证书的总结和注意事项
1.该文章从网上看了好多博客,并经过实践形成.环境为ubuntu12和ubuntu14 "========================================大纲提要和注意事项= ...
- Real-Time Rendering.3rd,Radiance与距离无关 的解释
P208,说radiance与距离无关: 想了半天才想明白: 如图,设入射方向l对应的单位solid angle为dw, 则 沿l方向射入表面的radiance=dw范围内射入表面单位面积上的能量. ...
- 环境搭建基础知识2(sublime text3中配置verilog语法高亮)
需求说明:Verilog设计 内容 :verilog开发环境搭建 来自 :时间的诗 1 软件下载 1.1 官方下载 地址http://www.sublimetext.com/3 ...
- HDU 4969 Just a Joke(积分)
HDU 4969 Just a Joke pid=4969" target="_blank" style="">题目链接 推公式,r′=dr/d ...
- JS检查浏览器类型和版本号
先取得Navigator对象的userAgent属性的小写信息,之后依据正則表達式推断赋值. var Sys = {}; var ua = navigator.userAgent.toLowerCas ...