sicily 1063. Who's the Boss 排序+递推】的更多相关文章

#include <cstdio> #include <algorithm> using namespace std; struct Emp{ int id, salary, height, boss, sub; Emp(, , , , ) : id(i), salary(s), height(h), boss(b), sub(sb) {} } emp[]; bool cmp(Emp a, Emp b) { return a.salary < b.salary; } int…
Time Limit: 1sec    Memory Limit:32MB  Description Several surveys indicate that the taller you are, the higher you can climb the corporate ladder. At TALL Enterprises Inc. this "de facto standard" has been properly formalized: your boss is alwa…
题目大意: 给定一个DAG,求起点到终点的路径长度期望 根据题意可以知道每一条边都有一定概率被走到 那么\(\displaystyle\begin{aligned} Ans = \sum_{e \in E} f_ew_e\end{aligned}\),其中\(E\)是边的集合,\(f_e\)是经过边\(e\)的期望次数,\(w_e\)是边\(e\)的边权 这样我们只需要求经过每一条边的期望次数 对于每一条边,经过这条边的期望次数就是经过这条边起点的期望次数除以这条边起点的出度 这样我们就只需要求…
递推型DP 将每个滑雪点都看作起点,从最低点开始逐个由四周递推出到达此点的最长路径的长度,由该点记下. 理论上,也可以将每一点都看作终点,由最高点开始计数,有兴趣可以试试. //经典DP-由高向低海拔滑雪-求最长路 //Memory:372K Time:16 Ms #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #de…
已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母的数量是一样的(比如:AABAC 和BCAAA)则为一类单词,每个单词长度不大于100,问这些单词可以分为几类? 样例:输入:3  AABCA AAABC BBCAA    输出:2 题解: 每次都在第一题是字符串的时候卡住,这次又卡了一个多小时..一般思路,就是枚举查找,排序,然后一个一个的比较,但是只…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35431 [思路] 置换+递推 将一个排列看作一个置换,分解为k个循环,则最少需要n-k次交换(循环内部交换)即可排序. 设f[i][j]表示将i个数至少交换j次排序完成的方案数,则有转移方程: f[i][j] = f[i-1][j]+(i-1)*f[i-1][j-1] 分别表示独立成为一个循环与加入前i-1个循环. [代码] #include<cstdio> #…
题目链接: https://vjudge.net/problem/POJ-3421 题目大意: 给你一个数X,将X分解成1~X的因子数列,前一个数可以整数后一个数,求满足条件的最大链长以及有多少条这样长的链. 思路一: 自己的解答: 首先求出所有的因子,排序,然后定义一个length数组和tot数组,length[i]表示从第i个因子到最后一个因子的最大链长,tot[i]表示第i个因子到最后一个因子的最大链长的种类,要求length[0]和tot[0] 已知length[last] = 0,to…
BZOJ_1925_[Sdoi2010]地精部落_递推 Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N 之间的正 整数. 如果一段山脉比所有与它相邻的山脉都高,则这段山脉是一个山峰.位于边 缘的山脉只有一段相邻的山脉,其他都有两段(即左边和右边). 类似地,如果一段山脉比所有它相邻的山脉都低,则这段山脉是一个山谷. 地精们有一个…
Description A well known algorithm called heapsort is a deterministic sorting algorithm taking O(n log n) time and O(1) additional memory. Let us describe ascending sorting of an array of different integer numbers.  The algorithm consists of two phas…
有明显的递推关系: f[i]表示i为数列中最大值时所求结果.num[i]表示数i在数列中出现了几次. 对于数i,要么删i,要么删i-1,只有这两种情况,且子问题还是一样的思路.那么很显然递推一下就行了:f[i]=max(f[i-1],f[i-2]+i*num[i]); 这里技巧在于:为了防止麻烦,干脆就所有数的出现次数都记录一下,然后直接从2推到100000(类似于下标排序),就不用排序了,也不用模拟删除操作了.这一技巧貌似简单,但实际上临场想出来也需要点水平. #include<iostrea…