摘要:
最短路算法的复杂度考虑 书上已经做了优化,用的是优先队列;用优先队列实现堆优化 V为点集,E为边集 从O(V^2)优化到O(ElogV) 然后再记忆一下inf 0x3f3f3f3f的十进制是1061109567,是10^9级别的而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现 阅读全文
摘要:
#include #include using namespace std; const int maxk = 100; const int maxa = 63; unsigned long long d[maxk+1][maxa+1]; int main() { memset(d, 0, sizeof(d)); for(int i = 1; i > k >> n && k) { ... 阅读全文
摘要:
感觉这道题读题有点难。。似乎和现实联系的比较密切1.每个process的两个资源可以顺序反一下2.p->q,q->s不可以同时进行 p->q,p->s可以 输出最长等待链输出每个process的资源调用顺序 (注意按输入顺序输出,并不意味着按输入顺序先后执行,只是输出方便看) 把资源看成点,一个pr 阅读全文
摘要:
这道题思维很灵活。也有点套路的意思。 首先规定0,1分别按照原来的顺序接收,只是01换位。这样简化了思维。(否则并不会有更优结果它。,比较好想)最大值和最小值可以贪心得到。那么接下来就是给定一个整数P,判断能不能得到它。贪心法,从左到右判断P的每一位,从K中最左边的0或1取。这样会发现任意时刻k中已 阅读全文
摘要:
注意这题要求互相认识不认识的人之间连一条线一个人在组1,那么不认识(互相认识)的人就在组0;同时这些人不认识的人就在组1.每个联通分量都可以独立推导,遇到矛盾则无解一个联通分量有一个核心,其他的点是分支我感觉紫书写的样例又是有点问题,应该是4在0,那么135在1,反正则反;而不是1在0,345在1然 阅读全文
摘要:
fixing great wall 的变形dp(i,j,k,p)不考虑i-j的客人,还要送k个人,目前位置在p起点i和总数量k都要枚举dp(i,j,k,p)=max(dp(m,j,k-1,p)+valm,dp(i,d,k-1,p)+vald) 画一下图,就发现每个点罚时是当前k*abs【pi】 阅读全文
摘要:
常见思路枚举最后一个方块A【j】何时消除 对于dp(i,j,k)就两种决策:转移到dp(i,p-1,0)+(j-p+1+k)^2 枚举q<p,A【q】=A【j】,A【q】!=A【q+1】,转移到d(q+1,p-1,0)+dp(i,q,j-p+k) 阅读全文
摘要:
这道题超经典。dp和优化都值得看一看。因为i+1只和i有关,用滚动数组节省空间暑假第一次做感觉很困难,现在看就清晰了很多 阅读全文
摘要:
按紫书来注意这道题的题目给了很大的方便,就相当于验证k是不是答案,不是的话就是k+1 阅读全文
摘要:
我觉得这个题挺难的......首先这个题的结论 hp+kd我没有证明出来(范围肯定没有问题,根据数量少的时候和感觉就觉得是对的,但是没有严格的证明) dp[i][x]就是在dp[i-1][x-d x+d]中找一个最小值转移,再加上常数|h[i]-x|,这样就可以用优先队列来优化。虽然说是用单调队列来 阅读全文