自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 【解题报告】LightOJ1245-Harmonic Number (II)

可以打表找规律,也可以画图理解,但我还是不会(菜简单来说就是,要把n的复杂度降到sqrt(n)然后前1~sqrt(n)可以暴力,后边的对于数i 有n/i-n/(i+1)个所以最后结果就变成了n/i+i*(n/i-n/(i+1)) i从1~sqrt(n)但对于i=sqrt(n)时,如果n/i==i的话这个会算两次所以AC代码:// An highlighted blockvar foo = 'bar';...

2020-06-30 23:14:42 54

原创 【解题报告】LightOJ1259-Goldbach`s Conjecture 素数筛

很容易就能想到做法,但是被卡空间完被卡时间qaq首先埃氏筛一下,这时候v数组可以开bool,不开好像会被卡,然后prime数组也需要开小点,这里开1e6就够,空间上差不多就是这样时间上,最开始是想着从2遍历到n/2,一个个判断是不是质数,结果T;之后想到直接从素数表遍历就可以了,之后ACAC代码:#include <bits/stdc++.h>using namespace std;const int maxn=10000005;bool v[maxn];//v[i]:第i个数的最

2020-06-30 21:33:29 61

原创 【解题报告】LightOJ1282-Leading and Trailing 数学技巧

这道题分成两部分,后半部分快速幂唯一要注意的是有可能不足3位,要补0前半部分如下:首先我们需要知道:给定一个数n,这个数可以写成10w的形式,且一般w有整数部分和小数部分。我们这里设w=x+y,整数部分加小数部分,且可知10w=10x*10y,同时10x对n只提供小数点的移动,所以数值部分其实是有10y来决定的。因此我们只需要求出10y,且可知这个数是[1,10)的,所以最后答案即为100·10y且w=klog10(n),y为w的小数部分,从而可以得出答案AC代码:#include <bi

2020-06-30 17:39:46 106

原创 【解题报告】LightOJ1336-Sigma Function

看了题解,发现数学题是真不会做。sigma函数为奇数时,所有项都必须是奇数基础思路是n-所有项均为奇数的数的个数首先可以发现当p=2的时候可以得到那项必为奇数然后又发现当c为偶数时,该项必为奇数所以我们可以得到p12k1…pm2km的所有项为奇数,该数得到的sigma值也为奇数即(…)2为奇数,即所有的平方数得到的sigma值为奇数这些数有多少呢?就是sqrt(n)个因为ii<=n然后我们可以发现,对于这些平方数,乘个2就可以得到剩下的sigma值为奇数的项。因为乘两个2得到的就也是

2020-06-30 16:27:44 86

原创 【解题报告】LightOJ1341-Aladdin and the Flying Carpet 正约数的个数和

求正约数的个数和,除以2就是有多少对正约数。然后把约数<b的约数对删去,留下来的个数就是答案。先线性筛打素数表,然后质因数分解。不能每个测试样例都进行一次独立的质因数分解,不然当场T。然后感觉复杂度似乎有点问题,但是能过。AC代码:#include <bits/stdc++.h>using namespace std;const int maxn=1000055;typedef long long LL;int v[maxn];//v[i]:第i个数的最小质因子 int

2020-06-30 16:15:05 100

原创 【解题报告】LightOJ1370-Bi-shoe and Phi-shoe 欧拉函数

刚学数论,很多都不熟。所以这道欧拉函数的题也是看了下题解才会。(主要是要知道O(n)的把所有数的欧拉函数都求出来)const int maxn=1000005;int ela[maxn]; int get_phi(){ for(int i=1;i<maxn;i++) ela[i]=i; for(int i=2;i<maxn;i++){ if(ela[i]==i){ ela[i]=i-1; for(int j=2;j*i<maxn;j++) ela[j*i

2020-06-30 02:18:07 74

原创 【学习笔记】质数、约数、同余等基础性质和一些板子

质数:反素数,见上篇。素数筛:(给N,求1~N之间的所有质数)埃氏筛:O(nloglogn)vector<int> prime;//存储2~N的所有素数 int v[maxn];//合数标记 void find_primes(int n){ memset(v,0,sizeof(v)); for(int i=2;i<=n;i++){ if(v[i]) continue; prime.push_back(i); //优化:从x^2开始,(x+1)*x...到N/x

2020-06-30 00:48:43 322 1

原创 【学习笔记】反素数

反素数的几个定理:1、1-N中最大的反素数,就是1-N中约数个数最多的数中最小的一个2、1-N中任何数的不同质因子都不会超过10个,且所有的质因子的指数总数不超过30(最小的11个质数的乘积>2e9, 2^31>2e9)3、x为反质数的必要条件为:分解质因数后可以写作pow(2,c1)…pow(29,c10).且c1>=c2>=c3…>=c10>=0这块直接整个求反素数的板子吧(bzoj1503)参考:链接: link.#include <bits/s

2020-06-29 17:43:04 151

原创 【学习笔记】并查集小总结

最近在刷kuangbin,然后就把每个刷了的题都记录下思路,以后也会继续记录。然后主要说下这几天做各种并查集的感受吧。其实并查集主要用于解决那些题目告诉你两个元素之间的关系,同时这些关系有传递性,你就可以使用并查集来判断各种关系。优点是码量很小,但是要能看出来可以用并查集来解决,我觉得这是更为重要的吧。...

2020-06-29 02:19:22 46

原创 【解题报告】POJ1308-Is It A Tree? 并查集

没啥说的,记得特判空树AC代码:#include <iostream>#include <cstring>#include <set>using namespace std;const int maxn=1000005;int f[maxn],vis[maxn];void init(){ for(int i=1;i<maxn;i++) f[i]=i; memset(vis,0,sizeof(vis));}int find(int k){

2020-06-29 02:14:28 77

原创 【解题报告】POJ2912-Rochambeau 带权并查集

一看题目规模不大,发现就可以枚举裁判,如果这个人是裁判,那么往并查集加东西的时候不会出现矛盾,否则就会出现矛盾。接下来就产生了三个情况。1、裁判数为0:输出Impossible2、裁判数大于1:输出Can not determine3、裁判数等于1:说明此时可以判断裁判是谁了。然后问题就变成了求唯一确定裁判的最小轮次数。因为仅在裁判数等于1的时候,我们会用到这个最小轮次数,且我们知道尽当最后一个矛盾被发现的时候我们才能确定这个才是唯一的裁判,所以我们就可以再枚举的时候直接维护矛盾产生的最大轮次数,

2020-06-28 21:29:38 134

原创 【解题报告】POJ1984-Navigation Nightmare 带权并查集

这道就是跟之前很类似的一个带权并查集,只不过要同时维护两个关系;其次只需要先把询问按index排序,求完答案再按原序排回来就行。但是写的时候莫名其妙T了,感觉上复杂度改前改后没区别啊,然而就是T。具体位置在注释处。AC代码:#include <cstdio>#include <algorithm>using namespace std;const int maxn=40005;int from[maxn],to[maxn],dis[maxn],forward[maxn]

2020-06-26 21:18:41 113

原创 【解题报告】POJ1733-Parity game 并查集+离散化

首先看这道题数据到1e9,但是实际上就1e4的数据,所以要离散化一下,接下来就是比较简单的带权并查集。但是有一点要注意下就是,简单离散化以后还是不太行。比如你有:[1,2],[3,4],[5,6],查[1,6]的时候此时并查集对于1,6还是没有关系的,所以这里选择用左闭右开区间[1,3),[3,5),[5,7),查的时候就是查[1,7),此时就可以正确查找。(这个好像有个线段树的题也是这样子做的,但忘了是哪道题了)过几天专门总结下离散化(想起来就去AC代码:#include <iostrea

2020-06-26 16:28:43 97

原创 【解题报告】POJ1417-Supermarket 并查集+贪心

一开始以为就是简单的贪心,先d增序排序,d相同的用p降序排序。然后发现不是说一定要在截止时间完成,比如有些利润很高的同时在同一截止时间有更高利润的,这样简单贪心就不能吧这些利润第二第三高的往前排。所以贪心策略就变成了选利润最高的,然后用并查集来辅助记录哪些天被占用,哪些天空闲,这样就可以来判断该项目可不可以接,能接就接,放到最后一个空闲的天里。AC代码:#include <iostream>#include <algorithm>#include <cstdio&gt

2020-06-26 12:59:04 95

原创 【解题报告】POJ1417-True Liars 带权并查集+DP

这道题首先是很自然的把有关系的元素用并查集合并,同时维护他们的关系。然后这道题的重点是要通过各元素的关系看能否推断出哪些是天使,哪些是恶魔。在并查集做好的基础上,我们有了x个集合,可以写出状态dp(i,j)为对于前i个集合有j个天使的可能的情况总数。所以最终dp(x,p1)==1即是有解,否则输出no。然后对于有解情况,还需要找到天使的序号,就从最终状态回溯一下dp(i-1,当前天使数-该集合与祖先同类数)==1,则去这个状态,同时此时天使是该集合与祖先同类的所有元素;否则去dp(i-1,当前天使数

2020-06-26 03:25:45 174

原创 【解题报告】POJ1182-食物链 带权并查集

写这篇博客的目的主要是让自己回忆下并查集,然后以后忘了再看。带权并查集主要针对元素之间的关系可量化,且A,C之间关系可由A,B和B,C关系推出时(即可以合并),来维护元素之间的关系的数据结构。相较于并查集来说,增加了relation数组来描述x和x祖先之间的关系。同时find操作和join操作会发生一定的变化,由于要维护relation。对于如何维护可以用向量加减的方法来进行考虑,具体的很多博客上都有。POJ1182这个题就是可以用带权并查集来维护个体之间捕食关系,并支持查询工作。x和y的关系可

2020-06-25 13:34:14 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除