23333这个垃圾题之前扒过题解了2333

然而这一次做又错了。。。

直接暴力连边,然后缩一下点,重构变成DAG,然后DP。。

(然而在打tarjan的时候忘掉了inq[now]=0....而且把DP搞成了搜索2333)

(附:此题内存玄学)

  1 #include<cstdio>
  2 #include<iostream>
  3 #include<algorithm>
  4 #include<map>
  5 #define N 1000005
  6 #define LL long long
  7 using namespace std;
  8 inline int ra()
  9 {
 10     int x=0,f=1; char ch=getchar();
 11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
 12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
 13     return x*f;
 14 }
 15 struct in_data{
 16     int x,y,id,opt;
 17 }a[N];
 18 struct edge{
 19     int to,next;
 20 }e[N<<2],re[N];
 21 int head[N],rehead[N>>1],cnt,recnt,ind,top,n,x,y;
 22 bool inq[N],vis[N>>1];
 23 map<LL , int > hh;
 24 int ans;
 25 int q[N],dfn[N],low[N];
 26 int size[N>>1],belong[N],tot;
 27 bool cmp_x(in_data a, in_data b){
 28     return a.x<b.x;
 29 }
 30 bool cmp_y(in_data a, in_data b){
 31     return a.y<b.y;
 32 }
 33 void insert(int x, int y){
 34     e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
 35 }
 36 void reinsert(int x, int y){
 37     re[++recnt].to=y; re[recnt].next=rehead[x]; rehead[x]=recnt;
 38 }
 39 void tarjan(int x)
 40 {
 41     q[++top]=x; dfn[x]=low[x]=++ind;
 42     inq[x]=1;
 43     for (int i=head[x];i;i=e[i].next)
 44         if (!dfn[e[i].to])
 45         {
 46             tarjan(e[i].to);
 47             low[x]=min(low[x],low[e[i].to]);
 48         }
 49         else if (inq[e[i].to]) low[x]=min(low[x],dfn[e[i].to]);
 50     int now=-1;
 51     if (dfn[x]==low[x])
 52     {
 53         tot++;
 54         while (now!=x)
 55         {
 56             now=q[top--];
 57             belong[now]=tot;
 58             size[tot]++;
 59             inq[now]=0;    //........
 60         }
 61     }
 62 }
 63 void rebuild()
 64 {
 65     for (int x=1; x<=n; x++)
 66         for (int i=head[x];i;i=e[i].next)
 67             if (belong[x]!=belong[e[i].to])
 68                 reinsert(belong[x],belong[e[i].to]);
 69 }
 70 void dfs(int x)
 71 {
 72     vis[x]=1; int mx=0;
 73     for (int i=rehead[x];i;i=re[i].next)
 74     {
 75         if (!vis[re[i].to]) dfs(re[i].to);
 76         mx=max(size[re[i].to],mx);
 77     }
 78     ans=max(ans,size[x]+=mx);
 79 }
 80 int main()
 81 {
 82     n=ra(); x=ra(); y=ra();
 83     for (int i=1; i<=n; i++) a[i].x=ra(),a[i].y=ra(),a[i].opt=ra(),hh[(LL)a[i].x*N+a[i].y]=i,a[i].id=i;
 84     sort(a+1,a+n+1,cmp_x);
 85     for (int i=1; i<=n; i++)
 86         if (a[i].opt==1)
 87         {
 88             for (int j=i-1; j>=1; j--)
 89                 if (a[i].x==a[j].x) insert(a[i].id,a[j].id);
 90                     else break;
 91             for (int j=i+1; j<=n; j++)
 92                 if (a[i].x==a[j].x) insert(a[i].id,a[j].id);
 93                     else break;
 94         }
 95     sort(a+1,a+n+1,cmp_y);
 96     for (int i=1; i<=n; i++)
 97         if (a[i].opt==2)
 98         {
 99             for (int j=i-1; j>=1; j--)
100                 if (a[i].y==a[j].y) insert(a[i].id,a[j].id);
101                     else break;
102             for (int j=i+1; j<=n; j++)
103                 if (a[i].y==a[j].y) insert(a[i].id,a[j].id);
104                     else break;
105         }
106     for (int i=1; i<=n; i++)
107         if (a[i].opt==3)
108         {
109             for (int j=a[i].x-1; j<=a[i].x+1; j++)
110                 for (int k=a[i].y-1; k<=a[i].y+1; k++)
111                     if (j!=a[i].x || k!=a[i].y)
112                         if (hh[(LL)j*N+k]) insert(a[i].id,hh[(LL)j*N+k]);
113         }
114     for (int i=1; i<=n; i++)
115         if (!dfn[i]) tarjan(i);
116     rebuild();
117     for (int i=1; i<=tot; i++)
118         if (!vis[i]) dfs(i);
119     printf("%d\n",ans);
120     return 0;
121 }

