Ural 1019. Line Painting
来源:互联网 发布:js 等比例缩放图片 编辑:程序博客网 时间:2024/06/03 22:06
Ural 1019. Line Painting
直接离散化然后暴力染色。
注意离散化的时候在线段头尾都多插一点,否则很容易错。
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<algorithm>using namespace std;#define nMax 20000int n;char s[20];struct Ask{int a,b,co;void read(){scanf("%d%d%s",&a,&b,s);a++;co = (s[0]=='w'?1:0);}void out() {printf("a=%d b=%d co=%d\n",a,b,co);}}ask[nMax];int val[nMax];#define pb push_back#define mp make_pairint Split(){vector<pair<int,int> > ret;ret.clear();ret.pb(mp(0,0));ret.pb(mp(1000000000,0));ret.pb(mp(1000000001,0));for(int i=1;i<=n;i++) {ret.pb(mp(ask[i].a,i));ret.pb(mp(ask[i].b,-i));ret.pb(mp(ask[i].a-1,0));ret.pb(mp(ask[i].b+1,0));}sort(ret.begin(),ret.end());int cnt = 0, tmp=ret[0].first;for(int i=0;i<ret.size();i++) {if(ret[i].first != tmp) tmp=ret[i].first,cnt++;if(ret[i].second > 0) ask[ ret[i].second ].a = cnt;else if(ret[i].second < 0) ask[ -ret[i].second ].b = cnt;val[cnt] = tmp;}return cnt;}int co[nMax];int main() {freopen("input.txt","r",stdin);while(~scanf("%d",&n)){for(int i=1;i<=n;i++) ask[i].read();int cnt = Split();//for(int i=1;i<=n;i++) ask[i].out();for(int i=0;i<cnt;i++) co[i]=1;//co[cnt-1]=0;for(int i=1;i<=n;i++) {for(int j=ask[i].a;j<=ask[i].b;j++) co[j] = ask[i].co;}int x=-1,y=-1;int i,j;for(int i=1;i<cnt;) {while(i<cnt && co[i]<1) i++;j=i;while(j<cnt && co[j]>0) j++;if(i>=cnt) break;//printf("%d %d\n",val[i-1],val[j]);if(x==-1 || val[j]-val[i-1] > val[y]-val[x]) {x=i-1;y=j;}i = j;}//printf("x=%d\n",x);printf("%d %d\n",val[x],val[y]-1);}return 0;}
- ural 1019. Line Painting
- Ural 1019. Line Painting
- Ural 1019. Line Painting
- URAL 1019. Line Painting (线段树)
- ural 1019 Line Painting
- Ural 1019 Line Painting
- URAL 1019 - Line Painting
- ural 1019 Line Painting
- URAL 1019. Line Painting 线段树 区间合并 离散化
- ural 1019. Line Painting 线段树 离散化
- URAL 1019 Line Painting(解题报告)
- ural 1019 Line Painting (线段树)
- URAL 1019 - Line Painting(线段树)
- ural 1019 Line Painting(线段树)
- Timus 1019. Line Painting
- ural 1019 Line Painting 线段树 区间染色
- URAL - 1019 - Line Painting(离散化+线段树)
- Ural 1019 A Line painting(线段树,成段更新离散化)
- 自己写的一个增强版本的 RRDtool fetch
- JAVA整合Flex导出数据库中的数据 (续集2)
- 学习matlab的资源网站
- 在C#中,远程连接Oracle数据库(不安装客户端,无需多余配置)
- zend framework多模块多Layout配置
- Ural 1019. Line Painting
- Record mode Concept in SAP BI
- 开关机铃声——android系统属性的使用
- linux--文件合并和分割
- js中cookie的使用详细分析
- POJ 3267 (DP)
- javaweb中利用timer定时执行程序
- IOS杂谈21--Xcode4.6破解
- Eclipse 高效常用快捷键