摘要:
N个人正在排队进入一个音乐会。人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人。队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的。 写一个程序计算出有多少对人可以互相看见。 重点: (1)看题要仔细 (2)不开long long 见祖宗 解法 阅读全文
摘要:
(luogu) 悬线的定义是这样的: 从每一个点向上走,知道遇到障碍点或顶边界。 那么我们可以轻松地得到悬线的一些性质: 所以悬线法的步骤就是:找出每一个点对应的悬线的高度,然后向左右分别找出该悬线能拓展出的矩形的宽度。 题面: 小Q找到了一张由N×M个正方形的格子组成的矩形纸片,每个格子被涂有黑白 阅读全文
摘要:
A操作:有一个新的预约是从“start日”到“end日”,并且拒绝掉所有与它相冲突的预约。 执行这个操作的时候,你的系统应当返回为了这个新预约而拒绝掉的预约个数,以方便QQ与自己的记录相校对。 B操作:请你的系统返回当前的仍然有效的预约的总数。 阅读全文
摘要:
很容易就可以看出这是个树形dp 但是怎么想都是n^3算法,60,卡常70 附上主要dp过程: (1)直接填表 然后去除了不合法的情况, 在反复wa之后,我......A了??? 所以以后循环的范围要好好思考啊 #include<cstdio> #include<cstdlib> #include<a 阅读全文
摘要:
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int n,m; const int N=503; bool vis[N][N];//因为可能是死路,所以l,r不能表示这个点有没有更新过,所以要加vis标记 int d[N][N]; int l[N][N],r 阅读全文
摘要:
题意:给出一个树,求树上每个点可到达的最远距离 思路:搜索两次,一次记录最远距离,一次寻找答案, 用 f[x][0] 表示在 x 的子树下 x 的最远距离,用 f[x][1] 表示在 x 的子树下的次远距离, 用 f[x][2] 表示通过 x 的父亲能走的最远距离, 对于第一次深搜,有 f[x][0 阅读全文
摘要:
多画图多画图多画图! 发现输出的都是以k为根的叶子节点。 1.先按以k为根,进行dfs处理。 2.按照节点深度及编号对节点排序,深度越大排序越靠前,深度相同时,编号小的排在前面。 3.依次处理每个节点 ,每次向上蹦,如果碰到以走过的节点或根节点就停止,记录走过的步数。 4.按照走过的步数及编号,对节 阅读全文