弱弱的战壕

弱弱的战壕(jdoj1347-vijos1199)

    题目大意:给你n个战壕的坐标,每个战壕只能保护其左下方的战壕 ( 明白为什么是弱弱的战壕了吧 ) ,最后输出n行,第 i 行表示保护了i-1个战壕的战壕个数。

    注释:n<=15000 每一个战壕的坐标 ( x ,y ) ,x , y<=32000  

      想法:和清点人数一样,我们也可以通过线段树来维护,对应的,我们选择树状数组 ( 连修改都没有,扯什么扯 ) 。怎么维护呢?我们思考...思考......。其实,我开始的想法是读入,然后统一处理,结果...发现...tmd读不进去啊!!所以,想到了一种别的方式。因为每个战壕之对它的左下角起到作用,所以,我们必须要保证后面处理的点对于前面已经处理过的点没有影响,所以,想到用sort+bool,先按横坐标排序,再按纵坐标排序,这样,就可以干点一维,接下来就是一些基本的东西了,注意细节,即可。

    最后,附上丑陋的代码......

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 int tree[32010];
 6 int a[23333];
 7 int n;
 8 struct Node
 9 {
10     int x,y;
11 }q[15010];
12 struct Node1
13 {
14     int x,y;
15     int val;
16 }q1[15010];
17 bool cmp(Node s,Node r)
18 {
19     if(s.x==r.x) return s.y<r.y;
20     return s.x<r.x;
21 }
22 void fix(int t,int r)
23 {
24     for(int i=t;i<=32000;i+=i&-i)
25     {
26         tree[i]+=r;
27     }
28 }
29 int query(int t)
30 {
31     int ans=0;
32     for(int i=t;i;i-=i&-i)
33     {
34         ans+=tree[i];
35     }
36     return ans;
37 }
38 int main()
39 {
40     scanf("%d",&n);
41     for(int i=1;i<=n;i++)
42     {
43         scanf("%d%d",&q[i].x,&q[i].y);
44
45     }
46     sort(q+1,q+n+1,cmp);
47     int cnt=0;
48     for(int i=1;i<=n;i++)
49     {
50         if(q[i].y!=q1[cnt].y||q[i].x!=q1[cnt].x)
51         {
52             q1[++cnt].x=q[i].x;
53             q1[cnt].y=q[i].y;
54         }
55         else
56         {
57             q1[cnt].val++;
58         }
59     }
60     for(int i=1;i<=cnt;i++)
61     {
62         a[query(q1[i].y)]+=q1[i].val+1;
63         fix(q1[i].y,q1[i].val+1);
64     }
65     for(int i=0;i<=n-1;i++)
66     {
67         printf("%d\n",a[i]);
68     }
69     return 0;
70 }

    小结:错误

        1.没有注意题目的分析——看差题了

        2.数组开错,范围开小

  转载请注明:http://www.cnblogs.com/ShuraK/p/7857567.html

时间: 2024-10-03 22:55:45

弱弱的战壕的相关文章

Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】

弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒[email protected][email protected]). 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT).这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队. 战壕都有一个保护范围,同它的攻击

[FZYZOJ 1003] 弱弱的战壕

P1003 -- 弱弱的战壕 时间限制:1000MS 内存限制:65536KB Description 永恒和lmx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“lmx不赢定了?!?”永恒[email protected][email protected]). 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT).这样

lua的弱弱引用表

lua有GC,细节无需太关注,知道些基本的就行,能local就一定不要global: 还有在数组里的对象,除非显式=nil,否则很难回收: 不过可以用弱引用表来告诉GC.外部引用为0,就不要管我,请del it. weak table是通过元表实现,元表里的__mode字段包含k或者v:k表示key为弱引用:v表示value为弱引用. 1.首先看一个普通的例子: a = {} key = {} a[key] = 1 key = {} a[key]=2 collectgarbage() for k

java学习笔记-1205班李夏*:弱弱的说一句:尚硅谷,你值得拥有

时间过得真快,一晃眼一个月都过去了.记得前几个月看尚硅谷java视频的情景,还很清晰. 在这一个月中从最开始来北京java培训时的激动到现在的对北京的适应感觉经历了许多许多,再这一个月中我对北京的人文文化有了比较深入的了解,发现原来一个团队,集体可以如此和谐,每个人也都可以如此努力的为梦想,为工作,使我有了莫名的动力. 对于前一个阶段的总结,我主要可以分为以下几个方面: 第①方面:在学习上的总结,由于学校的期末考试我不得已把自己来北京的时间推迟了两周,来了之后发现这里的进度特别快,心想这下死定了

丑数[弱弱版]

丑数[弱弱版] Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合. 这个集合包括:p1, p1p2, p1p1, 和 p1p2p3 (还有其它).这是个对于一个输入的S的丑数集 合.注意:我们不认为1 是一个丑数. 你的工作是对于输入的集合S去寻找集合中的第N个丑数.longint(signed 32-bit)对于 程序是足够的. Input 第 1 行: 二个被空隔分开的整数:K 和 N , 1<= K<=10

【vijos1066】弱弱的战壕 线段树

描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒ftING…@[email protected]). 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT).这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队. 战壕都有一个保护范围,同它的攻击范围一样,它可以保护处在它左下方

【vijos】P1066 弱弱的战壕

[算法]线段树 [题解]将所有坐标按x(第一)和y(第二)从小到大排序,再按顺序插入线段树,即在线段树中将y坐标位置+1,这样就能保证每个坐标能包含的点一定先被处理了,每次询问查询1...a[i].y区间的和. #include<cstdio> #include<algorithm> using namespace std; struct cyc{int x,y;}a[15010]; struct treess{int l,r,sum;}t[200010]; const int m

弱弱的小白记录之——面向对象实现简单的歌曲管理信息

实现简单的面向对象方法来管理歌曲信息的增删改查. 数据驱动思想,也可以理解单项数据绑定,既:数据发生变化,页面也跟着变化: 思路: 使用构造函数来存储数据信息: 使用原型来存储方法(增删改查): 修改方式中方法使用到的数据,由变量转为对象的属性: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Docum

OI每周刷题记录

2017.8.7 [线段树] codevs 1080 1081 1082 线段树练习 线段树练习2 线段树练习3 vijos1066 弱弱的战壕 hdu1166 敌兵布阵 [模拟] vijos1066 弱弱的战壕 [动态规划] vijos1071 新年趣事之打牌 福建师范大学附属中学oj1290 寻找牧场 poj3046 Ant Counting poj2718 Smallest Difference [离散化] poj 1177 Picture [高精度]HazeOJ#17 A+B++