摘要: 好题,当时想了半个小时,我往图论方面去想了,把出现过的字符串当场点,然后相互连边,那么就构成了一个三角形,一个大于三个点的连通分量里有以下结论:度为二的点可能是track,度为大于二的点一定不是track,当一个点连接一个可能是track的点和一个可能是artist的点,那么这个点就可能是ablum... 阅读全文
posted @ 2015-07-22 09:50 陈瑞宇 阅读(291) 评论(2) 推荐(0) 编辑
摘要: 题意:给你一些N个点,M条边,走每条边要花费金钱,然后给出其中必须访问的点,在这些点可以打工,但是需要先拿到证书,只可以打一次,也可以选择不打工之直接经过它。一个人从1号点出发,给出初始金钱,问你能不能访问所以的点,并且获得所以证书。题解:目标是那些一定要访问的点,怎么到达的我们不关心,但是我们关心... 阅读全文
posted @ 2015-07-21 21:29 陈瑞宇 阅读(241) 评论(3) 推荐(0) 编辑
摘要: 题意:给一些带颜色的点,求一个最小的矩形,恰好包括一半的红色点,且不包括蓝色点。题解:暴力,求个二维前缀和,用容斥原理更新一下。N很小所以我采用了离散优化,跑了个0ms。之前没写过二维前缀和,加上离散写得也不是很熟练,所以搞了2个小时,好在是一发就过了。貌似有个坑,线不要特判,不然wa。#inclu... 阅读全文
posted @ 2015-07-21 18:31 陈瑞宇 阅读(221) 评论(2) 推荐(0) 编辑
摘要: 题意:给你一个序列,和标准序列连线,求交点数。题解:就是求逆序对个数,用树状数组优化就行了。具体过程就是按照顺序往树状数组了插点(根据点的大小),因为第i大的点应该排在第i位,插进去的时候他前面本该是有i-1个点的,如果少了,那么一定就和这个元素构成了逆序对。#include#include#inc... 阅读全文
posted @ 2015-07-21 18:22 陈瑞宇 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题意:求空间两线的最短距离和最短线的交点题解:线性代数和空间几何,主要是用叉积,点积,几何。知道两个方向向量s1,s2,求叉积可以得出他们的公共垂直向量,然后公共垂直向量gamma和两线上的点形成的向量做内积,在除掉gamma的长度就得到投影,即是最短距离。然后求两个点可以用gamma和s2的叉积和... 阅读全文
posted @ 2015-07-20 19:23 陈瑞宇 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 神坑题。这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背炸药因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1来判断是不是树边#include#include#includeusing namespace std;... 阅读全文
posted @ 2015-07-20 08:18 陈瑞宇 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 博主图论比较弱,搜了模版也不会用。。。所以决心学习下tarjan算法。割点和割边的概念不在赘述,tarjan能在线性时间复杂度内求出割边。重要的概念:时间戟,就是一个全局变量clock记录访问结点的时间。一个无向图dfs会形成一个森林,当图只有一个连通分量时,就只有一棵树。由于在无向图中,除了树边,... 阅读全文
posted @ 2015-07-19 21:37 陈瑞宇 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 题意:问两个迷宫是否存在公共最短路。题解:两个反向bfs建立层次图,一遍正向bfs寻找公共最短路#include#include#includeusing namespace std;const int maxn = 500+1;int d1[maxn][maxn];int d2[maxn][max... 阅读全文
posted @ 2015-07-19 11:25 陈瑞宇 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一堆牌,和一些洗牌机,可以改变牌的顺序,问你能不能通过洗牌机把数字为x的牌洗到第一个位置。题解:反向建边,dfs判断连通性#include#includeusing namespace std;const int maxn = 200000+4;int a[maxn];vector son... 阅读全文
posted @ 2015-07-19 09:53 陈瑞宇 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个函数和一些系数,给你一堆询问,求函数值。根据s的符号,分成两组讨论,函数值与比x小的系数数量有关,二分输出答案。#include#includeusing namespace std;const int maxn = 200000+1;int A[maxn];int B[maxn];i... 阅读全文
posted @ 2015-07-19 09:10 陈瑞宇 阅读(290) 评论(2) 推荐(0) 编辑
摘要: 题意:给n个元素,从n中选两个非空集合A和B。问有多少中选法?递推:dp[n]表示元素个数为n的方案数,对于新来的一个元素,要么加入集合,要么不加入集合自成一个集合。加入集合有三种选择,A,B,E(可空的集合),或者自成集合,作为A或B,然后在选一个n-1个元素的非空子集(2^n-1 - 1)。#i... 阅读全文
posted @ 2015-07-19 00:37 陈瑞宇 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 题意:给两个一样的只含有26个小写字母的字符串,然后两个分别做一下排列,问如果对应位置的字母相等那么就愉悦值就加一,问愉悦值的期望是多少?题解:只考虑两个序列相对的位置,那么就相当于固定一个位置,另外一个序列做排列。对于一个字符,假设是a,然后a有Na个,那么a选第一个序列中a对应的位置,发生这个事... 阅读全文
posted @ 2015-07-19 00:00 陈瑞宇 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 根据兔子试药情况可以缩小范围,如果死了,不在试过的药里面,如果活着,在试过的药里。最糟的情况: 两个原则 1.能确定魔药所在的范围的尽量大,2.死得兔子尽量多。如果当前不知道情况的药n为k的二倍以上,那么基于上面两个原则,试过药的兔子肯定会死。没死:范围k,损失的兔子0死了:范围n-k,损失的兔... 阅读全文
posted @ 2015-07-18 21:18 陈瑞宇 阅读(379) 评论(2) 推荐(0) 编辑
摘要: 题目背景是以前用来对网页进行排名的Page Rank算法,是早期Google的革命性发明。背后的原理是矩阵和图论。这个数学模型是由Google的创始人拉里·佩奇和谢尔盖·布林发现的。如果一个网页被很多网页链接那么它的排名就高,当然不同的网页应该用不同的权值加以区分,一个网页的排名来自指向它的网页权值... 阅读全文
posted @ 2015-07-18 11:23 陈瑞宇 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题意:移动一个矩形,使矩形内包含的点尽量多。思路:把一个点拆成两个事件,一个进(权值为1)一个出(权值为-1),将所有点按照x排序,然后扫描,对于每个x,用一个滑窗计算一下最大值,再移动扫描线。树状数组可以实现。上面方法其实不是最优的,目前所知最优的办法是把一个矩形压缩成一个点,而一个点延伸为一条线... 阅读全文
posted @ 2015-07-18 00:03 陈瑞宇 阅读(392) 评论(0) 推荐(0) 编辑