自定义博客皮肤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)
  • 收藏
  • 关注

原创 bzoj3000 Big Number

题目首先,我们都知道,一个数n有几位数的公式就是lg(n)+1(十进制下)。那么k进制下就为logk(n)+1了。 那么这道题就可以即为logk(n!)=log(1)+log(2)+……+log(n)了。 但是这样是O(n)的,做不动。这个时候,就要使用神奇的公式了。当然不会证明啦。但是,这样就可以根据对数运算法则展开了。最后公式就很好推了。#include<bits/stdc++.h>#de

2017-11-30 20:23:27 355

原创 BZOJ 刷题计划

noip2017算是告一段路了吧。 接下来就是省选的准备了。 然而有很多感触呀,初中的同学们好多都蜜汁退役了。 但是,之后的路还是要走下去的,带上一起的梦想。当然,必不可少的就是省选了,然后就当然要刷题了,说一说我的刷题计划吧。只要做上百个题,看上千个题,就可以成为神犇了。很有道理吧。bzoj上的题大多都很有难度,对于这些题。大概是可以看看题解,理解一下,然后必须自己实现一次,这样就能学到一

2017-11-18 13:44:14 1352

原创 noip2017

所以,我最初是在憧憬这什么,现在又在回忆着什么;最初是收获了什么,现在又失去了什么 ——noip2017有感今年就是最后一次noip了,但是不算太愉快吧。 noip2014普及组是我的第一次noip,当时还什么都不会,大概就到多维数组吧,用一个小时写出了第一题,虽说只是一个小小的模拟,但对

2017-11-12 18:01:49 961 2

原创 bzoj1925 [Sdoi2010]地精部落

题目很熟悉的一道题目,很久以前记过一个结论。说到底就是波动数列计数。 运用递推思想。f[i][j]=f[i][j-1]+f[i-1][j-i]但是这道题要卡空间,要开一个滚动数列就好了。#include<bits/stdc++.h>using namespace std;long long n,p,now;long long f[2][4205];int main(){ //f

2017-11-09 14:55:41 240

原创 bzoj3997 [TJOI2015]组合数学

题目emm,首先,记住一个定理一样的东西:最长反链=DAG最小路径覆盖然后,就是比较简单的一个dp问题了。#include<bits/stdc++.h>#define Max(a,b,c) max(a,max(b,c))using namespace std;int n,m,T;int A[1005][1005],f[1005][1005];inline char nc(){

2017-11-09 14:46:24 280

原创 bzoj1669 [Usaco2006 Oct]Hungry Cows饥饿的奶牛

题目最,最,最长上升子序列。可以说是很简单了。唯一需要注意的是要把f数组一开始赋值为1.#include<bits/stdc++.h>#define N 5000using namespace std;int f[N+5],A[N+5],n,mx;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; retur

2017-11-09 14:39:54 410

原创 bzoj1612 [Usaco2008 Jan]Cow Contest奶牛的比赛

题目要想确定一个奶牛的排名,只要知道比它强的有多少个,比它弱的有多少个,并且加起来为人数减一。之后就只需要知道有多少人比他弱或强就好了。 可以考虑floyd来做,类似最短路:f[i][j]=f[i][j]||(f[i][k]&&f[k][j])要么本来就联通,要么用一个辅助的k。#include<bits/stdc++.h>using namespace std;int n,m,x,y;i

2017-11-09 14:32:12 210

原创 bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线

题目又是最小最大值问题,这显然是满足二分性质的。二分最大值,把权值比它小的边新权值设为0,比它大的设为1。然后再跑一遍最短路,比较到n的距离与k的大小就好了。#include<bits/stdc++.h>#define N 20000using namespace std;int n,p,k,l,r,mid,mn,x,y,z;int first[N+5],nxt[N+5],to[N+5],v

2017-11-09 14:24:40 250

原创 bzoj1602 [Usaco2008 Oct]牧场行走

题目LCA模板题。在树上求两个点之间的距离,可以用类似差分的方法。设dis[i]表示结点i到根的距离,那么s到t的距离为:dis[s]+dis[t]-2*dis[lca(s,t)];lca(s,t)表示它们的最近公共祖先。#include<bits/stdc++.h>#define N 2000using namespace std;int n,q,x,y,z;int first[N+5]

2017-11-09 14:19:33 232

原创 bzoj3450 Tyvj1952 Easy

题目比较简单的一个期望递推,设当前连续o的期望为tmp,则如果当前为x,tmp=0,对答案没有贡献。 如果当前为o,tmp++,对答案有tmp^2-(tmp-1)^2的贡献 如果当前为?,先对答案有((tmp+1)^2-tmp^2)的贡献,tmp=(tmp+1)/2。按照这个规则,O(n)扫一遍就可以了。#include<bits/stdc++.h>using namespace std;i

