自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风城

静能生慧,勤能补拙,天道酬勤

  • 博客(18)
  • 收藏
  • 关注

原创 Codeforce 346A. Alice and Bob

Codeforce346A这是一道数学脑洞题,题目的大意就是给定n个数,每一次都从这些数中选出两个数x,yx,y并将|x−y||x-y|添加进入集合中,问最后集合稳定时候需要多少步操作。(当然题目是用一个博弈的问题作为背景)在给定的样例中,我们发现,其实最后只要形成1,2,3……n1,2,3……n这样的一个序列最终的集合就稳定了,但是我们发现这是一种特殊的情况。 同样2,4,6……2n2,4,6…

2016-10-27 00:38:58 521

原创 POJ2187 Beauty Contest 水平序GrahamScan法

Beauty ContestTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 35550 Accepted: 11012DescriptionBessie, Farmer John's prize cow, has just won first place

2016-10-13 01:15:44 521

原创 数学进位制相关模版

快速加模版long long quickplus(long long m,long long n,long long k)//返回m*n%k{ long long b = 0; while (n > 0) { if (n & 1) b = (b+m)%k; n = n >> 1 ; m

2016-10-13 01:04:45 378

原创 POJ 1006 Biorhythms 手算孙子定理

POJ1006 题目给的mod数组是固定,直接手算吧 AC代码:#include <iostream>#include <cstdio>using namespace std;int main(){ //freopen("input.txt","r",stdin); int p,e,i,d,cnt=0; while(~scanf("%d%d%d%d",&p,&e,&

2016-10-11 22:28:44 629

原创 CodeForece 724C Ray Tracing 扩展欧几里得

