zoukankan      html  css  js  c++  java
  • #1

    由于自己太懒不想一篇一篇写题解。于是就准备写很久的题再一次发一次题解。大概囤50道就发一次?

    还有几十天就退役了看看能囤几波吧TAT。。

    这次囤了50题,虽然不都是BZOJ的QwQ。

    Problem 2728. -- [HNOI2012]与非 

    有A nand A = not A,not ( A nand B ) = A and B,这样所有的位运算都可以算出来了。而如果对于A里的每一个数有一些位都是一样的话,那么这些位无论怎么运算最后都是一样的要么都是0要么都是1,这样我们可以只把本质不同的位拿出来数位dp一遍就可以了。

    Problem 2729. -- [HNOI2012]排队

    组合数学+高精度。(把老师和男同学放在一起然后让女同学插进序列中。。)

    Problem 1092. -- [SCOI2003]蜘蛛难题

    恶心模拟题。

    Problem 2727. -- [HNOI2012]双十字

    扫描线+树状数组

    Problem 2731. -- [HNOI2012]三角形覆盖问题

    因为三角形是等腰三角的,可以从下往上扫描,每次答案累加一些梯形的面积。扫描线扫到一个新的高度时,把底边在这个高度的三角形加进去,把原来在处理的三角形的底--,如果减完为0,那么这个三角形就可以删掉了。

    把一些被包含的三角形去掉,用个双向链表维护扫描线的过程就可以AC了

    Problem 2734. -- [HNOI2012]集合选数

    状压dp。可以列出这样一张表,第一行是1,3,9……3^n,第二行是2,6,18,……2*3^n,在这张表中相邻的数字不能同时取,经典的状压dp。

    然后把1和每一个质数(除了2,3)都这么做一遍累加起来就是答案了。时间复杂度O(lnn*logn*2^(log₃n)

    Problem 1444. -- [Jsoi2009]有趣的游戏

    精度要求很低嘛。。把AC自动机建出来,建出矩阵,直接跑许多遍矩阵乘法就可以了。(正解当然是高斯消元一遍。

    Problem 2553. -- [BeiJing2011]禁忌

    把AC自动机建出来然后因为要统计答案和,就新增一行一列,令b[cnt+1][cnt+1]=1,这样转移的时候答案就被累加起来了。这题卡精。。

    Problem 3322. -- [Scoi2013]摩托车交易

    才不是看到交易两个字才去写这题的呢!显然走的边是mst上的边,于是可以先做一遍mst。而且到达一个点的金块取决于手上有的金块和路径上的瓶颈边。

    逆序把每个点的limit算出来。(因为最后一个点出去的时候金块要是0)

    lim[n]=max(0,-b[ord[i]]),lim[i]=min(lim[i+1],MN(ord[i],ord[i+1])+max(0,-b[ord[i]]))

    然后正序跑一遍就可以了。

    Problem 1930. -- [Shoi2003]pacman 吃豆豆

    k取方格数? n太大优化建图:先拆点,如果有三个点x,y,z形成偏序的话,可以x’->y,y’->z,流量为2,费用为0,如果有两条流通过x,y,z而且这两条流不相交。然后让每个点x->x’,一条流量为1,费用为1,一条流量为1,费用为0,表示费用只算一次。

    Problem 2465. -- [中山市选2009]小球

    只要不看错题意就是水水的费用流

    Problem 2468. -- [中山市选2010]三核苷酸

    暴力预处理出所有的相同串,然后正面gang和式。

    2439: [中山市选2011] 序列

    用f[i]表示1~i中让数列单调递增的费用,g[i]表示i~n中让数列单调递减的费用。

    f[i]=f[i-1]+max(0,a[i-1]-a[i]+1),g[i]=g[i-1]+max(0,a[i+1]-a[i]+1)

    设让1~i单峰,ans[i]=max(f[j]-f[1],g[j]-g[i]);(就是说我让一边的某一个点增加的话,可以同时让右边一个点减少。等价于差分序列。在[l,r]中+1相当于差分后b[l]+1,b[r+1]-1,然后中间都没有变化。)

    可以发现决策点单调。而且i-1的决策点是<=i的决策点的。

    单调队列达到O(N)

    Problem 3996. -- [TJOI2015]线性代数

    把式子推一推就是个最大权闭合图。

    Problem 1190. -- [HNOI2007]梦幻岛宝珠

    分层dp。

    f[i][j]表示取了j个2^i,对于重量为a*2^i的直接做一遍背包。然后层与层之间再做一次背包。

    具体是这样的:考虑到我可以把第i位化成两个i-1位,f[i][j]=max(f[i][j],f[i][j-k]+f[i-1][min(sum[i-1],2*k+(s&bin[i-1]))]

    sum[i]表示第i位至多有多少个可以取到,除了题目给的点,还要预留出给之前的位置。

    这样推一遍就可以得到答案了。。(但是为什么我感觉我还是不是很懂。。

    Problem 2746. -- [HEOI2012]旅行问题

    求前缀的lcp。

    开始非常作死的写了个SAM。然后发现空间完全不够。。其实只要拿出fail树就可以了SAM还是AC自动机都是无所谓的。。

    Problem 2659. -- [Beijing wc2012]算不出的算式

    随便打个表找找规律就行了。

    Problem 1977. -- [BeiJing2010组队]次小生成树 Tree

    写个倍增乱搞。。

    Problem 1251. -- 序列终结者

    splay模板题

    Problem 1500. -- [NOI2005]维修数列

    splay模板题。(各种标记真心烦QwQ。。

    Problem 1507. -- [NOI2003]Editor

    我才不会告诉你我偷懒写了rope

    Problem 2006: [NOI2010]超级钢琴

    堆+rmq

    记录一个三元组(i,l,r)表示左端点为i,右端点在l,r取到的最大值,并记录右端点的位置pos。

    用优先队列维护这个值,每次(i,l,r)出队之后,让(i,l,pos-1),(i,pos+1,r)入队。

    然后区间最值写个RMQ。

    Problem 2631. -- tree

    lct模板题

    Problem 2257. -- [Jsoi2009]瓶子和燃料

    其实这是一道数论,由于ax+by=d,所以找出最大的d,使得有不少于k个数是它的倍数就行了。

    Problem 1567. -- [JSOI2008]Blue Mary的战役地图

    二维hash

    Problem 4413. -- [Usaco2016 Feb]Milk Pails.txt

    模拟题。

    Problem 1143. -- [CTSC2008]祭祀river

    最长反链=最小路径覆盖

    Problem 1826. -- [JSOI2010]缓存交换

    每次找最远的一定是最优的。因为懒得手写堆于是手写了个线段树

    Problem 1449. -- [JSOI2009]球队收益

    费用流。

    S连所有队伍,队伍连比赛,比赛连汇。队伍赢一场相当于赢一场+少输一场,所以可以让S->i,费用为C[i]*2*j-1-D[i]*2*(b[i]+sum-j+1),最后把答案加上比赛全输后获得的收益。

    Problem 1820. -- [JSOI2010]Express Service 快递服务

    非常暴力的dp

    Problem 1443. -- [JSOI2009]游戏Game

    如果1*2的骨牌能完全覆盖空位的话,那么后手必输(设选点的是后手)。那么就是对图黑白染色判断能否出现完美匹配。

    然后要输出方案,对于找不到匹配点的点,可以让它沿着交替路增广一遍,可以得到另外一个已经匹配的点,这两个点都可以被输出出来。

    Problem 1560. -- [JSOI2009]火星藏宝图

    由于绝对值不等式,对于点(i,j),比如它决策的那个点是在k列的话,只要符合条件,上面的点必定比下面的点优。

    然后就可以稍稍压一下状态数。。

    Problem 1819. -- [JSOI]Word Query电子字典

    在AC自动机上dfs一遍就可以了。

    Problem 1017. -- [JSOI2008]魔兽地图DotR

    非常神奇的树形dp。

    Problem 2007. -- [Noi2010]海拔

    平面图最小割转最短路。注意一下方向的问题。

    Problem 1491. -- [NOI2007]社交网络

    随便写个floyed

    Problem 2152. -- 聪聪可可

    无数人写树形dp,我写了个点分练手。。。

    Problem 2120. -- 数颜色

    我写的是分块暴力,被真正的暴力教做人了TAT

    Problem 3672: [Noi2014]购票

    点分治维护凸包。

    对于一个分治结构,把根到fa[rt]的这部分先分治,用它们来更新rt。这样我们就求出了根到rt的值。

    像cdq分治一样,这些点对分治结构中其他点都是有贡献的,让它们按dis-limit排序,每次都把它的符合要求的祖先加到栈里面维护凸包。

    这样的话在凸包里的点都可以作为当前点的决策。然后维护一个下凸包,把斜率在凸包上二分就好了。

    (注意因为我们是一次次找祖先,所以凸包上的点在x轴方向上是单调递减的,要反着做下凸包。

    Problem 1177. -- [Apio2009]Oil

    分成六种情况讨论。。。维护一下每个点的左上左下右上右下二维前缀和。然后YY下式子。。

    Problem 3675. -- [Apio2014]序列分割

    发现可以顺序统计答案,看出是斜率优化,然后就没有然后了。

    Problem 3514. -- Codechef MARCH14 GERALD07加强版

    啊这题好鬼畜。反正我是看题解的TAT。

    出现环的时候就把第一条在联通块的边弹掉,并记录下来。然后答案就是n-[l,r]中ntr[i]<l的个数(ntr[i]一开始都是0)。

    然后lct+主席树。

    Problem 1912. -- [Apio2010]patrol 巡逻

    找两次过1的最长路,然后第二次找的时候把第一次的最长路上的权值赋为-1。

    最长路=最长到儿子路径+次长到儿子路径。然后树形dp一下。

    Problem 3624. -- [Apio2008]免费道路

    题意是求一个生成树必须恰好包含k条白边。

    先把必须拓展的白边找出来,然后再扩展成k条,最后把其他的黑边补上。

    Problem 1411. -- [ZJOI2009]硬币游戏

    啊这题。。在隔壁KPM大爷的一遍遍提醒下我一遍遍认识到自己有多么的蠢。。在掉rating之后写这题真是爽。。

    变换2^x后a[i]=a[(i-2^x)%n]^a[(i+2^x)%n]。然后拿着S进行log(s)次变换就可以了。

    Problem 3033. -- 太鼓达人

    这个是个欧拉图。。。。然后爆搜找出欧拉回路就可以了。

    Problem 3289. -- Mato的文件管理

    莫队+逆序对个数

    Problem 2040. -- [2009国家集训队]拯救Protoss的故乡

    用树链剖分+线段树模拟一个费用流。

    Problem - 650B - Codeforces

    啊这题在比赛的时候并没有写出来啊哭。

    向右走一遍向左走一遍,向右走一段转身再向左走完,向左走一段转身再向右走完。

    恩O(n)枚举转折点跑一遍就可以了。。

    Problem - 650C - Codeforces

    这题觉得还是挺厉害的。先把同行同列中相同的数用个并查集并起来。然后对每行每列进行排序,把相邻的点(代表的并查集)用边连起来,通过dfs可以出来一个DAG。

    然后对这个DAG直接标号就可以了。

    一开始比较蠢写个vector都要强上迭代器,被KPM怒D真是开心。。。

  • 相关阅读:
    HTTP协议
    网络编程笔记
    基于udp协议实现QQ:可以并发一对多
    基于udp协议通信:实现了并发
    基于tcp协议通信,运用socketserver模块实现并发
    @PathVariable 与@RequestParam
    IDEA 中的一些概念变化
    Bubble Cup 11
    ACM超时问题
    D
  • 原文地址:https://www.cnblogs.com/ctlchild/p/5269534.html
Copyright © 2011-2022 走看看