BZOJ刷题记录(2014)

            BZOJ刷题记录(2014年)

1000: A+B Problem

  太神不会。。

1001: [BeiJing2006]狼抓兔子


平面图转对偶图,然后SPFA求最小割

1002: [FJOI2007]轮状病毒
  分三类讨论,可DP,需要高精度。
 
设f[n]表示第n个原子和中心相连的病毒数,g[n]表示第n个原子不和中心相连的病毒数,那么最后的结果就是f[n]+g[n]。同时还需要一个辅助的表达式h[n],表示将环变成一条直链(首尾没有直接相连的线)后的病毒数(用h[n]去推其他表达式的时候可以看作是第n个原子和第1个原子不连线,而在计算h[n]的时候实际上也可以看成是第n-1个原子和第n个原子之间不连线,这样更容易得到h[n]=f[n-1]+2*h[n-1]-h[n-2]

    那么有:

    f[n]= 2*f[n-1]+h[n-1]-h[n-2]

    g[n]=f[n-1]+g[n-1]+h[n-1]

    h[n]=f[n-1]+2*h[n-1]-h[n-2]


1003: [ZJOI2006]物流运输trans

  直接暴力DP即可


1004: [HNOI2008]Cards

置换群Polya定理+DP F[I,J,K]=F[I-C[T],J,K]+F[I,J-C[T],K]+F[I,J,K-C[T]]


1005: [HNOI2008]明明的烦恼


将树转化为prufer编码,
 n为树的节点数,d[ ]为各节点的度数,m为无限制度数的节点数。
则             
(图片挂了)

所以要求在n-2大小的数组中插入tot各序号,共有
(图片挂了)

种插法;
在tot各序号排列中,插第一个节点的方法有
(图片挂了)
种插法;
                           插第二个节点的方法有
(图片挂了)
种插法;
                                      .........
另外还有m各节点无度数限制,所以它们可任意排列在剩余的n-2-tot的空间中,排列方法总数为
(图片挂了)
 
根据乘法原理:
(图片挂了)
 
 
然后就要高精度了.....但高精度除法太麻烦了,显而易见的排列组合一定是整数,所以可以进行质因数分解,再做一下相加减。

1006: [HNOI2008]神奇的国度

¨弦(chord):连接环中不相邻的两个点的边。

¨弦图(chordalgraph):一个无向图称为弦图当且仅当图中任意长度大于3的环都至少有一个弦。

¨单纯点(simplicialvertex):设N(v)表示与点v相邻的点集。一个点称为单纯点当{v} + N(v)的诱导子图为一个团。

¨完美消除序列(perfect elimination ordering):这是一个序列{v[i]},它满足v[i]在{v[i..n]}的诱导子图中为单纯点。

¨弦图的判定:存在完美消除序列的图为弦图。可以用MCS最大势算法求出完美消除序列。

¨最大势算法 Maximum Cardinality Search

·从n到1的顺序依次给点标号(标号为i的点出现在完美消除序列的第i个)。

·设label[i]表示第i个点与多少个已标号的点相邻,每次选择label[i]最大的未标号的点进行标号。

¨判断一个序列是否为完美消除序列

·设{vi+1,…,vn}中所有与vi相邻的点依次为vj1,…, vjk。只需判断vj1是否与vj2,…, vjk相邻即可。

¨本题就是用最少的颜色给每个点染色使得相邻的点染的颜色不同。

¨完美消除序列从后往前依次给每个点染上可以染的最小的颜色。

1007: [HNOI2008]水平可见直线 

  把直线按照斜率排序,然后从小到大依次进栈。

  记两直线交点的横坐标为x(A,B),则x(now,top)<=x(top,top')时,栈顶直线被废,弹出栈。

  反复这样操作,直至不满足上面的条件,将当前直线压入栈中。

  最后在栈中的直线就是答案。

1008: [HNOI2008]越狱

 快速幂。。
 

1009: [HNOI2008]GT考试

 F[I,J]为长为I位的数列后J个数字为AN前J项的方案数,预处理出状态之间的转移系数之后直接矩阵快速幂 


1010: [HNOI2008]玩具装箱toy
 

  DP斜率优化 
,这是个坑..
 

1011: [HNOI2008]遥远的行星

  貌似正解是求一个近似解??太神不会。


1012: [JSOI2008]最大数maxnumber
 

  敲线段树了。。。
 

1013: [JSOI2008]球形空间产生器sphere

 高斯消元解方程。。没了 

1014: [JSOI2008]火星人prefix
  
splay来维护区间HASH值。。。一直T。。。无奈了。。 

1015: [JSOI2008]星球大战starwar

 

  离线后倒着处理查询。。用并查集合并连通分量

 

1016: [JSOI2008]最小生成树计数

 

  显然边权相同的边可以划分为同一阶段,然后枚举出没一阶段的方案数,最后相乘即可。

 

1017: [JSOI2008]魔兽地图DotR

 丧心病狂的树形DP。。。。。

 F[I,J,K]表示第I个物品为根,需要制作J个父亲,共花费K的最大价值,还需要辅助数    组G[I,J,K]表示前I个儿子需要制作J个父亲的父亲花费为K的最大价值。。。TLE了好久。。。

 

1018: [SHOI2008]堵塞的交通traffic

 

 丧心病狂的线段树,用线段树维护各个矩形的四点连通性,真难调试

1019: [SHOI2008]汉诺塔

 其实直接找规律推公式就行了。。。也可以DP,明显DP更有意思。

1020: [SHOI2008]安全的航线flight

   以后补上

1021: [SHOI2008]Debt 循环的债务

   DP,6枚硬币分阶段DPI,J,K分别表示三人现有的资金,每阶段枚举硬币交流方案即  可。

1022: [SHOI2008]小约翰的游戏John
 

   神奇的组合游戏,代码奇短。
 

1023: [SHOI2008]cactus仙人掌图
 

 TARJAN缩点+DP,F[I]表示以I为根向下最多延展的长度,割点和环上点单独处理,环上点可以用 单调队列来O(N)处理。


 

1024: [SCOI2009]生日快乐
 

  真的直接DP就行了

 

1025: [SCOI2009]游戏
 

  问题等价于求和为N的正整数数列最小公倍数的个数,继续DP,F[I,J]表示前I个素数可以构成的各组分和小于J的公倍数数量,枚举第I个用几次,最后答案为F[TOT,N]
 

1026: [SCOI2009]windy数

  F[I,J]J位第I位为I的方案数,然后从前往后推就行了。。。

1027: [JSOI2007]合金
 

  把原料和目标都看成平面上的点,前两个参数分别是横纵坐标,则当且仅当目标金属在原料围成的凸包内时有解,叉积判断每两点之间的连线是否有意义,FLOYD求最小环,ANS12的情况要特判。
 

1028: [JSOI2007]麻将
 

  枚举出所有情况后贪心判断,输出格式有问题让我调了一节课此奥。

 
1029: [JSOI2007]建筑抢修
 

   贪心,当前物品可以放时就放,不能方时判断是否可以代替之前放过的最大物品,用堆维护。
 

1030: [JSOI2007]文本生成器
 

   和COGS 上那道数据范围不一样。。。AC自动机上DP。明明数组开小了BZOJ上却提示超时。。

 

 

1031: [JSOI2007]字符加密Cipher
 

  裸的后缀数组模板题,太弱不会基数排序用了快排。。
 

1034: [ZJOI2008]泡泡堂BNB
 

 田忌赛马贪心模型,弱能赢弱强能赢强则赢,否则用己弱对对方强。
 

1037: [ZJOI2008]生日聚会Party
 

 挺明显的DP。。F[I,J,K1,K2]表示前I个人中有J个男生,其中后缀中男生最多比女生多K1人,女生最多比男生多K2

1040: [ZJOI2008]骑士
 

 同1023..TARJAN缩点+DP,环上要做两次DP。
 

1041: [HAOI2008]圆上的整点
 

 让人心烦的数学题。。网上的题解

 首先让我们一起来推下公式:

 

 x^2+y^2=r^2

   y^2=r^2-x^2

   y^2=(r-x)(r+x)

 

 到这里为止应该都很容易想到,接下来是关键

 设d=gcd(r-x,r+x)

 设r-x=d*A

  r+x=d*B

  y^2=d^2*AB

 解释下,d已被提出,所以gcd(A,B)=1

 而进一步,因为y^2=d^2*A*B,而gcd(A,B)=1

 所以,我们可以这样表示:

 A=a*a

 B=b*b

 (a<>b)

 (因为y^2是平方数,d^2是平方数,所以可以这样化过来)

 ∴ r-x=d*a^2  ①

    r+x=d*b^2  ②

 ①+②得 2r=d*(a^2+b^2)

 d是2r的约数,所以我们可以用sqrt(2r)的时间枚举d,求出好多对d

 我们设

 d=d

 d0=(2r)/d

 我们可以用(sqrt(d)+sqrt(d0))的时间来枚举a,求出b,来对这一对d求解
 

1042: [HAOI2008]硬币购物
 

  我交的第一道题。。记得是DP+容斥原理。
 

1045: [HAOI2008] 糖果传递
 

 又是无爱的数学题。。水过
 

1046: [HAOI2007]上升序列
 

 N*LOGN 的预处理然后贪心
 

1047: [HAOI2007]理想的正方形
 

 单调队列。。
 

1051: [HAOI2006]受欢迎的牛
 

 TARJAN求强连通分量,可以证明如果有解则一定是求得的第一个强连通分量。
 

1053: [HAOI2007]反素数ant
 

 无爱的数学题。。搜索水过了。。
 

1056: [HAOI2008]排名系统
 

 这道题我用TREAP和SPLAY分别打了一遍。。随机提根的SPLAY效果更好。。但TREAP很好打的说
 

1079: [SCOI2008]着色方案
 

  灰常神奇的DP,分别把剩余数量相同的颜色化为一类,状态中要表示出上次使用的是哪一种,然后DP。。
 

1087: [SCOI2005]互不侵犯King
 

 状压DP,DFS预处理。。
 
 

1211: [HNOI2004]树的计数

 同1005.

1494: [NOI2007]生成树计数
 

 基于连通性的状态压缩动态规划,蒟难打。。
 

1050: [HAOI2006]旅行comf
 

   暴力枚举解所在的区间>_<太弱这个都没想到。。。
 

1059: [ZJOI2007]矩阵游戏
 

  果然是太弱了>_<没看出来是二分图匹配。。。。
 

1061: [Noi2008]志愿者招募
 

   神一般的构图。。。。把不等式与网络流相联系。。。。每个等式抽象成一个点,求一遍最小费用最大流~
 

1067: [SCOI2007]降雨量
 

   好WS的题。。。当做练习RMQ好了
 

1588: [HNOI2002]营业额统计
 

  平衡树水题。。
 

1798: [Ahoi2009]Seq 维护序列seq
 

  因为矩阵也满足结合率。。套上线段也符合区间加法
 

2002: [Hnoi2010]Bounce 弹飞绵羊
 

  暴力分块。。。这题很萌的说
 

2661: [BeiJing wc2012]连连看
 

  KM裸题。。。太弱不会KM敲费用流了。。。
 

2730: [HNOI2012]矿场搭建
 

   好题啊好题,TARJAN求出所有割点,断开之后计算有几个联通块之和一个割点相连。
 

2326: [HNOI2011]数学作业
 

 矩阵快速幂
 

3171: [Tjoi2013]循环格
 

 费用流。。。可知每个点的出入度应该均为1。。。然后构图巴拉巴拉

你可能感兴趣的:(ACM)