随笔分类 -  A:模板

整理的一些可以直接套用的模板
摘要:2-sat一个变量两种状态符合条件的状态建边找强连通,两两成立1 - n 为第一状态(n + 1) - (n + n) 为第二状态 例题模板 链接一 POJ 3207 Ikki's Story IV - Panda's Trick(2-sat) 链接二 Katu Puzzle POJ - 3678 阅读全文
posted @ 2019-08-14 22:10 DWVictor 阅读(265) 评论(0) 推荐(0)
摘要:题意 有一个 n*n 的图,. 代表空白区域,X 代表墙,现在要在空白区域放置结点,要求同一行同一列只能放一个,除非有墙阻隔,问最多能放多少个点 思路 只有在墙的阻隔情况下,才会出现一行/列出现多个点的情况,那么可以考虑进行缩点,将同一行且没有墙体阻隔的区域缩成一个点,放到左点集中,将同一列且没有墙 阅读全文
posted @ 2019-08-13 20:34 DWVictor 阅读(1300) 评论(0) 推荐(2)
摘要:题目 给到一个矩阵,有些格子上是草,有些是水。需要用宽度为1,长度任意的若干块木板覆盖所有的水,并不能覆盖草,木板可以交叉,但只能横竖放置,问最少要多少块板。 分析 经典的矩阵二分图构图和最小点覆盖。无非就是两种方向,横向和竖向。我们把水块连续的编成同一号,那么对于一个点,它会有一个横向编号和纵向编 阅读全文
posted @ 2019-08-13 20:28 DWVictor 阅读(298) 评论(0) 推荐(1)
摘要:// Tarjan算法求有向图强连通分量并缩点 #include #include #include #include #include #include using namespace std; const int N = 100010, M = 1000010; // int ver[M], Next[M], head[N], dfn[N], low[N]; int stack[N], ... 阅读全文
posted @ 2019-08-13 19:22 DWVictor 阅读(272) 评论(0) 推荐(0)
摘要:// tarjan算法求无向图的桥、边双连通分量并缩点 #include #include #include #include #include using namespace std; const int SIZE = 100010; int head[SIZE], ver[SIZE * 2], Next[SIZE * 2]; int dfn[SIZE], low[SIZE], c[SIZ... 阅读全文
posted @ 2019-08-13 17:53 DWVictor 阅读(377) 评论(0) 推荐(0)
摘要:POJ 3207 C++代码一 C++代码二 点击 阅读全文
posted @ 2019-08-13 17:32 DWVictor 阅读(259) 评论(0) 推荐(0)
摘要:一个公园中有 n 个景点,景点之间通过无向的道路来连接(明显的点双 ),如果至少两个环公用一条路,路上的游客就会发生冲突;如果一条路不属于任何的环,这条路就没必要修 问,有多少路不必修,有多少路会发生冲突 每一个连通块中,如果边数大于点数,这个块中所有的边全部是冲突边。 所有桥为不需要修建的路。 点 阅读全文
posted @ 2019-08-11 00:11 DWVictor 阅读(493) 评论(0) 推荐(0)
摘要:题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头 牛被所有的牛认为是受欢迎的。 先用tarjan求出每个强连通分量,再缩点 阅读全文
posted @ 2019-08-10 20:18 DWVictor 阅读(299) 评论(0) 推荐(0)
摘要:题目: 曹操在长江上建立了一些点,点之间有一些边连着。如果这些点构成的无向图变成了连通图,那么曹操就无敌了。刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥。但是诸葛亮把所有炸弹都带走了,只留下一枚给刘备。所以刘备只能炸一条桥。 题目给出n,m。表示有n个点,m条桥。 接下来的m行每行给出a, 阅读全文
posted @ 2019-08-10 16:39 DWVictor 阅读(275) 评论(0) 推荐(0)
摘要:## Problem A 题意: 题解: C++版本一 ## Problem B 题意: 题解: C++版本一 ## Problem C 题意: 题解: C++版本一 ## Problem D 题意: 题解: C++版本一 ## Problem E 题意: 题解: C++版本一 ## Problem 阅读全文
posted @ 2019-08-05 11:00 DWVictor 阅读(276) 评论(0) 推荐(0)
摘要:祖传头文件(更新) 阅读全文
posted @ 2019-07-16 16:36 DWVictor 阅读(294) 评论(0) 推荐(0)
摘要:输入挂(更新) 阅读全文
posted @ 2019-07-16 16:34 DWVictor 阅读(168) 评论(0) 推荐(1)
摘要:代更 阅读全文
posted @ 2019-07-16 14:54 DWVictor 阅读(194) 评论(0) 推荐(0)
摘要:题意:删去m个数,使剩下的数组成的数最小 题解 :贪心 , RMQ RMQ解法,建st表找,用rmq找最小值的下标,注意点 ,因为最小值是区间最右最小值,所以应该改成 <= 而不是< 且rmq查询也要同步 #include<iostream> #include<cstdio> #include<st 阅读全文
posted @ 2019-07-15 21:11 DWVictor 阅读(184) 评论(0) 推荐(0)
摘要:Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions:8623 Accepted: 4100 Description FJ has decided to grow his own corn hybrid in ord 阅读全文
posted @ 2019-07-15 17:42 DWVictor 阅读(384) 评论(0) 推荐(0)
摘要:近期学了一些新算法,并查集,最短路,线段树,树状数组,最小生成树,KMP,简单DP。 暂时就对以上这些算法进行总结与复习。 一、并查集 并查集是最简单的一种算法。 主要用于合并,查找。 基本代码 How Many Tables 最短路Dijkstra dj是来记录从s出发到每一点的最短路 spfa判 阅读全文
posted @ 2019-02-23 02:59 DWVictor 阅读(179) 评论(0) 推荐(0)
摘要:#include using namespace std; int pre[1010]; bool t[1010];//t 用于标记独立块的根结点 int find(int x)//查找根节点 { int r=x; while(pre[r]!=r) r=pre[r];//返回根节点 r int i=x,j; while(pre[i... 阅读全文
posted @ 2019-01-25 23:37 DWVictor 阅读(251) 评论(0) 推荐(0)
摘要:void Add(int u,double cost,int v)//邻接表存储关系 { w[top] = cost; Key[top] = v; next[top] = head[u]; head[u] = top++; } bool SPFA(int x) { memset(vis,false, 阅读全文
posted @ 2019-01-20 14:01 DWVictor 阅读(417) 评论(0) 推荐(0)
摘要:#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int INF=0x3f3f3f3f; const int N=210; int n,m,s,t; int map[N][N],dis[N 阅读全文
posted @ 2019-01-20 13:38 DWVictor 阅读(218) 评论(0) 推荐(0)
摘要:#include<stdio.h> #include<iostream> #include<queue> using namespace std; #define N 205 #define INF 99999999 int n,m,map[N][N]; int visited[N],dis[N]; 阅读全文
posted @ 2019-01-20 13:38 DWVictor 阅读(275) 评论(0) 推荐(0)