摘要:
2015-01-1814:13:58思路:由于期末考,这道题拖了好久才补掉... BC题解说的很好了,参考下。数据规模比较大,直接暴力行不通。可以对不同的数字进行独立的处理。先对数据进行排序,然后把每一种数字有多少个统计一下。因为对于比当前小的数字是不影响当前数字是否被统计的。所以可以只考虑比当前数... 阅读全文
摘要:
2015-01-1320:19:25总结:刚好数据结构课让我们做排序的实验,我来总结一下各类排序算法~ 主要实现:(1)插入排序 (2)归并排序 (3)快速排序 (4)堆排序 (5)希尔排序 (冒泡,选择啥的路过辣...) 整理下各个算法的思路: (1)插入排序,这个按照最原始的扑克插入就很... 阅读全文
摘要:
2015-01-1222:17:45思路:精简的好题。 将两个排列的康托展开式的因子列出来,然后保存在数组中,相加的话满足大数加法+过程取模。这里因为数太多,所以需要用树状数组来维护比某个数小的数已经出现多少个。 具体过程就是从第一个数开始,看它比多少个未出现的数大(这个值存数组),处理完两个排... 阅读全文
摘要:
2015-01-1015:26:06神奇的C++0x 转载自CF Swift 的bloghttp://codeforces.com/blog/entry/15643C++ TricksBySwift,3 days ago,,Last Updated: January 9, Added a trick... 阅读全文
摘要:
2015-01-1015:06:21思路:很好的一道差分约束题,拥有灵活的建图。 由于题目求的是从起点(最矮的房子)到终点(最高的房子)的有向距离最大值,那么在建图以及跑最短路时要特别注意方向。 首先按照房子的读入顺序给房子编号为1~N,用结构体记录下房子的高度、编号,然后按照高度升序排序。 ... 阅读全文
摘要:
2015-01-0922:37:22思路:这道题的建图花了我好久..... 首先,考虑到起点选定的问题,我们将时刻都往后移动一个小时,变为1,2,3...24这样(于是就有了起点0) 然后就是根据约束关系建图了,见注释。 关键在于 i 2 #include 3 #include 4... 阅读全文
摘要:
2015-01-0822:48:00思路:巧妙的建图... 由: L (1) log(ai) (2) log(bj) 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #... 阅读全文
摘要:
2015-01-0801:06:22思路: 这题有两种思路。(1)第一种也是我一开始想的:拆点,将一个任务拆成开始的时间点和结束的时间点,让任务1拥有1,2点,任务2拥有3,4点,...以此类推第i个任务开始点:2*i-1,结束点:2*i 那么约束条件就变为:S(2*i) - S(2*i-1) ... 阅读全文
摘要:
2015-01-0721:18:11思路:差分约束水题?.....写了好久啊!(之前老不过...后来怒写了3个版本) 根据要求建图即可,跑最长路/最短路都行。由于图可能是不连通的,所以方法1:建立超级起点,与0~n所有点建立0权边。方法2:对有所点跑一遍最短路(可以初始把所有点放入队列。) 如果... 阅读全文
摘要:
2015-01-0700:40:57思路:差分约束题,用Si表示 i 距离第1个人的距离。根据条件:(1)约束一:S(b) - S(a) = c 因为要求最长可能距离,所以转化为求最短路。约束一化为:S(b) 2 #include 3 #include 4 #include 5 #incl... 阅读全文
摘要:
2015-01-0616:59:05思路:HDU/POJ上都有这题。 启蒙题。文库这篇文章讲得不错。 总的来说就是利用最短/长路中的距离三角不等式来建图。 S(i)表示1-i中在Z集合中的个数,那么首先有基本约束:1 >= S(i) - S(i -1) >= 0,再根据题目的输入:S(b) -... 阅读全文
摘要:
2015-01-0610:50:06思路:最短路简单题,首先跑一遍起点1到所有点的最短路,spfa。然后将所有边反向,再跑一遍,这样就求出了其余N-1个点到起点1的最短路。把所有距离加起来就是答案。 1 #include 2 #include 3 #include 4 #include 5 ... 阅读全文
摘要:
2015-01-04 16:54:53 以Hdu 2544 为测试平台,浅结回顾最短路各类算法。 First:Bellman-Ford(边权可为负,可找负圈,复杂度:O(V*E)) 思路回顾:如果不存在负圈,那么最短路不会经过一个点两次,那么最短路长度<= V-1,对全图进行V-1次松弛,每次松弛检 阅读全文
摘要:
2015-01-0414:19:46学习是螺旋性的,今天来复习一下最小生成树的prim和kruskal,及prim堆优化。采用 POJ 1258 作为测试平台。(题意:输入N,并输入N×N的点距离邻接矩阵,输入MST总长度)First:Prim(适合稠密图,复杂度:朴素:O(V*V);堆优化:O(E... 阅读全文
摘要:
2015-01-0312:34:02思路:这题是概率DP,公式不好推.....一定要细心。(晚上推到凌晨,早上起来再推终于过了.....I am so ruo!QAQ)(深深地感觉到自己的方法比网上的麻烦....) 用dp[i]表示当前计数器的值为 i ,还需要掷多少次(期望值)使得游戏结束,那么... 阅读全文
摘要:
2015-01-0222:16:19思路:简单的概率DP递推,要用矩阵来加速。 转移方程很简单:dp[i + 2] = P * dp[i + 1] + (1 - P) * dp[i] 转移矩阵: 0 1 dp(i) (1-P) P dp(i+1) 1 #include ... 阅读全文
摘要:
2015-01-0219:15:59思路:不难的概率DP,用记忆化写就非常方便了....(至于递推我想了好久没结果orz.....) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ... 阅读全文
摘要:
2015-01-0218:00:34思路:....怎么说呢 SGU难得的水题,直接递推吧。 dp[i]表示第i个人期望得到的prize,那么答案就是Sigma(dp[k]) (1 2 #include 3 #include 4 #include 5 #include 6 #include... 阅读全文
摘要:
2015-01-0217:25:15思路:比较入门的一道概率DP,其实一开始学就不太理解为什么算期望一定要逆推,做完这题稍有领悟。 首先要建立递推方程,找概率“1”,发现从自己出发的所有方式概率和就为1,那么就以自己建立方程: dp[i][j] = (dp[i][j + 1] + 2) * P(... 阅读全文
摘要:
2015-01-0112:08:34思路:嘛...其实这是一道数学题... 把图画一通就会发现:当前时间产生的新节点个数是前k个时间内产生的新节点的数量和,因为前k个时间内新产生的节点在当前时间仍能产生新节点(因有限制k) 那么就可以维护一个前缀和sum和当前新结点数val,val = sum[... 阅读全文