`
Simone_chou
  • 浏览: 192711 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Domino Principle(排序)

    博客分类:
  • CF
 
阅读更多
E. Domino Principle
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Vasya is interested in arranging dominoes. He is fed up with common dominoes and he uses the dominoes of different heights. He put ndominoes on the table along one axis, going from left to right. Every domino stands perpendicular to that axis so that the axis passes through the center of its base. The i-th domino has the coordinate xi and the height hi. Now Vasya wants to learn for every domino, how many dominoes will fall if he pushes it to the right. Help him do that.

Consider that a domino falls if it is touched strictly above the base. In other words, the fall of the domino with the initial coordinate x and height h leads to the fall of all dominoes on the segment [x + 1, x + h - 1].

Input

The first line contains integer n (1 ≤ n ≤ 105) which is the number of dominoes. Then follow n lines containing two integers xi and hi ( - 108 ≤ xi ≤ 108, 2 ≤ hi ≤ 108) each, which are the coordinate and height of every domino. No two dominoes stand on one point.

Output

Print n space-separated numbers zi — the number of dominoes that will fall if Vasya pushes the i-th domino to the right (including the domino itself).

Sample test(s)
input
4
16 5
20 5
10 10
18 2
output
3 1 4 1 
input
4
0 10
1 5
9 10
15 10
output
4 1 2 1 

     

       题意:

       给出 n(1 ~ 100000),代表有 n 张牌,后给出 n 张牌的 x 坐标和 h 高度,问每张牌向右倒的话,一共最多能倒多少张牌。

 

       思路:

       排序。记录每张牌能到达的最远的坐标 next,输出顺序 idex,x 坐标 num,最大能到达的牌数 to。先对 num 由小到大 sort 一遍,后从最后一张牌开始往后倒,因为最后一张牌倒的话只有 1 张,之后判断的时候,判断能不能使下一张牌倒下,如果能则这张牌倒下的牌数加上下一张牌的倒排数,同时跳到这张牌能到达的最远牌数(即 num [ i ].to += num [ i + 1 ].to 且 to += no [ i + 1 ].to )。最后输出的时候按 idex 由小到达再 sort 一遍后,一次输出 to 即可。

        比赛的时候心态很重要。对于边界处理真的是非常烦躁,明明会做的题一直卡在代码的实现上,有时候又因为太过紧张而漏洞百出,忘这忘那呢,思路又混乱,必须提高思维的练习才行。

 

        AC:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAX = 100005;

typedef struct {
    int idex, num, next, to;
}node;

node no[MAX];

bool cmp1 (node a, node b) { return a.num < b.num; }
bool cmp2 (node a, node b) { return a.idex < b.idex; }

int main() {

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; ++i) {
        int ans;
        scanf("%d%d", &no[i].num, &ans);
        no[i].next = no[i].num + ans - 1;
        no[i].idex = i;
    }

    sort(no, no + n, cmp1);
    no[n - 1].to = 1;

    for (int i = n - 2; i >= 0; --i) {
        int t = i + 1;
        no[i].to = 1;
        while (t < n && no[t].num <= no[i].next) {
            no[i].to += no[t].to;
            t += no[t].to;
        }
    }

    sort(no, no + n, cmp2);
    for (int i = 0; i < n; ++i) {
        printf("%d", no[i].to);
        i == n - 1 ? printf("\n") : printf(" ");
    }

    return 0;
}

 

分享到:
评论

相关推荐

    domino漂亮登陆界面,domino精美登陆界面,domino漂亮界面,domino web界面,domino精致界面

    domino漂亮登陆界面,使用bootstrap,把数据库直接放到data文件夹下 详情请浏览 https://blog.csdn.net/weijia3624/article/details/48338045

    GO访问domino、通过http访问Domino、GO快速访问Domino、GO集成domino

    GO访问domino、通过http访问Domino、GO快速访问Domino、GO集成domino 完全提供源码 界面请查阅 https://blog.csdn.net/weijia3624/article/details/113108704

    ajax方式展示domino视图

    服务器端的Lotus Domino应用接收到这个请求后,对视图进行相应的排序,并只返回排序后所需显示的那一部分数据,而不是整个视图。 服务器端的处理可能涉及 LotusScript 或者Java编程,根据项目的实际需求和开发者的...

    Java访问Domino的编程指南.doc

    Java 访问 Domino 的编程指南 Java 访问 Domino 的编程指南是指在 Java 语言中如何访问和操作 Domino 对象的编程指南。Domino 是一种商业软件,它提供了强大的信息管理和collaboration 功能。Java 是一种广泛使用的...

    C#访问domino,通过http访问Domino,C#快速访问Domino,C#集成lotus domino

    C#访问domino,通过http访问Domino,C#快速访问Domino,C#集成lotus domino 完全提供源码 界面请查阅 https://blog.csdn.net/weijia3624/article/details/113108704

    Domino故障分析及处理方法

    《Domino故障分析及处理方法》 在IT行业中,Lotus Domino是一款广泛应用于企业级邮件、协作和应用开发的服务器软件。然而,如同任何复杂的系统,Domino也可能遇到各种故障,这时就需要进行故障分析和处理。本文将由...

    Domino接口编程及Domino程序优化

    【标题】:“Domino接口编程及Domino程序优化” 在IT行业中,Lotus Domino是一款强大的协同软件平台,常用于企业级应用开发。本主题聚焦于两个关键方面:Domino接口编程和Domino程序优化,旨在提升开发效率和系统...

    lotus domino6.5.3安装

    ### Lotus Domino 6.5.3 安装指南 #### 一、服务器端安装步骤 **第一步:Lotus Domino Server 服务器端安装** 1. **打开安装程序文件夹:** - 打开包含Lotus Domino 6.5.3安装程序的文件夹。 - 运行 `setup.exe...

    java访问domino,通过http访问Domino,java快速访问Domino,java集成lotus domino

    java访问domino,通过http访问Domino,java快速访问Domino,java集成lotus domino 完全提供源码 界面请查阅 https://blog.csdn.net/weijia3624/article/details/113108704

    Domino 开发基础知识

    视图是Domino数据库中数据的一种组织方式,允许用户按不同标准对记录进行排序和过滤。导航则涉及到用户在应用程序中如何从一个页面或视图跳转到另一个。这部分可能涵盖了创建自定义视图、设置视图分类、链接和面包屑...

    Domino的Java编程指南

    你可以通过视图查找特定的文档,或者按照特定的分类和排序规则进行操作。 - **Domino Document**:每个文档代表数据库中的一条记录,可能包含邮件、任务、会议邀请等信息。你可以创建新文档,读取或修改现有文档的...

    Domino NotesV11开放下载啦!

    此刻我正在北京的Domino NotesV11培训现场写Domino Notes V11,人数众多,群情激扬。上周五,Domino Notes V11已经开放下载,不知道朋友们下到了没有?要是下到了,告诉大家一个好消息,就是 Domino Notes V11依旧不...

    Domino的WebService服务

    【Lotus Domino与WebService服务详解】 Lotus Domino是一款强大的企业级协作软件,它不仅提供了电子邮件、日历、任务管理等功能,还支持通过WebService技术与其他系统进行数据交换和交互。在本文中,我们将深入探讨...

    domino面试题

    Lotus Domino Notes 开发面试题主要考察开发者对这款企业级协作平台的理解与应用能力,包括编程、数据排序、代理设计等方面的知识。以下是对题目中涉及知识点的详细解释: 1. **冒泡排序算法**: 冒泡排序是一种...

    如何配制Domino for IIS

    ### 如何配置Domino for IIS 在IT领域中,Domino for IIS是一种重要的配置方式,它允许我们在Microsoft Internet Information Services (IIS)环境中运行IBM Domino(原Lotus Notes Domino)的应用程序和服务。这...

    domino通过lotusscript解析xml

    在Lotus Domino开发环境中,使用LotusScript处理XML数据是一种常见的任务。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储。Lotusscript是IBM Lotus Domino...

    domino管理大百科

    Lotus Domino是一款群件产品,由IBM公司开发。它不仅支持电子邮件、日程管理、文档数据库以及即时消息等业务应用程序,还支持复杂的业务流程管理和协作平台功能。Domino管理大百科一书详细介绍了Domino的各方面管理...

Global site tag (gtag.js) - Google Analytics