
POJ
CHN_JZ
爆0 forever
展开
-
欧拉筛——线性筛素数和欧拉函数
欧拉筛(线性筛)ps:以下内容来自一个蒟蒻,如果有错误请各位大佬指出。 先来看下我以前用的埃氏筛法for (int i=2;i<=n;i++) if (!vis[i]){ for (int j=i+i;j<=n;j+=i) vis[j]=1; p[++p[0]]=i; }这种写法显然会将一个数挖去多次,效率显然不是线性的,有dalao指出是O(nlog2n)O(nlog^2 n原创 2017-06-30 09:28:39 · 1706 阅读 · 1 评论 -
[模拟退火]POJ 2420——A Star not a Tree
题目描述给定n个点,求关于这个n个点的广义费马点。题目梗概必须折服于先人的智慧。初值随便给个位置,每次随机一个角度走温度的距离。概率函数为eΔ/Te^{Δ/T}。过了之后感觉非常神奇。#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;const int maxn=105;const double coe=原创 2017-11-28 21:08:20 · 781 阅读 · 0 评论 -
[KMP]POJ 3416——Oulipo
题目传送门 又水blog了,对,我不解释了 这题就是裸的KMP求方案数#include<cstdio>#include<cstring>using namespace std;const int maxn=1000005;int t,n,m,ans,fail[maxn];char a[maxn],b[maxn];void work(){ int j=0; for (i原创 2017-08-02 12:06:31 · 444 阅读 · 0 评论 -
[2-sat]POJ 3683——Priest John's Busiest Day
题目传送门题目概述安排n个婚礼是这n个婚礼没有时间相交。 每个婚礼有2个安排时间段。解题思路不难看出这题是一道求2-sat任意解问题。 如果时间段i,ji,j相交,则有i−>j′i->j'j−>i′j->i' 如果看不懂上面这句话点这里接下来用tarjan缩点是毋庸置疑的,因为如果你选择了ii则所有与ii处在同一环上的点都要被选择。接下来就是如何求答案的问题。 网上有介绍刷拓扑然后染色。原创 2017-07-04 22:17:05 · 902 阅读 · 2 评论 -
[bitset] POJ 2443——Set Operation
题目传送门博主又来水blog啦 博主上一篇blog好像有提到这个bitset,其实那是博主并不是很懂,所以向Matchperson学习了这个操作。题目概述给定nn个集合。 在提出QQ个询问,询问x,yx,y在nn个集合中出现的集合有交集。解题思路读入的时候标记一下,然后并起来判断有没有1。 所以就可以bitset乱搞。 bitset大法好啊。#include<cstdio>#include原创 2017-07-07 08:43:15 · 694 阅读 · 1 评论 -
矩阵乘法总结
矩阵乘法矩阵乘法是用于优化一些递推式的方法。定义两个矩阵的乘法当且仅当第一个矩阵A的列数和第二个矩阵B的行数相等下才有定义。 假设A是n×mn\times m 的矩阵,B是m×pm\times p 的矩阵,那么他们的乘积C一定是一个n×pn\times p 的矩阵。其中C任意的一个元素值为:ci,j=ai,1b1,j+ai,2b2,j+ai,3b3,j+...+ai,mbm,j=∑r=1mai,原创 2017-06-14 20:44:21 · 2268 阅读 · 1 评论 -
[差分约束]POJ 1201——Intervals
题目梗概给定n个要求,在[ai,bi]的区间里必须要有ci个数。 求最少需要的数字个数。解题思路构造前缀和s[i]。题目要求为s[bi]-s[ai-1]>=ci,马上联想到差分约束。 构造ai-1->bi的边边权为ci。 因为要求答案最小,显然要刷最长路。 不要忽略题目中内在的条件,s[i+1]-s[i]<=1 —> s[i]-s[i+1]>=-1,s[i+1]-s[i]>=0。 因为原创 2017-07-11 14:10:27 · 551 阅读 · 0 评论 -
[差分约束]POJ 3159——Candies
题目概述有nn个数,给定mm个约束条件,类似xi−xj<=kxi-xj<=k。 使最大差值最大。解题思路不难看出这是一道差分约束的问题。 因为要使最大差值最大,所以先给任意一个值0,其他数给INFINF,刷最短路。 但是zzkdalaozzkdalao告诉我POJPOJ这题卡SpfaSpfa的,于是我写了Dij+heapDij+heap。#include<cstdio>#include<cs原创 2017-07-11 10:49:20 · 616 阅读 · 0 评论 -
POJ1845——等比数列的分治思想
Sumdiv 描述 Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901). 题意 给定a,b求a,b的因子和 方法 将a进行质因子分解,变为p原创 2017-02-16 22:30:04 · 692 阅读 · 0 评论 -
POJ2274——The Race
The Race描述 During the Annual Interstellar Competition for Tuned Spaceships, N spaceships will be competing. Each spaceship i is tuned in such a way that it can accelerate in zero time to its maximum s原创 2017-03-02 18:26:13 · 818 阅读 · 0 评论 -
Poj 1741——treap的启发式合并
TreeDescription Give a tree with n vertices,each edge has a length(positive integer less than 1001). Define dist(u,v)=The min distance between node u and v. Give an integer k,for every pair (u,v)原创 2017-03-10 18:47:35 · 1282 阅读 · 2 评论 -
主席树——总(mu)结(ban)
以poj2104为例。 主席树就是可持久化线段树,也叫作函数式线段树,然后。。。 该干嘛干嘛,贴代码 我们先考虑每次询问都是对于1~n,我们肯定会想到离散数字,然后建一个线段树,然后寻找。 如果我们能对每个前缀【1~i】(1<=i<=n)都能建一颗线段树,那么遍历的时候不断a[R]-a[L-1]不就好了。 然后主席树就可以做到。为什么呢?因为你会发现相邻的两颗线段树有很多节点是重复的,共用原创 2017-05-01 21:14:33 · 525 阅读 · 0 评论 -
POJ 2449 Remmarguts' Date——A*
解题思路本题的题目题目要求就是求给定图的K短路。 在此之前,我只可以求解最短路问题,而学了A*之后就可以求解这一类问题。A*的概念A*是一种广泛用于寻路的算法。之所以其能运用广泛是因为A*效率极高。主要思想就是通过当前最小成本(最小距离或时间)来解决方案。A*的实现过程A*有点类似于spfa,但是A*选择最短的路径是通过函数f(n)=g(n)+h(n)f(n)=g(n)+h(n),其中g(n)是起原创 2017-05-21 21:08:55 · 555 阅读 · 0 评论 -
[威佐夫博奕]POJ 1067——取石子游戏
题目描述有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。解题思路裸的威佐夫博奕。#include<cmath>#include<cstdio>#inc原创 2017-12-20 20:45:14 · 1619 阅读 · 0 评论