10 2016 档案
摘要:题目链接:51nod 1305 Pairwise Sum and Divide 看完题我想都没想就直接暴力做了,AC后突然就反应过来了。。。 Floor( (a+b)/(a*b) )=Floor( (1/b)+(1/a) ) 当a=1时:若b=1,则该式等于2,否则该式等于1 当a=b=2时:该式等
阅读全文
摘要:题目链接:https://www.51nod.com/contest/problem.html#!problemId=1622 题解: 设M = P xor A,则 M∈A,M是P的补集,M与P一一对应。 设N = Q xor B,则 N∈B,N是B的补集,N与B一一对应。 所以(P xor A)x
阅读全文
摘要:题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:(a,b,c)=(a×b)·c= |ax ay az| |bx by bz| = ax*by*cz+a
阅读全文
摘要:题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积性函数前缀和的方法,学习参考博客:http://blog.csdn.net/skywalkert/a
阅读全文
摘要:题目链接:51nod 1240 莫比乌斯函数 莫比乌斯函数学习参考博客:http://www.cnblogs.com/Milkor/p/4464515.html 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<a
阅读全文
摘要:题目链接:51nod 1113 矩阵快速幂 模板题,学习下。 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef long lo
阅读全文
摘要:题目链接:51nod 1264 线段相交 如果两条线段相交,则需满足一条线段的一个端点在另一条线段上,或者 两条线段都分别跨越另一条线段延伸的直线上。(如果点p1位于直线p3p4的一边,而点p2位于该直线的另一边,则称p1p2跨越了这条直线p3p4。) 可以用叉乘来判断p3p1、p3p2是否在p3p
阅读全文
摘要:题目链接:51nod 1412 AVL树的种类 开始做的时候把深度开得过小了结果一直WA,是我天真了。。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 using namespace
阅读全文
摘要:题目链接:51nod 1163 最高的奖励 看着这题我立马就想到昨天也做了一道贪心加优先队列的题了奥。 按任务最晚结束时间从小到大排序,依次选择任务,如果该任务最晚结束时间比当前时间点晚,则将该任务的奖励值压入队列,否则将队列中最小的任务的奖励值替换,优先队列按奖励值小的优先。 1 #include
阅读全文
摘要:题目链接:codeforces 725D . Contest Balloons 先按气球数从大到小排序求出初始名次,并把名次排在第一队前面的队放入优先队列,按w-t-1值从小到大优先,然后依次给气球给排名在前面的的队,给完后自己的气球数减少,继续跟之前排在第一队后面的队比较,考虑是否加入队列,每次记
阅读全文
摘要:题目链接:51nod 1135 原根 设 m 是正整数,a是整数,若a模m的阶等于φ(m),则称 a 为 模m的一个原根。(其中φ(m)表示m的欧拉函数) 阶:gcd(a,m)=1,使得成立的最小的 r,称为 a 对 模m 的 阶。 φ(m):在[1,m)的区间内与m互质的数的个数。 求模素数p的原
阅读全文
摘要:题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是‘Y’,说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面‘Y’的数量。 最后,求 0到n-1的最短路。 感觉读懂了题意就真的简单了。。 1 #include<cstdio> 2 #incl
阅读全文
摘要:题目链接:51nod 1134 最长递增子序列 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N = 50001; 6 int a[N]; 7 int b
阅读全文
摘要:题目链接:51nod 1183 编辑距离 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N = 1001; 6 char a[N], b[N]; 7 in
阅读全文
摘要:题目链接:51nod 1459 迷宫游戏 dij裸题。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #define CLR(a,b) memse
阅读全文
摘要:题目链接:51nod 1027大数乘法 直接模板了。 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N = 1001; 5 const int DLEN = 4; 6 const int mod =
阅读全文
摘要:题目链接:51nod 1057 N的阶乘 1 #include<cstdio> 2 using namespace std; 3 typedef long long ll; 4 const int N = 10000; 5 const int mod = 1e8; 6 ll a[N] = {1};
阅读全文
摘要:题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的。。我用优化过的dij狂交一直TLE,最后还是死在四百多毫秒上,应该是姿势不对orz。后来看别人用s
阅读全文
摘要:题目链接:51nod 1158 全是1的最大子矩阵 题目分类是单调栈,我这里直接用与解最大子矩阵类似的办法水过了。。。 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #define C
阅读全文
摘要:dp[i][0]:以i为根,不包括 i 结点的子树最大权 dp[i][1]:以i为根,包括 i 结点的子树的最大权 dp[i][0] = max(dp[j][0] , dp[j][1]) (j 为 i 的儿子) dp[i][1] += dp[j][1] (dp[j][1] > 0,j 为 i 的儿子
阅读全文
摘要:题目链接:51nod 1051 最大子矩阵和 实质是把最大子段和扩展到二维。读题注意m,n。。。 1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #include<algorithm> 5 #define CLR(a,b) me
阅读全文
摘要:题目链接:codeforces723 D. Lakes in Berland 参考博客:http://www.cnblogs.com/Geek-xiyang/p/5930245.html 1 #include<cstdio> 2 #include<cstring> 3 #include<vector
阅读全文
摘要:题目链接:51nod 1065 最小正子段和 房教说用前缀和做,然后看了别人博客懂了后就感觉,这个真有意思... 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const i
阅读全文
摘要:题目链接:poj1122 FDNY to the Rescue! 题意:给出矩阵,矩阵中每个元素tij表示从第i个交叉路口到第j个交叉路口所需时间,若tij为-1则表示两交叉路口之间没有直接路径,再给出火警位置所在的交叉路口 和 一个或多个消防站所处的交叉路口位置。输出要求按消防站到火警位置所需时间
阅读全文
摘要:题目链接:51nod 1050 循环数组最大子段和 1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 const int N = 50001; 5 long long a[N]; 6 int main(){ 7 in
阅读全文
摘要:题目链接:hdu4781 Assignment For Princess 题意:n个点m条边,每条有向边的权值分别是1,2,3…m,一个点能到达任意一个点,没有重边和自环,没有任何两条边的权值相同,任意一个有向环的权值和必须是3的倍数,现在需要把这个图输出来。 题解:注意到题目给出的范围m >= n
阅读全文
摘要:题目链接:51nod 1043 幸运号码 题解:dp[i][j]表示 i 个数和为 j 的总数(包含0开头情况) dp[i][j] = dp[i-1][j-k] i & 1 :这里用滚动数组节省内存 非0开头的情况 * 0开头的情况:(dp[n&1][i]-dp[(n-1)&1][i]) *dp[n
阅读全文
摘要:51nod 1021 石子归并 题解:从i到j合并的最小值:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); 最后dp[1][n]即为所求结果。 1 #include<cstdio> 2 #include<alg
阅读全文

浙公网安备 33010602011771号