POJ 2665 水题

 宁波现场热身C

水题啊。。。


一眼看到题,马上想到线段树,不想离散化,又只有一维,果断矩形分割 RE,原因未考虑线段未相交情况,加上后AC 结果在DISCUSS里看到了这么一句 It is confirmed that these sections do not overlap with each other. 马上囧了 要认真读题啊 #include <stdio.h> int line [ 5005 * 4 ][ 2 ]; int m ; void Add ( int a , int b ) { ++m ; line [m ][ 0 ]=a ; line [m ][ 1 ]=b ; } void Delete ( int &i ) { line [i ][ 0 ]=line [m ][ 0 ]; line [i ][ 1 ]=line [m ][ 1 ]; --m ; } int main () { int L ,M ; while ( scanf ( "%d%d" ,&L ,&M )) { if (!L && !M ) break ; m =- 1 ; int a ,b ; while (M --) { scanf ( "%d%d" ,&a ,&b ); int mm =m ; for ( int i = 0 ;i <=mm ;i ++) { if (!((line [i ][ 0 ]>=b )||(line [i ][ 1 ])<=a )) { if (line [i ][ 0 ]<a ) Add (line [i ][ 0 ],a -1 ); // 每个点不能重复算,所以线段不相交要加强到 if (b <line [i ][ 1 ]) Add (b +1 ,line [i ][ 1 ]); // 点不相交 Delete (i ); } } Add (a ,b ); } for ( int i = 0 ;i <=m ;i ++) L -= (line [i ][ 1 ]-line [i ][ 0 ]+ 1 ); printf ( "%d /n " ,L +1 ); } }


其实区间是不互相覆盖的

#include <stdio.h> int main () { int L ,M ,a ,b ; while ( scanf ( "%d%d" ,&L ,&M )&&L ) { while (M --) { scanf ( "%d%d" ,&a ,&b ); L -= (b -a +1 ); } printf ( "%d /n " ,L +1 ); } }

 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值