Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间。Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j
挺适合入门的(2)无向图的双联通分...
A模板题1#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N=2e5+6; int n,m; struct node{ int l,r; int v; }tr[N*4]; void push_up(int u){ tr[u
AC代码:#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <algorithm> #define int long long using namespace std; const int maxn=1e6+5; int
二分图最大匹配的König定理及其证明本文将是这一系列里最短的一篇atrix67.com/blog/article.as...
题意:给出
题目:听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,虽然他手上有所有人的联系方式,但是一个一个联系过去实在太耗时间和电话费了。他知道其他人也有一些别人的联系方式,这样他可以通知其他人,再让其他人帮忙通知一下别人。你能帮Wiskey计算出至少要通知多少人,至少得花多少电话费就能让所有人都被通知到吗? 先解释一下缩点(反正我刚开始不知道啥
题意:大学班级选班长,N
题目:在zyh的高中,学生会每一年都会评选受欢迎学生,所谓受欢迎的学生,就是被所有学生喜欢的学生。 每个学生都喜欢自己,碰巧的是,如果学生A 喜欢学生B ,学生B喜欢学生C, 那么学生A也喜欢学生C。 但是学生A喜欢学生B 并不意味着学生B喜欢学生A。 zyh参与了评选工作,苦逼的他被安排去购买奖品,于是他拿到了一张表,这张表有m条记录,每条记录由两个数字a,b组成,表示a,喜欢b ,但是由于学生
这个刚开始困扰了我好久。首先我们要
菜鸡本鸡,理解了好长时间才想明白这个问题。现在看代码。void tarjan(int u,int pre){ dfn[u]=low[u]=++cnt; for(int i=head[u];i;i=edge[i].next){ int v=edge[i].v,id=edge[i].id; if(!dfn[v]){ //还没访问过 tarjan(v,id); lo
题目描述:给一个无向连通图,至少添加几条边使得去掉图中任意一条边不改变图的连通性(即使得它变为边双连通图)#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int maxn=1e5+5;struct n
题目:为了进入世界杯决赛圈,中国正在疯狂规划这份名单里任意两个人的公共祖先是谁AC代码:#include <...
题目:有一个公园有n个景点,公园的管理员准备修建m条道路,并且安排一些形成回路的参观路线。如果一条道路被多条道路公用,那么这条路是冲突的;如果一条道路没在任何一个回路内,那么这条路是不冲突的 问分别有多少条有冲突的路和没有冲突的路题解:1.一条边不在任何个环中等价于割边(桥) 2.一条边在多个环内等价于所有含多个环的双
一个时间上的问题。由于小镇上的福利特别好,所以小懒入住了这个小镇,他规划了m次的
题意:给你一个大小为n的数组
题目:Berland有n个城市和m条路<i
这题很水,简要记录记录一下low_bound()还有upper_bound()的用法。lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。
以前一直误以为在自定义cmp函数时,只能利用结构体内的变量去定义排序规则,今天才知
写这个题的时候一直在想怎么才能动态排序(一遍改变数值,一遍从新改变相应的顺序clude <queue>#include <algorithm>using namespace std;const int maxn=1
每次可
题目:今天我们要来造房子。造这个房子需要n种原料,每造一个房子需要第i种原料ai个。现在你有第i种原料bi个。此外,你还有一种特殊的原料k个,每个特殊原料可以当作任意一个其它原料使用。那么问题来了,你最多可以造多少个房子呢?(本题数据量大,必须二分答案)AC代码:#include <iostream>#include <cstring>#include <cstdio
第一个比num大或相等的元素的指针,通过减去*begin指针我们可以获得相应的下标。upper_bound( first, last, & val)算法返回一个非递减序列[first, last)中第一个 大于 val的地址。lower_bound( first, last, & val)算法返回一个非递减序列[first, last)中第一个 大于等于 值val的地址。.
题意:第一行给一个n(<=10^5)第二行n个数,代表同计出最多的d就行,但是这题卡精度,所以要用pair存最简的分子分母,然后再用map存每一个pair就行了。记录一个求gcd得函数—gcd()(注意
水题,记录一下substr(int
先求连通块,再看是不是所有连通
em.....虽然自己想到了dfs回溯解决这个问题de <algorithm>using namesp
素数筛模板AC代码:#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;const int maxn=1e6+5;int a[maxn];void prime() { m
类推,第n层有n个酒杯。jietmeier同学自荐,担任起往金字塔酒杯倒酒的任务,香槟酒沿着金字塔从最高层依次流到最底层,并逐渐注满每一个酒杯。已知每秒钟jietmeier向最高层的酒杯倾倒的酒量刚好等于能倒满一
水题,记录一下两个函数的使用。AC代码:#include <iostream>#include <string>#include <algorithm>using namespace std;string s[105];bool cmp(string a,string b){ if(a.size()!=b.size())return a.size()<b
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号