• POJ 2482 Stars in Your Window


    题目原网址:http://poj.org/problem?id=2482

    题目中文翻译:

    Description

    短暂的时间不会模糊我对你的记忆。 自从我第一次见到你以后,真的已经过了4年吗? 4年前,从我看到你微笑的那一刻起,我仍然清楚地记得,在美丽的珠海校园里,当你走出教室,转过头,柔和的夕阳光照在你美丽的脸颊上时,我知道,我知道我已经迷上你了。 然后,经过几个月的观察和撬动,你的恩典和你的智慧,你对生活的态度和对未来的期望都会对我的记忆留下深刻的印象。 你是我梦寐以求和我分享余生的迷人阳光女孩。 唉,实际上你远远超出了我最疯狂的梦想,我不知道如何弥补你和我之间的鸿沟。所以我什么都没有计划,而是等待,等待一个合适的机会。 直到现在 - 毕业的到来,我意识到我是一个白痴,应该创造机会,抓住它而不是等待。

     

    这些日子,我一个接一个地和朋友,室友和同学分手,我依然无法相信挥手后,这些熟悉的面孔很快就会从我们的生活中消失,成为一种回忆。我明天将离开学校。而且你计划飞得很远,追求你的未来并实现你的梦想。如果没有命运和运气,也许我们不会再见面。所以今天晚上,我在你宿舍楼周围闲逛,希望能偶然见到你。但相反,你的外表必须加快我的心跳,而我笨拙的舌头可能无法消化掉一个字。我不记得有多少次通过珠海和广州的宿舍楼,每次都希望看到你出现在阳台上,或者你的轮廓出现在窗户上。我想不起有多少次这个想法出现在我的脑海里:叫她出去吃晚饭或者至少谈一谈。但每一次,考虑到你的卓越和我的共同点,勇气超过勇气的优势驱使我默默离开。

     

    毕业,意味着大学生活的结束,这些光荣,浪漫的岁月的结束。 你可爱的微笑是我努力工作的原始动力,而这份不求回报的爱将作为我内心深处的回忆而被封存起来。 毕业,也意味着新的生活的开始,在前景光明的道路上的足迹。 我真心希望你在海外每天都会很开心,一切都会顺利。 同时,我会努力摆脱困境,变得更加复杂。 在现实中追求自己的爱与幸福将是我永不褪去的理想。

     

    再见了,我的公主!

     

    如果有一天,某个地方,我们有机会聚集在一起,就像当时的灰头发的男人和女人一样,我希望我们能成为好朋友,分享这种记忆,自豪地重温年轻和欢乐的情绪。 如果这个机会永远不会到来,我希望我是天上的星星,在你的窗口闪烁,作为朋友祝福你远离你,每晚陪伴你,分享美梦或者一起噩梦。

    现在的问题:假设天空是一个平面。 所有的星星都躺在它的位置(x,y)。 对于每颗恒星,其等级从1到100,代表其亮度,其中100是最亮的,1是最弱的。 该窗口是一个矩形,其边缘平行于x轴或y轴。 你的任务是告诉我应该把窗户放在哪里,以最大化窗户内恒星的亮度之和。 请注意,在窗口边缘的星星不计数。 该窗口可以平移,但不允许旋转。

    Input

    输入中有几个测试用例。 每种情况的第一行包含3个整数:n,W,H,表示矩形窗口的星星数量,水平长度和垂直高度。 然后n行,每行3个整数:x,y,c,告诉每个星的位置(x,y)和亮度。 没有两颗星星在同一点上。

     

    天空中至少有1颗和至多10000颗星。 1 <= W,H <= 1000000,0 <= x,y <2 ^ 31。

    Output

    对于每个测试用例,请在一行中输出最大亮度。

    Sample Input

    3 5 4

    1 2 3

    2 3 2

    6 3 1

    3 5 4

    1 2 3

    2 3 2

    5 3 1

    Sample Output

    5

    6

     解题思路:

    转载自:https://www.cnblogs.com/fengzhiyuan/p/8037434.html

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 
     6 using namespace std;
     7 
     8 struct kkk {
     9     long long x,y1,k,y2;
    10 }f[50010];
    11 
    12 struct kkk2 {
    13     long long l,r,lazy,_max;
    14 }f1[200000];
    15 
    16 long long map[50010];
    17 
    18 bool cmp(kkk a,kkk b) {
    19     if(a.x != b.x)  return a.x < b.x;
    20     else return a.k < 0;
    21 }
    22 
    23 void pushup(int p) {
    24     f1[p]._max = max(f1[p<<1]._max,f1[p<<1|1]._max) + f1[p].lazy;
    25 }
    26 
    27 void build(long long l,long long r,long long p) {
    28     f1[p]._max = f1[p].lazy = 0;
    29     f1[p].l = map[l];
    30     f1[p].r = map[r];
    31     if(l + 1 == r) return ;
    32     int mid = (l + r) >> 1;
    33     build(l,mid,p * 2);
    34     build(mid,r,p * 2 + 1);
    35     pushup(p);
    36 }
    37 
    38 void update(long long l1,long long r1,long long k,long long p) {
    39     if(f1[p].l >= l1 && f1[p].r <= r1) {
    40         f1[p]._max += k;
    41         f1[p].lazy += k;
    42         return ;
    43     }    
    44     if(l1 < f1[p<<1].r)
    45         update(l1,min(f1[p<<1].r,r1),k,p << 1);
    46     if(r1 > f1[p<<1|1].l) 
    47         update(max(f1[p<<1|1].l,l1),r1,k,p<<1|1);
    48     pushup(p);
    49 }
    50 
    51 int main() {
    52     long long n,w,h,x,y,k;
    53     while(scanf("%I64d%I64d%I64d",&n,&w,&h) != EOF) {
    54         int step = 0,sum = 1;
    55         for(int i = 1;i <= n; i++) {
    56             scanf("%I64d%I64d%I64d",&x,&y,&k);
    57             f[step].x = x;
    58             f[step].y1 = y;
    59             f[step].y2 = y + h;
    60             f[step++].k = k;
    61             f[step].x = x + w;
    62             f[step].y1 = y;
    63             f[step].y2 = y + h;
    64             f[step++].k = -k;
    65             map[sum++] = y;
    66             map[sum++] = y + h;
    67         }
    68         sort(map + 1,map + sum);
    69         sum = unique(map + 1,map + sum) - (map + 1);
    70         sort(f,f + step,cmp);
    71         build(1,sum,1);
    72         long long  maxx = 0;
    73         for(int i = 0;i < step; i++) {
    74             update(f[i].y1,f[i].y2,f[i].k,1);
    75             if(f[i].k > 0) maxx = max(maxx,f1[1]._max);
    76         }
    77         printf("%I64d
    ",maxx);
    78     }
    79     return 0;
    80 }
    81 

  • 相关阅读:
    L3-015. 球队“食物链”【DFS + 剪枝】
    L3-002. 堆栈【主席树 or 线段树 or 分块】
    PTA L1-006 连续因子【暴力模拟】
    【路由和交换之H3C自导自演】
    【ospf-stub区域配置】
    【ospf-链路验证】
    【ospf-vlink虚拟连接】
    【c学习-14】
    【c学习-13】
    【php学习-5】
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/10953773.html
Copyright © 2020-2023  润新知