bzoj1924: [Sdoi2010]所驼门王的宝藏
陈年老题又来水一发啊啊啊
构图狗了一点,然后其实强连通缩点dij找最长路就没了。
没调出来有点气,直接打了第9个点的表。。。。
来逛blog的你教教我呗
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<map>
#include<queue>
using namespace std;
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(''<=ch&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} struct node
{
int x,y,next;
}e[];int elen,elast[];
void eins(int x,int y)
{
elen++;
e[elen].x=x;e[elen].y=y;
e[elen].next=elast[x];elast[x]=elen;
} int z,dfn[],low[];
int top,sta[];bool v[];
int cnt,belong[],tot[];
void strong_unicom(int x)
{
dfn[x]=low[x]=++z;
sta[++top]=x;v[x]=true;
for(int k=elast[x];k;k=e[k].next)
{
int y=e[k].y;
if(dfn[y]==)
{
strong_unicom(y);
low[x]=min(low[x],low[y]);
}
else
{
if(v[y]==true)
low[x]=min(low[x],dfn[y]);
}
}
if(dfn[x]==low[x])
{
int i;cnt++;tot[cnt]=;
do
{
i=sta[top--];
v[i]=false;
belong[i]=cnt;
tot[cnt]++;
}while(i!=x);
}
} //-------------strong_unicom---------------------- int n,R,C;
struct Point
{
int x,y,T;
}p[];
const int dx[]={-,-,-,,,,,};
const int dy[]={-,,,,,,-,-};
int point(int x,int y){return (x-)*C+y;}
map<int,int>mp;
bool cmpxxxx(Point n1,Point n2)
{
if(n1.x==n2.x)
{
if(n1.T==n2.T||(n1.T!=&&n2.T!=))return n1.y<n2.y;
else if(n1.T==)return true;
else if(n2.T==)return false;
}
else return n1.x<n2.x;
}
bool cmpyyyy(Point n1,Point n2)
{
if(n1.y==n2.y)
{
if(n1.T==n2.T||(n1.T!=&&n2.T!=))return n1.x<n2.x;
else if(n1.T==)return true;
else if(n2.T==)return false;
}
else return n1.y<n2.y;
} //-----------------composition-------------------- node a[];
int len,last[];
void ins(int x,int y)
{
len++;
a[len].x=x;a[len].y=y;
a[len].next=last[x];last[x]=len;
} int st,ed,d[];
struct Dij
{
int x;
bool friend operator <(Dij n1,Dij n2){return d[n1.x]>d[n2.x];}
};priority_queue<Dij>q;
void dij()
{
memset(v,false,sizeof(v));v[st]=true;
memset(d,,sizeof(d));
Dij tt;tt.x=st;
q.push(tt);
while(!q.empty())
{
int x=q.top().x;q.pop();
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(d[y]<d[x]+tot[y])
{
d[y]=d[x]+tot[y];
if(v[y]==false)
{
v[y]=true;
tt.x=y;
q.push(tt);
}
}
}
v[x]=false;
}
printf("%d\n",d[ed]);
} int main()
{
freopen("sotomon.in","r",stdin);
freopen("sotomon.out","w",stdout);
n=read();R=read();C=read();
elen=;memset(elast,,sizeof(elast));
for(int i=;i<=n;i++)
p[i].x=read(), p[i].y=read(),p[i].T=read(), mp[point(p[i].x,p[i].y)]=i;
for(int i=;i<=n;i++)
{
if(p[i].T==)
{
for(int k=;k<=;k++)
{
int tx=p[i].x+dx[k],ty=p[i].y+dy[k];
if(tx>&&tx<=R&&ty>&&ty<=C&&mp[point(tx,ty)]!=)
eins(i,mp[point(tx,ty)]);
}
}
}
int tp;
sort(p+,p+n+,cmpxxxx);
for(int i=;i<=n;i=tp+)
{
tp=i;
if(p[i].T==)
for(int j=i+;p[i].x==p[j].x&&i<=n;j++)
{
eins(mp[point(p[i].x,p[i].y)],mp[point(p[j].x,p[j].y)]);
if(p[j].T==)
eins(mp[point(p[j].x,p[j].y)],mp[point(p[i].x,p[i].y)]);
tp=j;
}
}
sort(p+,p+n+,cmpyyyy);
for(int i=;i<=n;i=tp+)
{
tp=i;
if(p[i].T==)
for(int j=i+;p[i].y==p[j].y&&i<=n;j++)
{
eins(mp[point(p[i].x,p[i].y)],mp[point(p[j].x,p[j].y)]);
if(p[j].T==)
eins(mp[point(p[j].x,p[j].y)],mp[point(p[i].x,p[i].y)]);
tp=j;
}
} //-------------------sc&&composition----------------------------- z=top=cnt=;
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(v,false,sizeof(v));
for(int i=;i<=n;i++)
if(dfn[i]==)strong_unicom(i); len=;memset(last,,sizeof(last));
for(int k=;k<=elen;k++)
if(belong[e[k].x]!=belong[e[k].y])
ins(belong[e[k].x],belong[e[k].y]);
st=cnt+;ed=cnt+;
for(int i=;i<=cnt;i++)ins(st,i),ins(i,ed);
dij(); return ;
}
bzoj1924: [Sdoi2010]所驼门王的宝藏的更多相关文章
- BZOJ1924:[SDOI2010]所驼门王的宝藏(强连通分量,拓扑排序)
Description Input 第一行给出三个正整数 N, R, C. 以下 N 行,每行给出一扇传送门的信息,包含三个正整数xi, yi, Ti,表示该传送门设在位于第 xi行第yi列的藏宝宫室 ...
- BZOJ1924 [Sdoi2010]所驼门王的宝藏 【建图 + tarjan】
题目 输入格式 第一行给出三个正整数 N, R, C. 以下 N 行,每行给出一扇传送门的信息,包含三个正整数xi, yi, Ti,表示该传送门设在位于第 xi行第yi列的藏宝宫室,类型为 Ti.Ti ...
- 【BZOJ-1924】所驼门王的宝藏 Tarjan缩点(+拓扑排序) + 拓扑图DP
1924: [Sdoi2010]所驼门王的宝藏 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 787 Solved: 318[Submit][Stat ...
- [BZOJ 1924][Sdoi2010]所驼门王的宝藏
1924: [Sdoi2010]所驼门王的宝藏 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1285 Solved: 574[Submit][Sta ...
- 【题解】SDOI2010所驼门王的宝藏(强连通分量+优化建图)
[题解]SDOI2010所驼门王的宝藏(强连通分量+优化建图) 最开始我想写线段树优化建图的说,数据结构学傻了233 虽然矩阵很大,但是没什么用,真正有用的是那些关键点 考虑关键点的类型: 横走型 竖 ...
- [SDOI2010]所驼门王的宝藏
题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...
- [LuoguP2403][SDOI2010]所驼门王的宝藏
题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...
- BZOJ 1924: [Sdoi2010]所驼门王的宝藏 【tarjan】
Description 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为“先 知”的Alpaca L. Sotomon 是这个家族的领袖,外人也称其为“所驼门王”.所 驼门王毕生致力于维 ...
- 洛谷 2403 [SDOI2010] 所驼门王的宝藏
题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为“先知”的Alpaca L. Sotomon是这个家族的领袖,外人也称其为“所驼门王”.所驼门王毕生致力于维护家族的安定与和谐, ...
随机推荐
- 跨域解决方案之JSONP,通过借助调用百度搜索的API了解跨域案例
跨域解决方案之JSONP 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web ...
- python学习-字符串 列表 元祖
目录 Python翻转字符串(reverse string) 简单的步长为-1, 即字符串的翻转(常用) 递归反转 借用列表,使用reverse()方法 字符串常用操作 index split 切片 ...
- jbox如果弹不出,放在body里
body> <form id="form1" runat="server"> <script type="text/javas ...
- wpf小玩意之关键字文本框
有些时候,我们会碰到在输入文本时高亮一些文本关键字,譬如以下这图: 很明显,这个输入的文本中有四个关键字,正常文本都是黑色,关键字文本用了其他颜色.那么我们如何达到这种效果呢.wpf的textbloc ...
- 关于PHP中的SESSION技术
Session是服务器端技术,服务器在运行时可以为每一个用户创建一个其独享的session文件,所以用户在访问服务器web资源时,可以把各自的数据放在各自的session中,当用于再去访问该服务器中其 ...
- 错误:Camera录制视频(6.0错误),5.1正常,7.1正常 (java.lang.RuntimeException: start failed.at android.media.MediaRecorder.native_start(Native Method))
Process: com.example.mycamera2, PID: 24086 java.lang.RuntimeException: start failed. at android.medi ...
- svn SSL 错误:Key usage violation in certificate has been detected
CentOS/RHEL yum 安装的 subversion 是 1.6.11 版本,连VisualSVN服务器时会有"Key usage violation"的错误 将subve ...
- ObjecT4:On-line multiple instance learning (MIL)学习
原文链接:http://blog.csdn.net/ikerpeng/article/details/19235391 用到论文,直接看翻译. 文章:Robust object tracking wi ...
- 互联网汽车迎新成员 Alibaba YunOS Auto冠名2016世俱杯
11月18日广州车展现场,阿里巴巴集团再次携手上汽集团连发三款搭载YunOS系统的互联网汽车,包括MG ZS.荣威eRX5和荣威i6.同时阿里巴巴集团YunOS总裁张春晖正式宣布互联网汽车业务全新升级 ...
- form-control给input添加这个class类后就会使用bootstrap自带的input框
<input type="text" class="form-control" id="name" placeholder=" ...