自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浅笑~如夏

今天会有好事发生吗

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

原创 [Usaco]麦香牛块

说实话,我也不知道这道题我到底对不对,反正各个网站的数据都过了,但是还是有些虚。我们首先知道,对于a,b两个数,设d=gcd(a,b),那么对于任意c>=ab且d|c,一定存在正整数x,y,使得ax+by=c成立。对于这道题,我们先考虑无限的情况,我目前就想到一种,这n个数的最大公因数为d不为1,那么它们对于非d的倍数都无法构成。再根据今年noipd1td1得(233),最大的应该不超过最大数的平方

2017-12-03 18:51:42 645

原创 bzoj2134 单选错位

题目博客要开始更新了。毕竟noip也算过去了。这差不多又是一道数学题,我们这样考虑:对于一道答案有a种情况,会选b种可能的题,两两排一下,一共有ab种情况,而符合条件的只有min(a,b)种,那么,期望为(1/ab)*min(a,b),也就是1/max(a,b)。之后就是O(n)累加就好了。#include<bits/stdc++.h>#define N 10000000using namesp

2017-12-03 18:43:07 275

原创 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 356

原创 BZOJ 刷题计划

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

2017-11-18 13:44:14 1352

原创 noip2017

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

2017-11-12 18:01:49 962 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 290

原创 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 383

原创 bzoj5074 [Lydsy十月月赛]小B的数字