转载于:https://www.cnblogs.com/ccd2333/p/6498491.html

bzoj 1924: [Sdoi2010]所驼门王的宝藏相关推荐

  1. BZOJ 1924 [Sdoi2010]所驼门王的宝藏

    Description Input Output Sample Input 题解: 水题,但还是打表过的-- 这个题目,我们显然可以对关键点进行加边.我就是因为加边加太多了才MLE的,当然对于1,2这 ...

  2. BZOJ 1924 [Sdoi2010]所驼门王的宝藏 tarjan缩点+拓扑DP

    题意: 一个r*c的图中,有n个宫殿. 每个宫殿有一个类型. 类型1:可以到达他所在的行的任意宫殿. 类型2:可以到达他所在的列的任意宫殿. 类型3:可以到达他四周八个格子的任意宫殿. 现在你从任意一 ...

  3. BZOJ1924: [Sdoi2010]所驼门王的宝藏

    1924: [Sdoi2010]所驼门王的宝藏 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1303  Solved: 582 [Submit][S ...

  4. P2403 [SDOI2010]所驼门王的宝藏

    P2403 [SDOI2010]所驼门王的宝藏 题意: R * C的地图上有n个宝藏,给你n个宝藏的坐标,每个宝藏的位置上还有一个传送门,传送门有三种类型,1.可以传送到同行的其他宝藏位置,2.可以传 ...

  5. 洛谷P2403 [SDOI2010]所驼门王的宝藏

    Description 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的 Alpaca L. Sotomon 是这个家族的领袖,外人也称其为"所驼 ...

  6. [SDOI2010] 所驼门王的宝藏

    题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...

  7. 洛谷 2403 [SDOI2010] 所驼门王的宝藏

    题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...

  8. P2403 [SDOI2010]所驼门王的宝藏(强连通分量)(拓扑排序)

    文章目录 题目描述 解析 代码 洛谷传送门 题目描述 解析 看题目要求很容易想到强连通分量缩点加拓扑dp 但是问题在于存图 第一感就是和暴力和每个点连边 但那样无论点数和边数都很爆炸 随后我们发现这个 ...

  9. 洛咕 P2403 [SDOI2010]所驼门王的宝藏

    简单tarjan. 一行的横天门如果暴力连边会被卡成平方,所以只要相邻两个横天门连双向边,再随便选一个横天门向整行连边即可.纵寰门同理.ziyou门直接map暴力连边. 然后tarjan直接dp. / ...

最新文章

  1. 用keil烧写现成的hex文件
  2. 转载/JSTL/attribute value does not accept any express
  3. Educational Codeforces Round 41 E. Tufurama (961E)
  4. LeNet试验(五)观察“彩票假说”现象
  5. Linux ifconfig指令
  6. Mybatis 学习日记(1)
  7. STM32F103ZET6利用DAC产生噪声
  8. studio2.3app签名打包安装失败,找不到签名证书。
  9. 自学python入门训练营 李笑来_如何看待李笑来发布的Python教程《自学是门手艺》?...
  10. 怎么把python压缩_python中如何实现图片压缩
  11. 上twitter_如何在Twitter上更改您的显示名称
  12. 在GNU/Linux下将CD音乐转为mp3
  13. 关闭微软cortana
  14. IT(计算机/软件/互联网)专业词汇宝典
  15. 计算机系统概论输入输出,计算机系统概论笔记-4-冯·诺依曼模型
  16. iphone型号表_苹果所有产品型号大全
  17. 关于如何快速学好,学懂Linux内核。内含学习路线
  18. nanopi neo core学习(二)网络设置
  19. 关于只有两行报错的闪退( E/ActivityManager: Found activity ActivityRecord)
  20. 读《输赢》所想到的——关于CRM和团队管理

热门文章

  1. adsl服务器客户端配置cisco_基于ISE对Cisco网络设备部署AAA
  2. php bdecode,PHP base64_encode和base64_decode 编码/解码url
  3. 如何用python画爱心型线_python怎么画爱心
  4. 移动端手机网站建设应注意哪些问题?
  5. 浙江大学计算机视频 百度云,浙江大学 数据结构与算法 全40讲 徐镜春 视频教程...
  6. mysql从表中转移数据文件_MySQL 数据文件迁移找不到表
  7. html5在线api,HTML5 历史记录API
  8. python数据分析年薪百万_如何成为一个年薪 50 万以上的数据分析师?
  9. stm32怎么查看什么原因引起的nmi_为什么会有口臭,口臭是什么原因引起的,口臭是怎么回事...
  10. 一年的第几周怎么算_部编版一年级下册第7课《怎么都快乐》图文讲解+知识点梳理...