2017-11-09 14:14:36 167

原创 bzoj1697 [Usaco2007 Feb]Cow Sorting牛排序

题目首先,我们先学习一下置换的概念,就是两个排列,它们的某个下标相等的子序列的数值循环以后相等。说的好抽(mo)象(hu)呀,举个例子:s = {1 2 3 4 5 6} t = {6 3 4 2 1 5} 然后,t可以写成: t = { {1 6 5},{ 2 3 4 } }大概就是这样吧。我们再看这道题。先求一下置换,对每个置换,分两种考虑: 1.内部解决: 当然用最小的来操作

2017-11-08 23:12:24 195

原创 bzoj4459 [Jsoi2013]丢番图

题目蜜汁“费马大定理”,不过好像没什么关系。1/a+1/b=1/n,这样当然是没有用的,我们来变换一下(没有公式编辑(其实太懒))。(a+b)/ab=n n(a+b)=ab ab-n(a+b)+n^2=n^2 (a-n)*(b-n)=n^2到现在,就很显然了,求n^2的因数个数,考虑a,b其实等价,还要除以2,(向上取整,因为平方数)。之前被一个强行卡常网站卡了一下这个,本机0.83s,交上去

2017-11-08 22:57:19 307

原创 bzoj1583 [Usaco2009 Mar]Moon Mooing 哞哞叫

题目一道类似两个序列合并的东西,通法就是上一个优先队列就好了,但是这道题会超时。但是,仔细观察一下,序列是单增的(a>c),这就很好办了,类似做一个归并就好了。#include<bits/stdc++.h>#define N 5000000using namespace std;int n,a1,b1,c1,a2,b2,c2,C;int cnt,p1,p2;unsigned long lo

2017-11-08 22:47:50 289

原创 bzoj4668 冷战

题目好久没写blog了,可能是因为最近比较忙吧,距离noip2017也就60个小时左右了吧。要开始复习一下模板了。这道题问是否联通,显然要用并查集来做,但是,是否能路径合并呢? 简单想一想,当然不能啦,因为我们每个结点上要记录一个时间标记,然后构成一个像树一样的结构(当然可能有其它做法)。但是,裸的并查集会超时的,如何优化呢?并查集主要优化就两个:路径压缩和按秩合并,前者接近O(n),后者能让高度

2017-11-08 22:43:36 442 1

原创 noip2017 复习计划

哎,终于在考试前一周刷完了noip2013到noip2016,并且bzoj上也刷了200道题了,而且道道都写了博客,还是很有成就感的。虽然有些(da duo)博客很水,但是自己再看一遍还是会从中学会什么的。当然,也希望对更多的OIer有用。还有一周,就是最后一次noip了。先在这立一个复习计划,主要是一些noip模板和一些技巧吧。先占坑,明天填。。。

2017-11-02 22:25:43 494 1

原创 bzoj4917 [Lydsy六月月赛]Hash Killer IV

啊哈,Hash Killer 4,不过,一开始我还以为又是什么字符串神题,没想到啊233。其实可以打表(逃好吧,说正解,我们可以手推几个式子,发现有些位子是固定了的,然后就可以全部确定了,多好,模拟题呀。#include<iostream>#include<cstdio>#include<cstring>#include<bits/stdc++.h>using namespace std;

2017-11-02 22:19:27 259

原创 bzoj2982 combination

题目一句话题意,求解C(n,m)%10007的值。我们知道,10007是一个质数,那么除一个数就相当于乘上它的逆元,这样就可以预处理阶乘O(1)做了。但是,这样有个问题,n大于了10007怎么办?显然都不是0呀。我们有办法(不是我想出来的,Lucas定理就可以用了。C(n,m)=C(n/p,m/p)*C(n%p,m%p)%p然后递归就好了。#include<bits/stdc++.h>#defin

2017-11-02 22:16:36 195

原创 bzoj5085 最大

题目最显然易见的做法就是枚举一条对角线的两个端点,不过,这样是过不了的。然后,就需要一些技巧了。我们先贪心地想一想,如果第一次选最大的两个点算,当然是不行的。。 但我们多做几次,是不是正确率就会变高呢。答案是显然的,我们就取出最大的一些数来算,这样就成O(num^2)了,之后,这个num^2如何选取呢。如果在考场上,就按极限取吧,只要不超时就行。这样如果我们的想法是对的,就会A。选取4*n其实就行

2017-11-02 22:12:27 382

空空如也

空空如也

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

TA关注的人

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