上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 54 下一页
摘要: 首先考虑两个点的最优集合点,必然是在这两点间最短路径上三个点的最优集合点,不难猜测,是在两两之间的LCA上取,那到底取哪个呢?有一个偷懒的思维方法由于最后的最优集合点唯一,如果有两个LCA相等,则一定是另外一个当然事实也是这样选定了集合点之后,设选的是a,b的LCA,ab到集合点的距离在LCA中可以... 阅读全文
posted @ 2014-08-21 22:02 acphile 阅读(116) 评论(0) 推荐(0)
摘要: 显然如果只有一个窗口,是一道贪心的题目,直接让吃饭慢的排在前面即可两个窗口的话,我们还是根据这个原则先对吃饭时间降序排序,然后这是一个dp假如设当前处理到第i个人,当在窗口1的打饭时间确定了,窗口2的打饭时间也就知道了我们用f[i,j]表示到第i个人,窗口1的打饭时间为j时的最快集合时间然后dp搞一... 阅读全文
posted @ 2014-08-21 20:50 acphile 阅读(200) 评论(0) 推荐(0)
摘要: 这道题很有意思我们解过线性同余方程,也解过同余方程这个则是求x^2≡1 (mod p)可以将问题转化为(x-1)(x+1)≡0 (mod p)然后我们穷举一下p的约数i,看i|x-1,p/i|x+1 或者i|x+1, p/i|x-1是否可行解然后排序去重即可 1 var ans:array[0..1... 阅读全文
posted @ 2014-08-21 20:39 acphile 阅读(136) 评论(0) 推荐(0)
摘要: 都LCP了很显然是要用到后缀数组的显然前面的那个东西是可以直接算出来的关键在于LCP的和怎么快速的计算不难想到穷举height[i],然后判断这个height[i]可能成为多少对后缀的LCP考虑到LCP(i,j)=min(height[rank[i]+1~rank[j]]) 假定rank[i]k) ... 阅读全文
posted @ 2014-08-21 19:57 acphile 阅读(156) 评论(0) 推荐(0)
摘要: 表面上看这是一道LCS问题LCS问题O(n2)的复杂度已经很优秀了而这道题需要O(nlogn)以下的复杂度才能AC所以我们要找经典问题的特殊性特殊就在这两个串中,每个数字都是恰好出现5次不难想到先预处理每个数在B串依次出现的位置先扫一遍A串,对于每一个数a[i],设f[j]=LCS(i,j)显然这个... 阅读全文
posted @ 2014-08-21 15:27 acphile 阅读(120) 评论(0) 推荐(0)
摘要: 首先不难想到排序,这种无规律的东西一般都要转化为有规律才好做 首先以x为第一关键字,y为第二关键字升序排序 拍完序我们发现,若存在两块土地i,j x[i]<=x[j],y[i]<=y[j],那么土地i的购买一定可以忽略(因为价格是由x,y的乘积决定的) 剔除掉不需考虑的土地,不难发现剩下的土地x是升 阅读全文
posted @ 2014-08-21 15:13 acphile 阅读(137) 评论(0) 推荐(0)
摘要: 贪心尽可能让最强的赢,最弱的赢,都不行则最弱打最强感性的想,我肯定要尽可能的赢,而且赢的要对等实在不能赢就拿最小的拼,所谓的田忌赛马策略由于总分一定,己方最差即己方最好时对方的分数 1 type list=array[0..100010] of longint; 2 var a,b:list; 3 ... 阅读全文
posted @ 2014-08-13 21:57 acphile 阅读(129) 评论(0) 推荐(0)
摘要: 利用bzoj2705的结论我们很容易优化这道等价类计数的问题sum(n^gcd(i,n))/n mod p (10 do10 begin11 inc(j);12 b[j]:=x mod 2;13 x:=x shr 1;14 end;15 quick:=1;16 fo... 阅读全文
posted @ 2014-08-13 21:45 acphile 阅读(159) 评论(0) 推荐(0)
摘要: 一个常用的结论(方法)只要知道gcd(i,n)=L 的i的个数s,我们就能很轻易得出答案gcd(i,n)=Lgcd(i/L,n/L)=1 不难得到这样的s=与n/L互质的个数=phi(n/L)一个数的欧拉函数最坏情况是可以在O(sqrt(n))的复杂度中弄出来的我们可以穷举L,只要从1穷举到根号n即... 阅读全文
posted @ 2014-08-13 21:37 acphile 阅读(122) 评论(0) 推荐(0)
摘要: 题做多的话不难想到可能是以行列作为二分图两个点集,然后网络流相关具体怎么弄呢我们可以用求补集的思想,假设有解我们先把棋盘能放的地方放满士兵,然后我们尽量的把士兵拿走并且要满足行和列的要求,说到这方法就很明显了ans=n*m-障碍数-最大流我们用x[i]表示棋盘放满后第i行最多能移开的士兵数y[i]表... 阅读全文
posted @ 2014-08-13 21:31 acphile 阅读(143) 评论(0) 推荐(0)
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 54 下一页