51Nod 1080】的更多相关文章

1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照i的递增序输出.   例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种) Input 一个数N(1 <= N <= 10^9) Output 共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i…
1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照i的递增序输出. 例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种) Input 一个数N(1 <= N <= 10^9) Output 共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i &…
没心情写数学题啦啊   好难啊 #include<bits/stdc++.h> using namespace std; set<int> s; set<int>::iterator it; int main () { s.clear(); ;i*i<=1e9;i++) s.insert(i*i); int n; scanf("%d",&n); ; ;i*i<=n/;i++) { int t = n-i*i; if(s.find(…
#include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 1000000 #define MOD 10 int main() { int n; while(~scanf("%d",&n)) { ,j; ;i<=n;i++){ j=sqrt(n-i*i); if(j*j=…
给出一个整数N,将N表示为2个整数i与j的平方之和(i <= j),如果有多种表示,按照i的递增序输出. 例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2(注:3^2 + 11^2同11^2 + 3^2算1种)   输入 一个数N(1 <= N <= 10^9) 输出 共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j). 如果无法分解为2个数的平方和,则输出No Solution 输入样例 130 输出样例 3…
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这段区间的和. 比如说线段树1号节点表示[1,5]区间,它的值是13,也就是原数组1号位到5号位所有数字加起来的和. 不难发现线段树的下标有这样的性质: 1. 设一个节点的下号是o,那么它的左子树是o*2,右子树是o*2+1. 2. 线段树的大小是原数组的大小*2-1. 3. 线段树叶节点表示区间的长…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 用杜教筛求积性函数\(f(n)\)的前缀和\(S(n)=\sum\limits_{i=1}^nf(i)\),需要构造一个\(g(n)\)使得\(\sum\limits_{d|n}f(d)g(\frac nd)\)和\(\sum\limits_{i=1}^ng(i)\)都可以快速求出.因为我们有公式…
51Nod  1268  和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使他们的和为K.如果可以,输出:"Yes",否则输出"No". Input 第1行:2个数N, K, N为数组的长度, K为需要判断的和(2 <= N <= 20,1 <= K <= 10^9) 第2 - N + 1行:每行1个数,对应数组的元素A…
51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活动安排问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?  Input 第一行一个正整数n (n <= 10000)代表活动的个数.…
51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} {2, 3} {2…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间复杂度\(O(n+m)\). #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int N = 500003; in…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const ll p = 1000000007; int main() { ll A, B, C; scanf(&qu…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. 只要枚举一个数的倍数暴力判断就可以了,时间复杂度\(O(alna),a=10^6\) #include<cstdio> #include<cstring> #include<algorithm> using namespace std; bool vis[1000003];…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1674 对区间分治,统计\([l,r]\)中经过mid的区间的答案. 我的做法是从mid向右扫到r,统计出所有\([mid,i],mid\leq i \leq r\)的and和or值. 然后发现这些and和or值有很多相同的,把相同的压在一起并记录sum,再从mid-1扫到l并暴力从mid向右统计答案. 事实上因为\([mid,i],mid\leq i \leq r\)是…
先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假设有3步,那整个分布范围相当于一个立体几何图形,上界b和下界a可当成一个x+y+z=a或b的平面看待,算出x<=X1 x>=-X1 y<=X2 y>=-X2 z<=X3 z>=-X3 发现体积就是f(x1,x2,x3)+f(-x1,-x2,x3)+f(-x1,x2,-x3)…
题目链接:51nod 1181 质数中的质数(质数筛法) #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ; ]; void getPrime(){ memset(prime, , sizeof(prime)); ;i <= N; i++){ if(!prime[i]) pr…
题目链接:51nod 1174 1174 区间中最大的数 ST(Sparse Table)算法学习参考博客:http://blog.csdn.net/niushuai666/article/details/6624672 O(nlogn)预处理,O(1)查询 #include<cstdio> #include<algorithm> #include<cmath> using namespace std; ; ]; int a[N]; int n; void RMQ_in…
题目链接:https://www.51nod.com/contest/problem.html#!problemId=1622 第一次参加算法马拉松,我就是去看大神们疯狂秒题,然后感受绝望的orz.. 题解: 设M = P xor A,则 M∈A,M是P的补集,M与P一一对应. 设N = Q xor B,则 N∈B,N是B的补集,N与B一一对应. 所以(P xor A)xor(Q xor B) = M xor N = A xor B 即求有多少对(M,N),M∈A,N∈B,满足上式. 因为属于A…
题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积性函数前缀和的方法,学习参考博客:http://blog.csdn.net/skywalkert/article/details/50500009  要好好看大神的博客哦orz 用筛法预处理前N^(2/3)项,后面的记忆化搜索解决. 不太会用哈希,就用map记忆化一下: #include<cstdi…
题目链接:51nod 1240 莫比乌斯函数 莫比乌斯函数学习参考博客:http://www.cnblogs.com/Milkor/p/4464515.html #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; int miu(int n){ int i, cnt; ;//质因子个数…
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ; ; int n, m; struct Mat{//矩阵 ll mat[N][N]; }; Mat operator * (Mat a, Mat b){//一次矩阵乘法…
#1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产. 在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政府有关部门针对房价的硬性调控.房价的变化自然影响到小Hi和小Ho的决策,所以他们希望能够知道任意时刻某个街道中所有房屋的房价总和是多少——但是很不幸的,游戏本身并不提供这样的计算.不过这难…
最近偶尔发现一个算法编程学习的论坛,刚开始有点好奇,也只是注册了一下.最近有时间好好研究了一下,的确非常赞,所以推荐给大家.功能和介绍看下面介绍吧.首页的标题很给劲,很纯粹的Coding社区....虽然目前人气可能一般,但这里面题目和资源还是比较丰富的,希望给初学者一个帮助. 本文原文地址:[推荐]一个算法编程学习中文社区-51NOD[算法分级,支持多语言,可在线编译] 1.51NOD论坛介绍 该论坛网址:http://www.51nod.com/index.html 论坛主要是进行算法学习和交…
用优先队列来贪心,是一个很好地想法.优先队列在很多时候可以维护最值,同时可以考虑到一些其他情况. http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1163 #include<queue> #include<stack> #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n比较大,所以用快速幂来解决,又有/2的操作,所以可以用费马小定理取逆元. #include<map> #include<queue> #include<stack> #include<cmath> #include<cstdio> #include&…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 对于普通的数组,只要求一次最大子段和即可.但是这题是可以循环的,所以要另外分析. 1:最大的值在原数组中间部分. 2:最大值是结尾部分和开头部分.(如果要循环,就是这种情况) 对于1情况可以做一次最大子段和.而第二种情况出现时因为,中间部分很小,加了后最后的值会变小,所以不能加,也就是说中间部分的 值取反后,是最大的.这样就可以先进行对原数组的值取反,然后求一次最…
1616 最小集合 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 A君有一个集合. 这个集合有个神奇的性质. 若X,Y属于该集合,那么X与Y的最大公因数也属于该集合. 但是他忘了这个集合中原先有哪些数字. 不过幸运的是,他记起了其中n个数字. 当然,或许会因为过度紧张,他记起来的数字可能会重复. 他想还原原先的集合. 他知道这是不可能的…… 现在他想知道的是,原先这个集合中至少存在多少数. 样例解释: 该集合中一定存在的是{1,2,3,4,6…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAAJVCAIAAACTf+6jAAAgAElEQVR4nO3dO1Lj3NbG8W8Szj0QYg2kKSVkjKATJSYi74QqjYCALlLlb0BVJ5A5IzxD0Bfoti9r7Yssbxv4/6rrnBdb1l3aj5a27P/rAQAASvm/S88AAAD4QUgeAACgHJIHAAAoh+QBAADKIXkAAIBySB4AAKAckgcAACiH5AEAAMoheQAAgHJIH…
链接:http://codevs.cn/problem/1080/ 先用树状数组水一发,再用线段树水一发 树状数组代码:84ms #include<cstdio> #include<iostream> #include<algorithm> #include<math.h> #include<string.h> #include<vector> #include<queue> #include<iterator>…
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051 1051 最大子矩阵和 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题   一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值.   例如:3*3的矩阵:   -1 3 -1 2 -1 3 -3 1 2   和最大的子矩阵是:   3 -1 -1 3 1 2 Input 第1行…