题目链接 题目的大意就是一束从(0,0)发出的光线经过有限次反射从一个矩形区域射出,在该矩形区域内布置有若干个传感器,试问光线第一次经过该传感器所需要的时间。 1.可以用模拟直接去做,模拟光线的反射,最后把每一个传感器的最小时间记录下来。 2.光线的反射,可以通过对称最后把有限次反射变换成直线通过。所以首先把矩阵左右,上下进行对称,我们可以知道最后光线射出的点为(lcm(m,n),lcm(m,

2016-10-11 22:23:08 413

原创 FZU 1402 猪的安家 中国剩余定理

FZU1402 中国剩余定理的模版题,注意在CRT过程中及时取模,防止在 M=m[1]∗m[2]∗m[3]……M=m[1]*m[2]*m[3]……的过程中发生乘法的溢出AC代码:#include <iostream>#include <cstdio>#include <cstring>typedef __int64 int64;using namespace std;int64 b

2016-10-10 23:21:42 386

原创 poj 2142 The Balance 扩展欧几里得

POJ2142 题目的大意是通过放不同的砝码使得天枰平衡 很容易得到实际上问题就是解ax=d+byax=d+by与ax+d=byax+d=by这两个方程的满足条件的最小的正整数解 但实际上我们可以通过解这样一个不定方程ax+by=dax+by=d来得到结果 首先,x,yx,y的正负是无关紧要的(如果其中一个是负数,我们直接取绝对值就可以),无非就是砝码从一段移到另一端。 其次,通过扩展

2016-10-10 23:18:03 348

原创 POJ2891 Strange Way to Express Integers 不互质中国剩余定理

POJ2891题意是求同余方程组的最小正整数解,首先肯定想到用中国剩余定理,但题目中并没有限制模数m[i]两两互质,就不能直接用中国剩余定理,需要注意两个问题: 1.同余方程式是否有解:对任意两个同余方程: {x≡b[i]    (mod m[i])x≡b[j]    (mod m[j])\begin{cases}x\equiv b[i] \ \ \ \ (mod \ m[i] ) \\x

2016-10-10 22:32:53 361

原创 HDU 4609 3-idiots三个智障 FFT+组合计数

HDU4609 这道三个智障的题目把我做成了智障,先膜拜bin神,他的题解已经很详细 Bin神的HDU4609题解 这里稍作一些解释: num[i]num[i]数组记录的不同长度的strick的个数,num[i]∗num[i]num[i]*num[i]后代表任意可重复地那两根构成的长度的种类数 ,题目要求是不可重复的,所以要进行第一次去重之后考虑num[i]num[i]的前缀和数组sum[

2016-10-07 02:00:30 1580

原创 Hihocoder1388 2016年北京网络赛 FFT

题目链接 题目不难看懂,首先把公式变形: ∑i=0n−1Ai+B(i+k)modn2=∑i=0n−1A2i+∑i=0n−1B2(i+k)modn−2∑i=0n−1Ai∗B(i+k)modn\sum_{i=0}^{n-1} {A_i+B_{(i+k)modn}}^2 =\sum_{i=0}^{n-1}A_i^2+\sum_{i=0}^{n-1}B_{(i+k)modn}^2-2\sum_{i=0

2016-10-07 01:27:43 849

原创 HDU 1402 A * B Problem Plus FFT+convert

HDU1402两个大数的乘法 1.首先想到的用java Biginter类可以直接求,确实,比赛的时候肯定用java写这种简单的大数类的题目。 2.如果不用java的大数类,就会想到C++的bignumber模版,但是bignumber在进行乘法运算时也是每一位都要乘,然后再做加法,复杂度依旧大数的位数是50000,那么的算法达到了10^9的复杂度,肯定会TLE 3.想到了FFT,两个整数的乘

2016-10-06 11:33:30 439

原创 HDU 4135 Co-prime 容斥原理

题目链接 统计在大区间[A,B]中与N互质的数的个数,其中A,B都在10的15次方级。暴力肯定不行,正难则反,思考求[A,B]中不与N互质的数的个数,那么该数必然是N的其中一个因子的倍数,所以首先对N的所有因子进行打表,然后根据每一个因子求在[A,B]区间中其倍数的个数。 在不同的因子进行计数的时候可能产生重复,所以进行容斥。 最后,小技巧将区间转化成[1,B]-[1,A-1]求更加方便。

2016-10-03 22:51:52 307

原创 HDU3694 Fermat Point in Quadrangle 多边形费马点结论

HDU3694 前面说了一大推都没什么用,最后是求四边形的一个fermat点。 多边形的fermat点是欧拉平面上的一个点到多边形每个点的距离之和最小的点 四边形的fermat点在四个顶点与对角线交点值5个点中较小的那个,直接套模板计算取最小值即可 在判断多边形的对角线时小小用了一下极角排序 AC代码:#include <iostream>#include <cstdio>#inclu

2016-10-03 22:44:46 1117

原创 HDU3697 Selecting courses

HDU3697对课程结束时间由小到大进行排序,之后直接暴力枚举。 AC代码:#include <bits/stdc++.h>using namespace std;const int maxn=300+5;struct node{ int start,end;};node a[maxn];bool vis[maxn];bool cmp(node a,node b){

2016-10-03 22:40:53 464

原创 HDU 5514 Frogs 容斥原理

HDU5514n个青蛙在环形的m个编号为0到m-1的石头上跳,不同的青蛙一次跳过不同数量的石头,问最后这n个青蛙能够跳到的石头的序号之和。 容易得知,每次跳x个石头的青蛙,最终只会落在标号为gcd(x,m)的倍数的石头上,但不同青蛙的情况会有重复,所以需要进行容斥。首先把m的因数打表,求出每一个gcd(x,m),建立vis[i]=1表示需要对第i个因子进行计数,num[i]代表该因数在前i个因子中

2016-10-03 22:37:42 386

原创 HDU 5514 Game of Flying Circus

HDU5515 首先这是一道阅读理解题,建议大家一定要好好地读题,不忽略每一个细节。 推荐大家读读这个博客题目翻译 思路比较简单,考虑fighter与speeder相遇在#2到#3的线段和相遇在#3和#4的线段的两种情况,分别卡列方程卡限制条件 一元二次方程最好能够用二分求解,精度好并且能够直接二分解x的范围 下面的解法直接对方程进行求解,过程中注意精度:AC代码,略丑陋:#inclu

2016-10-03 22:29:10 409

原创 LightOJ1341 Aladdin and the Flying Carpet

LightOJ1341 题目的大意是求一个矩阵的分解的可能情况,并且给定了矩阵的最短边b的限制条件,注意正方形的情况不考虑。 我们知道一个数的因子个数可以用算术基本定理来表示 那么它的因子数个数为: 避免重复,并且去除正方形的情况,需要m/2,之后暴力枚举去掉1到b之间的因数情况即可。题目的数据限制较宽松 AC代码:#include <bits/stdc++.h>using na

2016-10-01 09:12:27 339

原创 LightOJ1007 Mathematically Hard

LightOJ1007 题目的意思很容易理解,求一个区间[a,b]内的欧拉函数平方之和 但是题目的数据限很大 a,b都是1e12级。按照一般思路写好程序后,实验以下从2到10000发现long long也会超范围,所以用unsigned long long。 此外还需要预处理前缀和,不然就会超时。 预处理前缀和时不能够再开数组,不然就会爆内存,WA点多多. AC代码:#include <b

2016-10-01 09:03:14 319

空空如也

空空如也

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

TA关注的人

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