自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 uva 11526 H(n)(公式优化)

点击打开链接求s=n+n/1+n/2+....n/(n-1)+n/n;nn=20 s=20+10+6+4+4+3+2+2+2+2+1+1+1+1+1+1+1+1+1+1因为下取整原因 许多项都会相同 把相同项乘起来以后,跳着加 时间复杂度i从小到大 若第一次n/i=t 则当前i为满足(下取整)n/i=t的最小i  n/i=t.Bi增加&&n/i=t(下取整) n/i=t.B

2016-10-31 21:32:52 319

原创 hdu 5944 Fxx and String 暴力(水)

点击打开链接题意:给定一个字符串s,求有多少个三元组(i,j,k)满足i,j,k是等比数列且s[i]=='y'&&s[j]=='r'&&s[k]=='x'。注意点:公比可能小于1#include #include #include #include #include #include #include #include using namespace std;

2016-10-29 22:37:48 468

原创 hdu 5945 Fxx and Game dp(单调队列优化)

点击打开链接题意:求数x最少经过多少次变换能变为1,(1)如果x%k==0,那么可以x=x/k。(2)x=x-i,(1//dp[1]=0//dp[i]=min(min(dp[i-t]~dp[i-1])+1,dp[i/k]+1) 用单调队列保存dp(i-t~i-1)中最小值的下标即可#include #include #include #include

2016-10-29 22:25:04 964

原创 hdu 5646 Partition数学+构造

点击打开链接//把n拆分成不同k个数之和 使得k个数乘积最大//因为C=A+B  A+2AB //推出k个数为连续的 或者为连续两段中间差2,构造这k个数即可 #include #include #include #include #include using namespace std;typedef long long ll;const ll mod=1e9+

2016-10-29 10:19:35 627

原创 hdu 2204 容斥原理

点击打开链接以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776题目:求出1-N里面能表示 成M^K的数有多少个求A^B在//如果A^B在i>=1)//因为2^60>1e18所以 B不超过60另外B考虑质因子,如果A^4在范围内的话,肯定(2*A)^2也在范围内,没有必要重复考虑

2016-10-27 21:19:19 310

原创 uva 1644 Prime Gap 二分

点击打开链接#include #include #include using namespace std;typedef long long ll;const int N=1e5+20;const ll M=1299709;vector p;ll n;bool check(int x){ for(int i=2;i*i<=x;i++) { if(x%i==0)

2016-10-27 19:40:42 434

原创 hdu 1540 线段树(区间合并入门)

点击打开链接#include #include #include using namespace std;typedef long long ll;const int N=5e4+20;int s[N];struct node{ int l,r; int ls,rs,ms;//左端,右端,最大连续,ms区间最大连续 }a[N<<2]; void build(int l,i

2016-10-27 17:04:11 299

原创 codeforces 626D 概率+暴力

点击打开链接题意:三局两胜,前两局A胜,第三局B胜,问最后B的得分总和大于A的可能性。//总的事件个数为C(n,2)^3 //cnt[a] 赢的一局相差a时的方法数 cnt2[b],输的两局总和相差b的方法数 利用前缀和变为求出相差//则要求输掉前两局,赢第三局&&输的人总得分大(差距a-b>0)的方法数为: tot+=cnt2[i]*cnt[i+1] i=0~M

2016-10-27 14:57:45 349

原创 uva 294 Divisors 求因子个数

点击打开链接//因子个数函数为乘性函数//或者说选出一个因子的方法数有ans种 每种方法中因子都不同 所以因子个数有ans个#include #include #include using namespace std;typedef long long ll;const int N=333333;int p,num;int prime[N+20],vis[N+20],

2016-10-27 13:55:21 326

原创 uva 10622 Perfect Pth Power(算数基本定理)

点击打开链接给出n,求n=b^d的最大d分解n=p1^ap2^bp3^c..要使n=(p1^(a/d) p2^(b/d) p3^(c/d))^d&&d最大 则d为cnt个因子 幂的gcd#include #include #include using namespace std;typedef long long ll;const int N=333333;int

2016-10-27 13:15:32 451

原创 poj 2773 容斥原理+二分(求与n的第k互质数)

点击打开链接#include #include #include using namespace std;typedef long long ll;const int N=1e6+20;const ll inf=1e12;ll n,k,num,ans;int fac[N];void Get(ll n){ for(int i=2;i*i<=n;i++) { if(n%

2016-10-26 22:50:27 569

原创 hdu 1796 How many integers can you find(容斥原理)

点击打开链接#include #include #include using namespace std;typedef long long ll;const int N=1e6+20;ll n,m,num,ans;int fac[N];ll gcd(ll a,ll b){ if(a%b==0) return b; else return gcd(b,a%b);}

2016-10-26 14:43:14 311

原创 hdu 4135 Co-Prime 容斥入门

点击打开链接求A~B中与N互质的数的个数.算A~B不与N互质的数的个数即分解N素因子N=x1^p1x2^p2...xn^pn  1~B中x1的倍数有B/x1,即用容斥算x1Ux2U..xn的个数#include #include #include using namespace std;typedef long long ll;const int N=1e6+

2016-10-26 11:20:29 277

原创 codeforces 626C 二分判定

点击打开链接#include #include using namespace std;typedef long long ll;int n,m;const long long inf=6e6;bool check(ll x){ //最大数x之前 至少有n个2的倍数,m个3的倍数 if(x/2<n||x/3<m||(x/2+x/3-x/6)<n+m)//2 3倍数集合中个数不

2016-10-26 09:45:04 367

原创 UVA 808Bee Breeding(构造 建立坐标系)

点击打开链接#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5;int dx[5]={-1,0,1,1,0};int dy[5]={1,2,1,-1,-2};struct Point{ int x; int y; P

2016-10-25 15:44:12 404

原创 UVA 1608 Pole Arrangement(递推)

点击打开链接dp[i][j][k] 高度1~i 左边看到j根 右边看到k根的方法数 高度2~i的排列数等价于高度1~i-1的排列数(相当于1~i-1每个排列方案中每个高度+1即可) (2~i每个排列方案中高度都-1)考虑2~i放好时(子问题) 插入1到左边,右边和中间i-2个空三个分类即可#include #include #include using namespa

2016-10-25 14:30:56 380

原创 hdu 1560 DNA sequence(IDA*)

点击打开链接IDA* :限制dfs深度+最优性cut#include #include #include using namespace std;const int N=10;int n;char DNA[5]={"ACGT"},s[N][N];int pos[N];//pos[i]:s[i]目前匹配的字符个数 int size[N];//char seq[N];//母串

2016-10-25 14:13:14 310

原创 Codeforces 624D Array Gcd(数论+dp)

点击打开链接//因为DEL只能操作一次&&不能删除所有元素// a1 an 至少有一个存在->最后的gcd肯定为a1或者an的某个因子//只要求gcd>1所以贪心:扫素因子即可(素因子已经满足题目要求 在大没有意义,反而可能增加操作)枚举素因子产生的Gcd,用Dp求最小花费dp[i][j]表示扫描到第i个元素时 没有删除元素/正在删除元素/已经删除完元素的最小代价。

2016-10-24 17:59:44 504

原创 codeforces 725D Conteset Balloons 贪心

点击打开链接//要想rank靠前 每次做的操作只能:花费气球挤掉比自己高的 贪心:用越少气球挤掉一个排名高的人(剩的气球越多排名就越高.) 每一次操作更新答案即可#include #include #include #include using namespace std;typedef long long ll;typedef pair P;priority_queue

2016-10-24 16:37:15 289

原创 codeforces 725C Hidden word(构造)

点击打开链接参考//s[x]=s[y] 构造:则保证x与x-1,x+1,y-1,y+1相邻,其他的元素按照原来顺序放即可;  // ..x开始顺势针放  dif/2 保证s[y-1]和s[x]相邻 (两行末尾为s[x]~s[dif/2],, s[y-1]~s[dif/2+1])//s[y+1]~s[len-1] s[0]~s[x-1]连成一串 取0~12-dif/2,放到s[x]之

2016-10-23 17:47:13 491

原创 uva 580 Critical Mass(递推)

点击打开链接//f[i] i个box 放U和L 至少连续3U的方法数ll g[N+20];//g[i] i个box 放U和L 没有连续3U的方法数 g[i]=2^n-f[i] // 根据第一次出现的连续3U进行分类计数 若i~i+2为3U则i-1只能为L 前面i-2个不能有3U方法为g[i-2] 后面n-i-2个box任意 2^(n-i-2) // f[i]=segam(g[i-2

2016-10-22 22:44:18 343

原创 uva 12034 Race递推

点击打开链接//f[i] i个人的排名方法数//按第一名进行分类计数 f[i]=c(n,k)*f[n-k](k为第一名人数 k=1~n)#include #include #include using namespace std;const int N=1e3+20;const int mod=10056;typedef long long ll;ll f[N+2

2016-10-22 22:29:50 346

原创 codeforces 624C 二分图染色

点击打开链接//b和a,c都相连 不相连的只有a-c 所以原图中的两点无边只能为a-c //在补图中确定颜色法案后,还要在原图中check一遍#include #include #include #include #include #include #include #include #include #include #include using names

2016-10-21 23:19:24 526

原创 UVA 10491 Cows and Cars(全概率)

点击打开链接//对一开始选的门进行划分//r1一开始选到牛switch后选到car 两个独立事件 //r2一开始选到车switch后选到car//switch后还有a+b-c-1个门可以选 #include #include #include #include using namespace std;const int N=1e5+20;int main()

2016-10-21 12:26:25 262

原创 codeforcs 722D 贪心(对最值操作)

题目链接//为了使最大值最小,每次选最大值&&把最大值不断除以2 碰到!vis[x']时停止,x'为0说明最值无法变化,退出即可//x>y  x'// x'>y时 下一步时会继续对x'进行操作,进一步缩小最大值 #include #include #include #include #include #include using namespace std;c

2016-10-21 12:03:29 461

原创 codeforces 621C(数学期望)

点击打开链接//f[i] a[i]和a[(i+1)%n]之积能被p整除的概率  //E=segmaE[i]=segma(f[i]*2000)//如何求f[i]? //因为p为素数 (a,p)=1,(b,p)=1 (ab,p)=1(反证法易证明)//l[i]~r[i]中能被p整除的数的个数有: r/p-(l-1)/p (p组一个) //F[i](从a[i]中取出不被整除的概率

2016-10-20 22:27:55 716

原创 codeforces 621B 对角线计数

点击打开链接#include #include #include #include #include #include using namespace std;typedef long long ll;const int N=2e3+20;int f[N],s[N];int main(){ int n; cin>>n; memset(f,0,sizeof(f));

2016-10-20 17:27:21 393

原创 hdu 5916 Harmonic Value Description 构造

题目链接//最小的为gcd(pi,pi+1)都为1 1~n奇偶互质 /则第k小的为有一个gcd(pi,pi+1)=k 其余为1//条件2k//k-1和k+1要隔开所以 k后面放k-1~1 然后k+1~n即可保证两两互质 #include #include #include #include #include using namespace std;type

2016-10-20 15:35:51 223

原创 uva 1210 sum of CONSECUTIVE prime num 暴力or尺取

点击打开链接法1打表:可以间接的由prime来更新ans(枚举连续和的长度和起点即可) 法 2sum of CONSECUTIVE 尺取#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e4;vector p;l

2016-10-20 13:29:34 369

原创 uva 10539 Almost Prime 暴力

点击打开链接//求(l,r)内r//则满足条件的素因子 若素因子大于10^6则要么为素数要么含有另外一个#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e6;vector p;//10^12内只有一个素因子&&不是

2016-10-20 12:34:48 406

原创 uva 1213 sum of different primes 01背包(二维)

点击打开链接#include #include #include #include #include using namespace std;typedef long long ll;const int N=1120;vector p;//素数表ll dp[210][16][N+1];//dp[i][j][n] 前i个选j个和为n的方法数 int size,n,k

2016-10-20 11:00:52 331

原创 hdu 2181 哈密顿绕世界(dfs+回溯)

点击打开链接#include #include #include using namespace std;const int N=30;int g[N][5],m,cnt=0;int vis[N],path[N];void print(){ printf("%d: ",cnt); for(int i=1;i<=21;i++) { printf("%d",path[

2016-10-19 22:08:49 414

原创 hdu 5918 暴力kmp

点击打开链接求满足 aq,aq+p,aq+2p,,aq+(m-1)p=b1..bm 的子串数a[i]=b[j] 主串i+=p 则把主串分组 每组长度为a/p,进行kmp匹配即可#include #include #include #include #include #include using namespace std;typedef long long ll;co

2016-10-19 15:32:20 442

原创 hdu 1023Catalan出栈方案+大数

点击打开链接Catalan//入栈顺序递增1...n 求出栈方式有多少种//对编号1进行分类 编号1为出栈序列的第k个元素//则方案为f(k-1)*f(n-k) k从1累加到n,母函数求递推公式得到 f[n]=f(n-1)*(4n-2)/(n+1) #include #include #include #include #include #include

2016-10-19 12:09:48 357

原创 uva 11181 Probability|Given 条件概率

点击打开链接//求在r个人买东西的情况下 第i个人买东西的概率//p(Ei|E)=p(EiE)/p(E) //枚举r个人买东西的情况 利用全概率 算出P(E) //n=4 r=2例如P(E2E)=P(1100)+P(0110)+P(0101) //P(EiE) 画个维恩图就知道了->P(EiE)为状态不同E中a[i]=1的累加和 //即全概率中对E进行划分-> P(Ei

2016-10-19 11:06:12 309

原创 FZU 2020 组合数取模(Lucas定理模版)

点击打开链接Lucas定理证明点击打开链接#include #include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5+20;ll quick_mod(ll a,ll b,ll p){ ll res=1; while

2016-10-18 18:46:15 381

原创 codeforces 377D exam贪心判定+二分

点击打开链接贪心判定考试复习时间可以间断,则如果在第i天考科目day[i],相当于在前i-1天中,要任意填入day[i]个(前i-1天要有day[i]个空位)贪心:若在x天完成全部考试 第y1和第y2天都能考同一个科目&&y2>y1显然选择在靠后的第y2天考该科目 y2的空位数>=y1的空位数 #include #include #include #inclu

2016-10-18 17:28:45 559

原创 codeforces 731F 暴力(前缀和)

点击打开链接//枚举a[i]作为secondary  //其余要选的数 必须为a[i]的倍数  x=p*a[i] //如果 a[j]在p*a[i]~(p+1)*a[i]之间 按照题意 a[j]可以降为p*a[i]//重点:如何快速判断 p*a[i]~(p+1)*a[i]-1之间有多少个a[j]? //利用前缀和思想 cnt[i]记录1~i中出现的元素个数 则a,b内元素

2016-10-17 22:19:46 697

原创 codeforces 731C 并查集+贪心

点击打开链接利用并查集把颜色要相同的下标放在同一集合中,贪心:找到每个集合中出现最多的颜色 把剩下的颜色变为该颜色即可 ans+=size-mx#include #include #include #include #include #include #include #include using namespace std;const int N=2e5+10;lo

2016-10-16 22:24:00 1057

原创 codeforces 727c 交互式输入(水)

点击打开链接#include #include #include #include #include using namespace std;const int N=1e4+20;int a[N]; int main(){ int x,y,z,n; scanf("%d",&n); printf("? 1 2\n"); fflush(stdout); scanf("

2016-10-16 16:37:06 987

空空如也

空空如也

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

TA关注的人

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