
1251-1500
Mmh2000
这个作者很懒,什么都没留下…
展开
-
1500: [NOI2005]维修数列
题目链接题目大意:维护一个数列,支持一堆操作(懒得写了)题解:上fhq treap……我的收获:2333#include <cstdio>#include <queue>#include <cstdlib>using namespace std;#define N 500010#define INF 0x3f3f3f3fint n,m,root,cnt;int ch[N][2],siz[N原创 2018-03-26 20:09:24 · 295 阅读 · 0 评论 -
1483: [HNOI2009]梦幻布丁
2原创 2017-07-24 21:55:26 · 452 阅读 · 0 评论 -
1264: [AHOI2006]基因匹配Match
题目链接题目大意:给定n个数和两个长度为n*5的序列,两个序列中的数均由1..n组成,且1..n中每个数恰好出现5次,求两个序列的LCS题解:考虑LCS的性质 LCS的决策+1的条件是a[i]==b[j] 于是我们记录a序列中每个数的5个位置f[i]表示以a[i]为末尾的最长公共子串长度(避免讨论)f[i]表示以a[i]为末尾的最长公共子串长度(避免讨论)依次处理b[i],找到5个位置转移,f[k原创 2017-07-23 10:33:32 · 814 阅读 · 1 评论 -
1269: [AHOI2006]文本编辑器editor
题目链接题目大意:模拟文本编辑器,支持移动光标,区间删除插入翻转题解:为rope而生,翻转操作维护一正一反两个rope,交换其字串。这样大概是O(n)……题目中限制了翻转次数,所以跑的飞快我的收获:强啊#include<cstdio>#include<iostream>#include<ext/rope>#include<algorithm>using namespace std;usin原创 2017-06-24 11:32:55 · 458 阅读 · 0 评论 -
1497: [NOI2006]最大获利
题目链接题目大意:N个地方,在i处建立通讯中转站需要的成本为Pi。M个用户,第i个用户会使用中转站Ai和中转站Bi进行通讯,公司可以获益Ci。求净获利最大值题解:最大权闭合子图模板令sum=∑i=1ncisum=\sum\limits_{i=1}^{n}c_i,现在最小化损失最小割建图对用户i,连(st,i,ci),表示割断用户i的损失对用户i,连(st,i,c_i),表示割断用户i的损失 对中转原创 2017-08-09 21:46:24 · 476 阅读 · 0 评论 -
1305: [CQOI2009]dance跳舞
题目链接题目大意:给定n个男生和n个女生,一些互相喜欢而一些不,举行几次舞会,每次舞会要配成n对,不能有相同的组合出现,每个人只能与不喜欢的人跳k次舞,求最多举行几次舞会题解:将一个人x拆成两个点,分别为lx和dx,表示喜欢/不喜欢对男孩连(lx,dx,k),表示消耗了一次跟不喜欢的人的跳舞机会连(lx,dx,k),表示消耗了一次跟不喜欢的人的跳舞机会 连(st,lx),容量待定连(st,lx),原创 2017-08-12 16:20:56 · 435 阅读 · 0 评论 -
1406: [AHOI2007]密码箱
1原创 2017-08-15 23:25:49 · 263 阅读 · 0 评论 -
1499: [NOI2005]瑰丽华尔兹
题目链接题目大意:给定一个m*n的地图,一些点有障碍物,钢琴初始在一个点,每个时间段可以选择向给定的方向移动一段距离,求最长路径长题解:钢琴的移动方向在一段时间内相同,f[t][i][j]表示t段时间在(i,j)的最长路程,首先有题解:钢琴的移动方向在一段时间内相同,f[t][i][j]表示t段时间在(i,j)的最长路程,首先有f[t][i][j]=max{f[t−1][ilast][jlast]+原创 2017-08-28 14:27:00 · 329 阅读 · 0 评论 -
1261: [SCOI2006]zh_tree
题目链接题目大意:建一颗树,要求中序遍历为(1,2,3,…,n) 每个点有点权,有一个代价为点权*k(r+1)+c,r为深度 最小化代价 题解:容易看出给出的序列就是中序遍历,那么可以转化成区间dp,转移的时候枚举根,注意要枚举到[l,r],因为左右子树可以为空树我的收获:基础知识忘光了……#include <iostream>#include <cstdio>#include <cstr原创 2017-08-27 09:00:54 · 604 阅读 · 0 评论 -
1426: 收集邮票
题目链接题目大意:有n种不同的邮票,收集所有种类的邮票,每次可以买一张,第i次购买买到n种邮票等概率,花费i元,求期望题解:真心跪啊ORZ题解我的收获:推式子神题#include<iostream>#include<cstdio>#include<algorithm>#include <cmath>#include <cstring>using namespace std; int n原创 2017-08-26 09:26:41 · 333 阅读 · 0 评论 -
1477: 青蛙的约会
题目链接题目大意:数轴上两只青蛙分别从X,Y出发,一个一次跳m米,一个一次跳n米,L米后回到原点,求几次碰面题解:X+am≡Y+an(modL)X+am\equiv Y+an(\mod L),求解a 整理一下a(m−n)≡Y−X(modL)a(m-n)\equiv Y-X(\mod L) 变成不定方程a(m−n)+kL=Y−Xa(m-n)+kL=Y-X 然后扩展欧几里得求最小正整数解 m<<原创 2017-10-19 17:44:14 · 351 阅读 · 0 评论 -
1304: [CQOI2009]叶子的染色
题目链接题目大意:m个结点的无根树,可以选择一个度数大于1的结点作为根,然后给一些结点着黑/白色,着色需要保证根结点到每个叶子的简单路径上都至少包含一个有色结点,给出根到每个叶子路径上最后一个有色节点的颜色,最小化着色点数题解:如果确定了根,只需要dp一下就可以求出答案了 f[i][0/1]表示以i为根的子树,i为0/1的代价可以随便选一个非叶子节点为根…… Orz我的收获:#include <原创 2017-10-19 17:33:54 · 594 阅读 · 0 评论 -
1297: [SCOI2009]迷路
题目链接题目大意:n 个节点的有向图,求从1到n的长度为T的路径条数题解:拆点+矩阵乘法我的收获:2333#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 100 #define MOD 2009 #define P(i,j) (((j)-1)*m+(原创 2018-03-22 12:21:07 · 273 阅读 · 0 评论 -
1485: [HNOI2009]有趣的数列
75474574原创 2018-03-20 22:21:05 · 290 阅读 · 0 评论 -
1336/1337/2823 最小圆覆盖
题目链接题目大意:RT题解:随机增量法……设圆CiC_i表示前i个点的最小覆盖圆,当加入点i时,若其在Ci−1C_{i-1} 外则说明CiC_i肯定经过第i个点,以点0和点i确定CiC_i然后再从前i个点中找到类似的j,前j个点中找到类似的k,三点定圆求三角形外心可以直接按照定义…… 最小圆必定是可以通过不断放大半径,直到所有以任意点为圆心,半径为半径的圆存在交点,此时的半径就是最小圆。所以上原创 2018-02-23 14:34:35 · 298 阅读 · 0 评论 -
1299: [LLH邀请赛]巧克力棒
题目链接题目大意:TBL和X用巧克力棒玩游戏。每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。TBL先手两人轮流,无法操作的人输。 他们以最佳策略一共进行了10轮(每次一盒)。你能预测胜负吗?题解:By hzwer先手必胜的方法: 先从n根巧克力棒中取出m(m>0)根,使得这m根巧克力棒的xor和为0(也就是把nim游戏的必败状态留给对方),同时使得剩下的n-m根原创 2018-02-18 23:02:22 · 331 阅读 · 0 评论 -
1449/2895: [JSOI2009]球队收益
题目链接题目大意:nn支球队,球队的支出和胜负场次有关,具体来说,第i支球队的赛季总支出是Ci∗x2+Di∗y2C_i*x^2+D_i*y^2,其中x,yx,y分别表示这只球队本赛季的胜负场次。 现在赛季进行到了一半,每只球队分别取得了aia_i场胜利和bib_i场失利。而接下来还有mm场比赛要进行。问联盟球队的最小总支出是多少。题解:输赢都会带来收益…… 可以假设初始每只队伍都输,算出初始收益原创 2018-02-04 11:12:01 · 247 阅读 · 0 评论 -
1359: [Baltic209]Candy
题目链接题目大意:tan90°题解:不存在的我的收获:如何快速升级?原创 2017-12-15 21:30:50 · 291 阅读 · 0 评论 -
1469: Sgu Snake
题目链接题目大意:……题解:……我的收获:emmmmmm~~~原创 2017-12-22 10:48:32 · 240 阅读 · 0 评论 -
1270: [BeijingWc2008]雷涛的小猫
题目链接题目大意:n棵高为H的树,树上某些位置有柿子。猫从任意树出发,可以下降一格或到另一棵树上(下降d格),求吃到柿子的最大值题解:f[i][j]f[i][j]表示在第i棵树,高度为j的最优答案 转移就是题目中的两种,1.下降1格,即f[i][j+1] 2.从另一棵树跳过来,下降d格。维护一个mx[i],表示高度为i时所有树的最优答案,然后直接转移即可(显然从自己所在的树往下直接下降d格是不优原创 2017-12-21 21:14:42 · 239 阅读 · 0 评论 -
1306: [CQOI2009]match循环赛
题目链接题目大意:循环赛,给出所有队伍的最终得分,求方案数题解:n只队伍共n*(n-1)/2场比赛,理论复杂度3283283^{28},显然不科学 玄学剪枝1.若x的目前得分超过最终得分则剪枝 2.若x剩余比赛全胜也无法达到最终得分则剪枝 3.用最终得分-目前得分直接计算出x最后一场比赛的应得分,看上去没什么用,但是由于搜索树最后一层节点最多,实际效果不错我的收获:剪枝大法...原创 2017-10-25 21:26:32 · 598 阅读 · 0 评论 -
1296: [SCOI2009]粉刷匠
题目链接题目大意:给定n*m的木板,每个点需要刷成1和0两种颜色之一,每次只能刷一行中连续的一段,一个点只能刷一次,求T次刷子最多能刷对多少个点题解:dp 各行独立,互不影响,对每行处理数组f[i][j]表示这一行前i个刷j次能覆盖的最多格子数,这个可以O(m^3)求,具体就是枚举分割点k,使用前k个的信息更新[k+1,r]的信息,所以0≤k<r0≤k<r0\leq k然后需...原创 2017-08-24 20:11:27 · 456 阅读 · 0 评论 -
1334: [Baltic2008]Elect
题目链接题目大意:N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党的席位仍大于总数的一半,则这个政党被称为是多余的,这是不允许的.题解:从大到小排序后01背包,这样满足了拿走当前的,剩下的一定不会超过总数的一半,注意状态只能从[1,sum/2]中转移。我的收获原创 2017-08-24 19:31:47 · 318 阅读 · 0 评论 -
1482: 可以看到的树
题目链接题目大意:跟SDOI仪仗队差不多,实际上是求gcd(i,j)=1的个数题解:不存在的我的收获:python 2B代码(两个空格)原创 2017-06-08 23:07:30 · 377 阅读 · 0 评论 -
1263: [SCOI2006]整数划分
题目链接题目大意:题解:假设已有最优拆分序列,其中显然没有1。若有4,可以换成2*2,若有5,可以换成2*3,若有6,可以换成3*3……且可以发现3*3优于2*2*2.以此类推,当n%3==0时,分成n/3个3. 当n%3==1时,分成n/3-1个3和2个2. 当n%3==2时,分成n/3份3和一个2 可以用严谨的数学归纳法证一下我的收获:有种小学奥数的感觉……#include <iostre原创 2017-05-07 19:02:04 · 438 阅读 · 0 评论 -
1455: 罗马游戏
题目链接题目大意:集合合并与删去集合内最小值。题解:并查集维护,然后就是可并堆裸题啦我的收获:斜堆模板……#include <iostream>#include <cstdio>using namespace std;#define M 1000005int n,m,fa[M],c[M][2],k[M];bool die[M];int fid(int x){return fa[x]==x?x原创 2017-05-12 19:50:48 · 283 阅读 · 0 评论 -
1259: [CQOI2007]矩形rect
题目链接题目大意:求沿着网格线把一个矩形分成分空的两部分,每部分所有格子连通,且至少有一个格子在原矩形的边界上的方案数题解:插头dp?打表!我的收获:Orz clj#include <cstdio>#include <cstring>#include <cstdlib>int ans[7][8] = { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 2,原创 2017-05-21 19:40:02 · 581 阅读 · 0 评论 -
1355: [Baltic2009]Radio Transmission
题目链接Orz题目大意:给你一个字符串,它是由某个字符串不断自我连接形成的长串的子串。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.题解:kmp,ans=len-nex[len],可以分n-fail[n]>=n/2和n-fail[n]原创 2017-03-05 20:22:42 · 461 阅读 · 0 评论 -
1412: [ZJOI2009]狼和羊的故事
题目链接题目大意:矩阵中有0,1,2,将1和2隔开,0随意,求最小代价题解:最小割#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define INF 0x3f3f3f3fconst int M=10005;const int dx[]={0,1原创 2017-03-15 20:45:01 · 379 阅读 · 0 评论 -
1266: [AHOI2006]上学路线route
题目链接题目大意:给出一个无向图,每条边有长度和代价。求出1到n的最短路。删掉一些边使得1到n的最短路变大并使得删掉边的代价之和最小。题解:求出最短路树,然后建图跑最小割就行了(一种方法是if(d[to]==d[fro]+v)后建边,另一种是 if (f[s][fro]+v+f[to][n]==f[s][n])建边 ),似乎后者限制了s-n的最短路,前者是完整的最短路树。有时间比较一下差异dalao原创 2017-03-01 23:26:11 · 499 阅读 · 0 评论 -
1486: [HNOI2009]最小圈
题目链接题目大意:求平均权最小的环题解:二分+dfs式spfa判负环#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define INF 0x3f3f3f3f#define eps 1e-9const int M=3005;int m,n,t;int head[M];double z原创 2017-03-05 08:43:46 · 359 阅读 · 0 评论 -
1303: [CQOI2009]中位数图
题目链接题目大意:题解:我的收获原创 2017-06-04 21:00:37 · 308 阅读 · 0 评论 -
1430: 小猴打架
题目链接题目大意:n个点,求构成生成树的方案数题解:首先需要知道prufer编码相关知识,然后就变成裸题了……我的收获:get#include <iostream>#include <algorithm>using namespace std;const int P=9999991;int n;long long ans=1;int main(){ cin>>n; for(原创 2017-05-31 20:41:51 · 311 阅读 · 0 评论 -
1295: [SCOI2009]最长距离
1原创 2017-08-02 23:27:52 · 315 阅读 · 0 评论 -
1491: [NOI2007]社交网络
题目链接题目大意:n点m边无向图,Cs,t表示从s到t的不同的最短路的数目,Cs,t(v)表示经过v从s到t的最短路数目 求每个点的I题解:比较naive的最短路计数问题 w[i][j]表示i−−j的最短路长度w[i][j]表示i--j的最短路长度 p[i][j]表示i−−j的最短路条数p[i][j]表示i--j的最短路 条数对p[][]的计算需要用乘法原理,这个比较显然然后枚举每个点,计原创 2017-08-06 22:04:09 · 405 阅读 · 0 评论 -
1260: [CQOI2007]涂色paint
题目链接题目大意:给木板涂色,一次可以给[l,r]涂上相同的颜色,求涂成目标状态的次数题解:区间dp f[l][r]f[l][r]表示[l,r][l,r]压缩后最短长度,初始值f[l][r]=r−l+1f[l][r]=r-l+1 转移:枚举区间分割点k,l≤k<rk,l \leq k <r f[l][r]=f[l][k]+f[k+1][r]f[l][r]=f[l][k]+f[k+1][r],合原创 2017-07-23 10:58:07 · 518 阅读 · 0 评论 -
1433: [ZJOI2009]假期的宿舍
题目链接题目大意:给定一些人,有些人是在校学生,有些去学校探访,在校学生有些回家,一个人只能睡认识的人的床,求能不能睡下题解: 最大流: 增加源s,连(s,i,1),其中i为每个有床的人 增加汇t,连(j,t,1),其中j为每个需要床的人 连(i,j,1),其中j可以睡i的床 判断是否满流即可但是这题明显是二分图啊…… 二分图:左侧点外校的和不回家的本校学生(他们需要床),右侧点为所有床原创 2017-07-23 15:09:10 · 258 阅读 · 0 评论 -
1432: [ZJOI2009]Function
题目链接题目大意:构造一个奇怪函数,最小化其组成段数题解:跪啊 丢链接跑 1,2我的收获:手玩,画图#include<cstdio> #include<iostream> using namespace std; int main(){ int n,k; scanf("%d%d",&n,&k); printf("%d\n",(n==1)?1:min(k,n-k+1原创 2017-07-24 21:55:51 · 274 阅读 · 0 评论 -
1257: [CQOI2007]余数之和sum
题目链接题目大意:给出一个数列(初始为空),给出一个最小值Min,当数列中的数字小于Min时自动删除。四种操作:(1)数列中增加一个元素,设置初始值x;若x小于Min则不插入;(2)所有的元素增加一个值det;(3)所有的元素减小一个值det;此时有可能有一些会被删除(4)询问目前所有元素中第K大的。最后输出删除了多少个。题解:因为增加减少的操作是对于所有元素的,用一个全局标记tmp记录。 每插入原创 2017-07-18 19:09:25 · 318 阅读 · 0 评论 -
1468: Tree
题目链接题目大意:询问树上距离小于等于k的点对数题解:点分治,抄抄板子就会了我的收获:点分治T1 get#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int M=10...原创 2017-07-19 23:19:35 · 326 阅读 · 0 评论