hdu5137 枚举删点】的更多相关文章

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ; ; int map[maxn][maxn],n,m,dis[maxn][maxn]; int max(int x,int y) { return x>y?x:y; } int floyd() { int i,j,k; ;k<=n;k++) { ;i<=n;i++) { ;j<=n;j++)…
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2524    Accepted Submission(s): 888 Problem Description Marica is very angry with Mirko because he found a new gi…
How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 1027    Accepted Submission(s): 349 Problem Description "Guanxi" is a very important word in Chinese. I…
 棋盘游戏 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1281 Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车…
#include<bits/stdc++.h> using namespace std; #define maxn 300 ]; int n,head[maxn],tot,a,b,dis[maxn]; void init(){ memset(head,-,sizeof head); tot=; } void addedge(int u,int v){ edge[tot].from=u,edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++; edg…
先排序,枚举删一个点,在前面找出最优的另一个点,容易推出斜率方程,平衡树维护凸包. #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=3e5+5; typedef struct node*ptr; struct node{ ptr i,j,s,t; ll w,x,y; node(){w=rand();} }*b,e[N]; void zag(ptr&o){ptr s=o->…
对于一个合格的程序员来说,掌握一定的数学知识是非常必要的,所以这次就开个数学专题玩玩. 不多说啥,上题目,我们直接分析题目! 首先ORZ stonepage神犇,一眼就看出我把快速幂写成快速乘了…… 话说%2007为啥不是2007年的题?还TMD是市选,MDZZ: 算了不管他,我们说我们的: 由于题目要求一个生成树,那么我们就要保证所有的点在一个联通块里面,so,怎么做呢? 首先观察这一个图,我们很容易能发现,其实我们只需要删去n+1条边,那么怎么删呢? 首先外围的五边形只能每个最少删去一条边这…
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人们把所有的希望都寄托在了骑士团的身上,就像期待有一个真龙天子的降生,带领正义打败邪恶.骑士团是肯定具有打败邪恶势力的能力的,但是骑士们互相之间往往有一些矛盾.每个骑士都有且仅有一个自己最厌恶的骑士(当然不是他自己),他是绝对不…
题意 \(n(1 \le n \le 2500)\)个点的树,求删掉一条边再加上一条边使得还是一棵树,且任意两点最大距离最小. 分析 考虑枚举删掉每一条边,我们只需要考虑如何加边容易求得新树的最大距离. 当然是直径的一半咯. 题解 枚举每一条边,然后求两个连通块的直径,然后最大距离\(=max(len1, len2, (len1+1)/2+(len2+1)/2+1)\) #include <bits/stdc++.h> using namespace std; const int N=2505…
题意:给定一些单词,这些单词必须要是一个目标串的子串,同时给定一些串,这些串不能够出现在目标串中,其余一些串只会带来不同附加值.现在问满足前两者的情况下,要求附加值最大.数据给定一个原始串,现在要求在这些串中删除一些字符,输出在满足要求的情况下删除最少的字符并保证附加值尽可能的大. 分析:这题的一个暴力的方法肯定就是对于每个字符枚举删或者不删,然后选择一种方案即可.在这个蛮力法的后面注意到其实在枚举的时候还是有很多重复计算的,比如前a个字符删除或者不删除某个字符对于后面的选择是一样的,而题目要求…
题意: 给一个带权无向图,求其至少有3个点组成的环的最小权之和. 思路: (1)DFS可以做,实现了确实可以,只是TLE了.量少的时候应该还是可以水一下的.主要思路就是,深搜过程如果当前点搜到一个点访问过了,而其不是当前点的父亲,则肯定有环,可以更新答案.深搜过程要记录路径和,父亲,是否访问过等等信息,因为图可能有多个连通分量. #include <bits/stdc++.h> #define INF 0x7f7f7f7f #define pii pair<int,int> #de…
Description 小T打算在城市C开设一家外送快餐店.送餐到某一个地点的时间与外卖店到该地点之间最短路径长度是成正比的,小T希望快餐店的地址选在离最远的顾客距离最近的地方. 快餐店的顾客分布在城市C的N 个建筑中,这N 个建筑通过恰好N 条双向道路连接起来,不存在任何两条道路连接了相同的两个建筑.任意两个建筑之间至少存在一条由双向道路连接而成的路径.小T的快餐店可以开设在任一建筑中,也可以开设在任意一条道路的某个位置上(该位置与道路两端的建筑的距离不一定是整数). 现给定城市C的地图(道路…
UVA1416 Warfare And Logistics 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36232 [题意] 给出一个无向图,定义C =∑(d[i][j])  ,其中d[][]表示两点间的最短距离,求出C并求出删除一条边后的最大C2. [思路] 最短路树. 简单地想我们可以用floyd或SPFA求出两点间的最短距离,然后枚举删除m条边再次进行这项工作. 其实这里我们不用重新全部计算,因为如果所删除的…
题意就是有n个队伍和m个题目 给出了每个队伍解决的题目数量 每个题目也给出了被解决的次数 然后求一个方阵. N,Y表示每个队伍是否过了哪个题目. 要求字典序最小. 这题给人的第一反应就是网络流. 虽然用网络流并不是最优算法. 但绝对是最直观的. 行和列分成两部分点. 源点向行连边. 行向列连边 列向终点连边 就行了 然后字典序要求最小. 那么就要枚举删边了. 我们先跑一遍网络流 然后从方阵左上角开始枚举. 每到一个枚举的位置,如果这个位置在第一次跑的网络流中就没有流量的话.显然这个位置可以放N…
传送门:The Unique MST 题意:判断最小生成树是否唯一. 分析:先求出原图的最小生成树,然后枚举删掉最小生成树的边,重做kruskal,看新的值和原值是否一样,一样的话最小生成树不唯一. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<v…
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路. 贝茜所在的乡村有R(1<=R<=100,000)条双向道路,每条路都联结了所有的N(1<=N<=5000)个农场中的某两个.贝茜居住在农场1,她的朋友们居住在农场N(即贝茜每次旅行的目的地). 贝茜选择的第二短的路径中,可以包含任何一条在最短路中出现的道路,并且,一条路可…
3575: [Hnoi2014]道路堵塞 Time Limit: 10 Sec  Memory Limit: 128 MB Description A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有从城市1到城市N的路径中最短的.不幸的是,因为从城市1到城市N旅行的人越来越多,这条由交通部指定的路径经常发生堵塞.现在A国想知道,这条路径中的任意一条道路无法通行时,由城市1到…
别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了Tarjan怎么求桥了啊QAQ(果然蒟蒻) 然后开始查资料查资料...然后突然意识到还在计时不如去切 $D$ ... 开 $D$ 题, 求包含 $k$ 个点的矩形的最小面积... 开始一脸懵逼, 然而点数 $\leq 50$ ? woc离散化然后前缀和 $O(n^4)$ 大力乱搞啊QAQ 然后码码码…
第一天 基础算法&&数学 day1难度测试 如果要用一个词来形容上午的测试,那真是体无完肤.  成绩: 题目 成绩 评价 T1 50 一般 T2 10 大失所望 T3 0 差 基础算法 递推 :指通过观察.归纳,发现较大规模问题和较小规模问题之间的关系,用一些数学公式表达出来,在一些教材中,也称为计数DP.递推的模型最主要有:斐波那契数列,卡特兰数,bell数,错排等等. 递归 :所谓递归,是指函数"自己调用自己"的一种编程方法,在解决一个问题时,如果发现问题能拆解为一…
这道题考场上的时候暴力写RE了,我果然很菜. 看了一篇大佬的的题解才明白 dalao的题解 但是解释很少哇,为了造福人类,在下发一篇详细一点的题解. 预处理:用vector把与每个点相连的点存起来,排一遍序. m=n-1的情况 这种比较好处理,搜到一个节点后找一个与该节点相连的最小的编号的儿子继续往下搜,显然这样答案更优.不过要小心RE. 具体代码就是: void work(int u,int fa) { if(vis[u]) return ; vis[u]=1; ans[++dep]=u; f…
day0 中午在机房水了一波出发,坐了一下午的车,5点到了大门对面的红旗宾馆.南山中学的和我们住在一个宾馆里面,Z教练似乎同他们关系很好,见面还打招呼. 红旗宾馆附近特别偏僻,出门就是修路的工地,后面一个小巷里有很多卖面的,刀削面.燃面.拉面--但是这些馆子,大多卫生条件不好.W学霸带我们在附近转了一圈,没看到什么好吃的,却把挂着治疗妇女孕育问题的横幅的社区卫生服务中心和空无一人的派出所找到了.按W学霸的意思,"这下考试不用慌了,把医院和派出所的位置摸熟了."最后我们还是回到了那个巷子…
前言 (这篇本来在联赛前写了一点,但是一直没有发布.现在退役了,还是把它发出来留作纪念吧!) 其实,这篇随笔早该在停课时就写,可是我却迟迟没有动笔. 可能是我真的太懒了,或许也是我想要逃避自己内心的真实想法. 我看不清联赛以后的路,因此还是决定写下自己内心深处的回忆以及想法,也算是提醒自己吧. 正文 严格来说,我是一个OI生涯足足有五年的Oier,今年是我接触OI以来的第六年. 似乎在我前几年的OI生涯中就没有顺风顺水过. 小学.初一相当于在打酱油,在学校一年甚至学不完基础的C语言, 初二好不容…
题面戳我 Solution 首先长度为偶数可以直接判掉 然后我们可以枚举删的位置,通过预处理的\(hash\),判断剩余部分是否划分成两个一样的 判重要注意,我们把字符串分为三个部分\(L_l+1+L_r\),(\(L_l=L_r\)),如果上次答案和这次都出现在\(L_l\),则一定不会是不同的,因为右边的\(L_r\)是一样的,所以复制的串一定是一样的,全在\(L_r\)同理 那么我们就只用判断上次出现的答案在\(L_l+1\)上,这次出现在\(L_r\)上,其实我们就可以发现复制的串变成了…
m=n-1的时候,就直接贪心地dfs就可以 m=n的话,就可以枚举删掉一条边,然后照着m=n-1做 $O(n^2)$大概能过 (然而我眼瞎看不到m<=n) #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> #include<set> using namespace std; typedef long lo…
[NOIp2018提高组]旅行: 题目大意: 一个\(n(n\le5000)\)个点,\(m(m\le n)\)条边的连通图.可以从任意一个点出发,前往任意一个相邻的未访问的结点,或沿着第一次来这个点的边返回.需要遍历每一个点.没经过一个新的结点,就将这个结点写下来.最终可以得到一个序列.求字典序最小的序列. 思路: 对于树的情况,显然从\(1\)出发,每次从字典序最小的相邻结点DFS即可. 对于有环的情况,由于环只有一个,我们可以将环找出来,枚举删掉环上的每一条边,然后按树的情况求解即可. 时…
第一次打codechef...不太会用这oj. A: #include <bits/stdc++.h> #define mk(a,b) make_pair(a,b) #define pii pair<int,int> using namespace std; inline int read() { ,w=; char c=getchar(); ; c=getchar(); } )+(X<<)+c-',c=getchar(); return X*w; } typedef…
F读错题wa了三个小时.自闭了,不然I题有可能能出的..已经想到组合数也敲完组合数板子了. A:这...**题吧,第一眼看的这个就秒了 #include<bits/stdc++.h> #define pii pair<int,int> #define mk(a,b) make_pair(a,b) using namespace std; typedef long long ll; ],b[]; void slove(int n,int id){ ) { ; while (n) {…
第一题第二题鉴上我前几篇博客poj1985 poj1849:https://www.cnblogs.com/Tyouchie/p/10384379.html 第三题:数的重心:poj1655 来自sjh大佬的版子,邻接表写法 #include<algorithm> #include<bitset> #include<cctype> #include<cerrno> #include<clocale> #include<cmath> #…
传送门--CF 传送门--UOJ 题目要求基环树删掉环上的一条边得到的树的直径的最小值. 如果直接考虑删哪条边最优似乎不太可做,于是考虑另一种想法:枚举删掉的边并快速地求出当前的直径. 对于环上的点,先把它的子树计算完毕,然后将最深的那条链接在这个点上,即记录每个点子树的最深深度,记为\(dep_i\).然后枚举环上的节点\(x\),设\(dis_y\)表示从\(x\)开始顺时针到达\(y\)需要走多远(相当于将\(x\)和其逆时针遇到的第一个点之间的边删掉),那么当前的直径就是\(\max\l…
题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚举删每条边然后求最短路显然不行.考虑怎么保留之前求最短路的一些信息. 考虑删掉一条边后的最短路,\(1\)沿最短路到了某个点\(x\),然后如果\(x\)到了最短路上的某点\(y\),之后一定是沿\(y\)到\(n\)的最短路走到\(n\). \(n\)也是最短路上的点,即\(x\)一定会到达某个\…