自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2017.1.15【初中部 NOIP提高组】模拟赛B组

今天一开始以为没有B组,就去做C组。在比赛结束前一小时发现有B组,于是立刻来做,但已经来不及了,不然至少可以得100分。   T1:这题十分简单。首先找出所有agnus,设它们的数量为m,用g[i]表示第i个agnus的起始位置(也就是a的位置)。   然后我们有一个k来枚举当前子区间中包含的agnusd的个数,接着用一个i来枚举这k个agnus中的第一个,接着计算只包含这k个agnus的区间

2017-01-21 20:11:02 278

原创 2017.1.20【初中部 GDKOI】模拟赛B组

T1:由于没有强制在线,我们可以倒着做一遍。 设sum表示所有数的异或和,并且记录每一个点的左边的点和右边的点。那么我们倒着搜,每搜到一个点时,用sum减去它与他左边和右边的异或值,再加上它左边与右边的异或值,每次用ans异或sum就行了。 T2:题解待更新。 T3:公式: m=m/2; f[0]=1,f[1]=0,f[i]=(i*2-1)*f[i-1]+f[i-2]

2017-01-21 20:02:37 276

原创 2017.1.19【初中部 GDKOI】模拟赛B组

T1:直接暴力枚举即可。 T2:数据好像有漏洞,AC的程序去找lyl测测,他那里有可以让这个程序WA的数据。 T3:这题与12日的第四题有相似的地方。 枚举右下角,用单调栈维护这个点左上方的障碍(行排成降序)。在计算这个点对答案的贡献时,就是计算它当前以单调栈里的障碍为上边界的矩形的面积。 T4:二分答案,然后用SPFA判断答案是否可行。但单单用SPFA判断会超时,

2017-01-21 19:35:26 287

原创 2017.1.21【初中部 GDKOI】模拟赛B组

今天的比赛翻车了,40+10+0=50,排得很后。主要原因是第三题没有认真思考,以为自己不会,其实只要再认真想一想就可以了。 T1:这题有一个十分巧妙的方法。 因为给出的图是连通、无环且没有重边的,所以我们可以认为给出的图是一棵树。首先,我们把所有点的祖先都设为1节点。然后在每删除一条边时,就把这条边连接的深度较深的节点及其子树的祖先都赋为这个节点。在查询两个节点是否连通时,就直接判断它们的祖

2017-01-21 19:04:34 311

原创 2017.1.18【初中部 GDKOI】模拟赛B组

T1:我们可以枚举出n的因数,设这个因数为i,f(i)表示1到i-1与i互质的所有数的和。关键是怎样求出f(i)。我们首先要知道一个性质:如果x与i互质,那么i-x一定与i互质。 那么f(i)=i*phi(i)/2,phi(i)表示1到i-1直间与i互质的数的个数。这条公式的意义为:有phi(i)个数,而它们中间有phi(i)/2对数的和为i,所以它们的和为i*phi(i)/2。phi(i)是欧

2017-01-18 22:22:24 284

原创 2017.1.17【初中部 GDKOI】模拟赛B组

T1:直接用克鲁斯卡尔,不过在克鲁斯卡尔之前要把原来就有边的点连起来。 T2:直接广搜。 T3:题解待更新 T4:用dfs从两边往中间搜,如果两边不等,则选较小的那一边。如果两边相等,则用一个循环从两边往中间搜,谁先遇到较小的就选谁。如果一直到中间都相等的话,则任意选。

2017-01-18 22:16:53 179

原创 2017.1.16【初中部 GDKOI】模拟赛B组

今天早上做着做着XC突然叫我去做小学生的题,耗了一个多小时,回来再做B组时,就没有时间了。 下面是总结: T1:比赛时用了暴力,因为忘了mod所以0分。正解:树形dp。 我们用一个dfs从根节点往下搜,设f[i]表示第i个节点到它任意一个子节点的路径乘积的和,c[i]表示从i节点的任意一个子节点到i节点,再到i的另一个子节点的路径乘积的和。 然后我们枚举i的子节点,设枚举到的子节点为x,那

2017-01-18 07:41:39 253

原创 线段树基础总结

线段树程序分为三个部分:构造树、修改和查询。 其中,构造树的程序十分简单,结构如下: dg(左端点,右端点、当前节点) if(当前区间只有一个点)直接把当前节点的赋为这个点 else {   dg(左端点,中端点,左节点);//左子树   dg(中端点,右端点,右节点);//右子树   当前节点=左节点和右节点中最优的 } 而修改和查询则要根据题目不同来确定,下面是练习的两道题

2017-01-14 20:32:45 185

原创 2017.1.14【初中部 GDKOI】模拟赛B组

T1:这题就是一个纯的克鲁斯卡尔,但是比赛时出现了以下问题。 1、粗心,把一个x搞成y。 2、我的标记方法有问题,处理不了0的情况。 3、并查集的基本打法不会,搜索父亲时要顺带把自己的标记纸箱祖先。 T2:预处理出f[i][j](第j列1至i行的和),然后枚举奶牛位置,用一个循环求出这个位置的值,选出最大。 T3:这题一开始看不会,后来想了一下就觉得十分简单。 用当前牧

2017-01-14 15:40:18 276

原创 2017.1.12【初中部 GDKOI】模拟赛B组

T1:这题有一个十分巧妙的方法。 我们把每个f(n,x)称为x对答案的贡献,那么我们可以根据每个x对答案的贡献吧所有的x分成多段,每段里的f(n,x)相同,那么我们只需知道每段的两端的位置,就可以求出这一段的答案,把每一段的答案加起来就是最终答案。现在问题变成了如何求每一段的头、尾和贡献值。 设现在要求的一段的头位置为x1,尾位置为y1,贡献值为z1,前一段的这三个值为x0,y0,z0。 那

2017-01-13 21:13:02 313

原创 2017.1.13【初中部 GDKOI】模拟赛B组

今天比赛有点不在状态,所以成功地垫底了。 T1:比赛时怎么想都想不出来,知道正解后才发现如此简单。。。 我们知道,想删掉朝向向左的花,最优一定是从右往左删这些花,同理,想删掉朝向向右的花,最优一定是从左往右删这些花。然后我们可以计算一下先删左和先删右的值,最后选出最小。 比赛时想得太复杂了,下次要注意做题时不要急着想算法,要先想题目一些隐藏的性质。 T2:比赛时已经想对了,就差一个

2017-01-13 20:36:32 365

空空如也

空空如也

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

TA关注的人

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