题目咳咳,话说a|b谁是谁的因子呀,数学怕是没学好,一开始弄反了,导致认为这题难道不是有毒送分吗233。然后样例打脸,好吧,我错了,a是因子。其实还是比较简单的,由于都是2的整数次幂,我们考虑整数就好了,发现,每一个ai,至少要占x的次数的,1/ai。然后我们就可以愉快的求和,然后判断与1的大小就好了。为了尽量避免精度问题,我没用double,都乘了一个10!来算(其实影响不大)。对了,还有一个小(

2017-10-31 21:58:05 543

原创 bzoj5071 [Lydsy十月月赛]小A的数字

题目大概就是队列变换,然后问一下能否达到最终状态。一开始完全不知道怎么做,学习了一下,发现这种题大概就是求差分或者前缀和就会有规律了。比如这道题,求一个前缀,每一次操作就成了交换两个前缀一样的,之后就挺简单的了。#include<bits/stdc++.h>#define N 100000using namespace std;int n,T;long long A[N+5],B[N+5];

2017-10-31 21:47:35 280

原创 bzoj3396 [Usaco2009 Jan]Total flow 水流

题目看一看题目描述,蜜汁熟悉,这,这不就是裸的最大流吗。也好,马上noip了,复习一下。#include<bits/stdc++.h>#define N 100000#define inf 10000000using namespace std;int n,x,y,v;int first[N+5],nxt[N+5],to[N+5],fl[N+5],siz;int dis[N+5];in

2017-10-31 21:42:39 227

原创 bzoj2084 [Poi2010]Antisymmetry

反对称子串,emmm,其实本质上和回文子串是一样的,只是对应方法不一样罢了。然后就可以直接上 马拉车(manacher)了。#include<bits/stdc++.h>#define N 1000000using namespace std;char s[N+5],tmp[2*N+5];int p[2*N+5];int n,m;long long ans;inline void ma

2017-10-31 21:39:46 251

原创 bzoj4264 小C找朋友

怎么说呢,这应该算是一种新知识吧,图上hash。 具体做法就是每个点都附上一个初值,然后把每个点所连的点的值“合”起来,然后就可以判断相连的点是否一样了(不包括自己),如果要让自己也在的话,再“合”上自己就好了。关于怎么“合”,有多种方法,感觉一般采用二进制运算,因为不用考虑顺序呀。好像异或的正确率比较高呀。#include<bits/stdc++.h>#define N 1000000usi

2017-10-29 21:44:10 256

原创 [noip2012]借教室 题解

emm,根据题意描述,就是每次区间加一个数,问是否满足条件。首先,答案肯定满足二分性质,之后就是判断了。说白了就是很多次区间加,然后一次查询前面各个数。当然,线段树,树状数组裸题,但是,这样是nlogn的,过不了呀。要重新考虑。由于只查询一次,我们可以差分数组,每次修改是O(1)的,查询是O(n)的,综合一下,也是O(n)的,就好了,具体做法是在cnt[s]+=add,cnt[t+1]-=add,前

2017-10-29 21:35:35 509

原创 [noip2012]同余方程 题解

emmm,一道当时的模板题吧。什么只要会ex_gcd就可以A的题。变换一下式子:ax=k(mod b)可以变为ax+k=by,再移一下项,可得: ax+by=-k,y的正负可以变,然后,就是ex_gcd了。#include<bits/stdc++.h>using namespace std;int a,b,x,y;int ex_GCD(int a,int b,int &x,int &y){

2017-10-29 21:31:06 318

原创 [noip2012]国王游戏 题解

显然,这样题一定是要排序的,如何拍呢。我们先猜一猜,发现只要按照乘积大小来排序就好了。至于证明,我们这样想,如果只交换两个相邻的数,产生的影响只要它们两个数之间,然后讨论一下就可以了。然后,60%数据保证答案小于10^9,说明什么,之后的数据要上高精度,好麻烦呀。但其实还是可以写的,可以写在一个结构体内,但我好像不会233。就用的函数,貌似很丑,大家凑合看看。#include<bits/stdc++

2017-10-29 21:11:52 1729

原创 [noip2012]Vigenère 密码 题解

哇,好长一张表。。。。。难道要手打这么长的表,而且还不能复制233。其实,可以不必这么麻烦,我们观察一下,我们另A:=0,B:=1….Z:=25,那么加密就是把两个数加起来再模26,转换回去就好了。注意记录大小写。#include<bits/stdc++.h>using namespace std;char s[2000];int key[2000],tmp,x,L;int main(){

2017-10-29 21:04:36 388

原创 [noip2013]华容道 题解

才说完都很短,然后就一道码农题233。首先70分的BFS是很好想到的,然后就可以愉快地开始码这道题了。但是,这是远远不够的,最后的点如过呢。我们可以预处理一下,然后spfa,从每个状态到它可以转移的状态就好了。最后,这种题真心恶心呀。#include<bits/stdc++.h>#define N 40000#define INF 0x3f3f3f3fusing namespace std;

2017-10-26 22:17:25 781

原创 [noip2013]花匠 题解

一句话题意:求最长的波动子序列。其实可以当作一个结论记住,只要贪心地选就好了。注意判断相等情况,再用一个tmp记录一下上一次的大小关系,这样就十分简单了。#include<bits/stdc++.h>using namespace std;int last,now,tmp;int n,cnt;int main(){ scanf("%d",&n); scanf("%d",&l

2017-10-26 22:12:30 282

原创 [noip2013]积木大赛 题解

一开始还以为是什么dp题目,不过,仔细想一想第一题不会出这么难吧,所以,就考虑简单做法。贪心的想,每次把每段区间都加到最大,然后分开的每个区间都这样操作就好了。不过这样模拟很难实现,我们要优化一下,记录一个上次最高的y,如果当前x小于这个,对答案的贡献就加(y-x),表示这段要这么多次才可以符合要求。代码十分短小,主要是想法。#include<bits/stdc++.h>#define N 100

2017-10-26 22:06:15 507

原创 [noip2013]货车运输 题解

一句话题意就是求A到B的路径中的最小值最大,是不是有一种一眼二分的奇妙感觉,但是,我们显然二分不了呀。仔细想一想,最大,答案一定是出现在最大生成数上的。好了,我们就可以先求一遍最大生成“树”,打引号是因为它们不一定都是联通的,事实上是,最大生成森林。然后对于每一个询问,我们可以倍增地求出最小值。这样的话,就解决这道题了。#include<bits/stdc++.h>#define N 100000

2017-10-25 23:22:23 314 1

原创 [noip2013]火柴排队 题解

显然,我们要让ai,bi比较”接近”,应该可以观察发现,当a,b都为降序的时候一一对应最小,证明的话,我们可以考虑交换两个数,这样的话,结果一定是会变大的。然后目标就是让它们这样对应,求最小交换次数,这样,就是求逆序对个数了。当然,归并排序是很经典的,但是我写的树状数组,应该常数要小一些吧。#include<bits/stdc++.h>#define N 100000#define mod 99

2017-10-25 23:17:13 565

原创 [noip2013]转圈游戏 题解

我们可以简单地发现,答案就是(x+(10^k)*m)%n。这样的话,就是很简单就可以求出来了。10^k%n的话,我们用一下快速幂就可以解决。#include<bits/stdc++.h>#define ll long longusing namespace std;ll n,m,k,x;ll ksm(ll a,ll b,ll c){ ll ans=1; while(b)

2017-10-25 23:12:10 803

原创 [noip2014]飞扬的小鸟 题解

其实,这道题本质实在不难,一眼可以看出dp相关,不过细节比较多。 f[i][j]表示,在i,j的最少点击数。首先,考虑上升的情况,每次可以升随意次,那么f[i][j]=min(f[i][j-k*X[i]]+K)了,但是我们显然要去掉k,就可以采用完全背包的思路。 f[i][j]=min(f[i-1][j-X[i]],f[i][j-X[i]])+1,就好了。下降没什么好说的,就一个0/1背包,注意

2017-10-24 23:05:43 514

原创 [noip2014]解方程 题解

看看数据范围,woc,什么鬼,让我在初中第一眼看见的时候惊呆了,然后留下了阴影。现在才补完。其实也不算太难。首先,我最先先到的就是在一个模大质数的意义下解,复杂度就成O(mn)的了,再用两个比较大的质数同时做,如果这样都wa的话就没办法了(几率太小)。不过,这样是过不了最后两个点的,怕是这样只能O(wys)了233。但是,我们可以改进一下思路,先选取一个比较小的质数p,算它的答案,假设为x,那么(x

2017-10-24 23:00:15 575

原创 [noip2014]寻找道路 题解

emmmm,按照题意来做就好了。首先,我们反向建边,从终点开始搜索,看能到哪儿些点,记录一下,再正向建边,看有哪儿些点连了这些点,把它们都排除就好了。剩下的就是裸的最短路了。#include<bits/stdc++.h>#define N 10000#define M 200000using namespace std;int n,m,s,t,inf;int x[M+5],y[M+5];

2017-10-24 22:53:11 427

原创 [noip2014]无线网络发射器选址 题解

模拟题不要太简单,枚举每一个2d*2d的正方形,看有几个点在里面就好了。看一个点是否在正方形中,看一看坐标关系就好了。#include<bits/stdc++.h>using namespace std;int d,n,x[25],y[25],k[25],mx,sum,tot;int main(){ freopen("in.txt","r",stdin); scanf("%d

2017-10-24 22:49:50 607

原创 [noip2014]联合权值 题解

要距离为2,画一画图可以显然得到,就是每个点相连的每个点之间两两满足条件。现在问题就成了,已知n个数的值,a1,a2,a3……an,求a1*a2+a1*a3+……a1*an+a2*a1+a2*a3…………。然后稍微用一下数学公式,我们发现答案就是和的平方减去平方的和。最大值维护一个最大值和次大值就好了。#include<bits/stdc++.h> #define N 200000 using

2017-10-24 22:45:41 257

空空如也

空空如也

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

TA关注的人

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