zoukankan      html  css  js  c++  java
  • 火烧赤壁

    P1165火烧赤壁
    描述

    曹操平定北方以后,公元208年,率领大军南下,进攻刘表。他的人马还没有到荆州,刘表已经病死。他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了。

    孙权任命周瑜为都督,拨给他三万水军,叫他同刘备协力抵抗曹操。

    隆冬的十一月,天气突然回暖,刮起了东南风。

    没想到东吴船队离开北岸大约二里距离,前面十条大船突然同时起火。火借风势,风助火威。十条火船,好比十条火龙一样,闯进曹军水寨。那里的船舰,都挤在一起,又躲不开,很快地都烧起来。一眨眼工夫,已经烧成一片火海。

    曹操气急败坏的把你找来,要你钻入火海把连环线上着火的船只的长度统计出来!

    格式

    输入格式

    第一行:N
    以后N行,每行两个数:Ai Bi(表示连环线上着火船只的起始位置和终点,-10^9<=Ai,Bi<=10^9)

    输出格式

    输出着火船只的总长度

    样例1

    样例输入1[复制]

     
    3
    -1 1
    5 11
    2 9

    样例输出1[复制]

     
    11
    题解:排序,数组模拟一遍;
    代码::
     1 #include<stdio.h>
     2 #include<algorithm>
     3 using namespace std;
     4 const int MAXN=100010;
     5 struct Node{
     6     int s,e;
     7 };
     8 Node date[MAXN];
     9 int cmp(Node a,Node b){
    10     if(a.s!=b.s)return a.s<b.s;
    11     else return a.e<b.e;
    12 }
    13 int main(){
    14     int N;
    15     while(~scanf("%d",&N)){
    16         for(int i=0;i<N;i++){
    17             scanf("%d%d",&date[i].s,&date[i].e);
    18         }
    19         sort(date,date+N,cmp);
    20         int s=0,e=0,ans=0;
    21         for(int i=0;i<N;i++){
    22             if(!i)s=date[i].s,e=date[i].e;
    23             else if(date[i].s<=e&&date[i].e>e){
    24                 e=date[i].e;
    25             }
    26             else if(date[i].s>e)ans+=e-s,s=date[i].s,e=date[i].e;
    27             //printf("%d %d
    ",s,e);
    28         }
    29         ans+=e-s;
    30         printf("%d
    ",ans);
    31     } 
    32     return 0;
    33 }
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4829347.html
Copyright © 2011-2022 走看看