摘要: bzoj1087[SCOI2005]互不侵犯King 题意: 在N×N的棋盘里面放K个国王,使他们互不攻击,求共有多少种摆放方案。国王能攻击到它上下左右及左上左下右上右下八个方向上附近的一个格子,共8个格子。 题解: 状压dp。我的做法是像插头dp那样保存当前列右侧的上一行和当前列左侧的当前行的情况 阅读全文
posted @ 2016-07-21 20:03 YuanZiming 阅读(276) 评论(0) 推荐(0) 编辑
摘要: bzoj3196Tyvj1730二逼平衡树 题意: 维护一个数列,操作:查询k在区间内的排名、查询区间内排名为k的值3、修改某一位上的数值、查询k在区间内的前驱(前驱定义为小于x,且最大的数)、查询k在区间内的后继(后继定义为大于x,且最小的数) 题解: 线段树套treap,我写了一个星期QAQ第一 阅读全文
posted @ 2016-07-20 20:36 YuanZiming 阅读(242) 评论(0) 推荐(0) 编辑
摘要: bzoj1296[SCOI2009]粉刷匠 题意: 粉刷N条木板,每条木板M 个格子,每个格子要被刷成红色或蓝色。每次只能选择一条木板上一段连续的格子涂上一种颜色。 每个格子最多只能被粉刷一次。 如果只能粉刷 T 次,求最多能正确粉刷的格子数。未被粉刷或者颜色错的格子算错误粉刷。 题解: 非常容易想 阅读全文
posted @ 2016-07-20 20:30 YuanZiming 阅读(238) 评论(0) 推荐(1) 编辑
摘要: bzoj2243[SDOI2011]染色 题意: n点无根树,2类操作:将节点a到节点b路径上所有点都染成颜色c、询问节点a到节点b路径上的颜色段数量。 题解: 有点恶心的链剖,可以用包含区间颜色段数,左端点颜色,右端点颜色的结构体存储查询的结果。首先是线段树节点除了要保存区间颜色段数还要保存左右端 阅读全文
posted @ 2016-07-20 20:25 YuanZiming 阅读(151) 评论(0) 推荐(0) 编辑
摘要: bzoj4034[HAOI2015]T2 题意: N点树,以点 1 为根,且树点有边权。三种操作:把某个节点点权增加 a 、某个节点为根的子树中所有点的点权都增加 a 、询问某个节点到根的路径中所有点的点权和。 题解: 本题链剖可过。第二个操作只要每次在构造链的时候找到子树中在链中位置最大的节点,然 阅读全文
posted @ 2016-07-20 20:15 YuanZiming 阅读(251) 评论(0) 推荐(0) 编辑
摘要: bzoj2661[BeiJing wc2012]连连看 题意: 给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y)的平方差x2-y2是一个完全平方数z2,并且y与z互质,那么就可以将x和y一起消除,同时得到x+y点分数。求消除的数对尽可能多的前提下分数的最大值。 题解: 每个数 阅读全文
posted @ 2016-07-20 20:09 YuanZiming 阅读(594) 评论(0) 推荐(0) 编辑
摘要: bzoj1406[AHOI2007]密码箱 题意: 输出1到n-1中平方后模n等于1的整数 题解: 设所求数x,化简得(x+1)(x-1)=n*k,设n1*n2等于k,(x+1)%n1==0,(x-1)%n2==0,因此n1、n2都为n的因数,且一个≤sqrt(n),一个≥(sqrt(n))。据说i 阅读全文
posted @ 2016-07-20 20:02 YuanZiming 阅读(278) 评论(0) 推荐(0) 编辑
摘要: bzoj1452[JSOI2009]Count 题意: n*m矩阵,支持两个操作,修改某个格子权值和查询某个子矩阵特定权值出现次数。n,m≤300,权值为1到100的整数。 题解: 原来二维前缀和也可以用树状数组维护,只要那个不断增加/减少lowbit的循环再嵌套一层就行了。同时因为权值是1到100 阅读全文
posted @ 2016-07-20 19:58 YuanZiming 阅读(287) 评论(0) 推荐(0) 编辑
摘要: bzoj1934[Shoi2007]Vote 善意的投票 题意: n个小朋友通过投票来决定睡不睡午觉。每个人都有自己的主见,但也可以投和自己本来意愿相反的票。冲突总数为好朋友之间发生冲突的总数加上和自己本来意愿发生冲突的人数。求最小冲突数。 题解: 最小割,s向每个选1的人连边流量为1,每个选0的人 阅读全文
posted @ 2016-07-20 19:53 YuanZiming 阅读(405) 评论(0) 推荐(0) 编辑
摘要: bzoj1787[Ahoi2008]Meet 紧急集合 bzoj1832[AHOI2008]聚会 题意: 给个树,每次给三个点,求与这三个点距离最小的点。 题解: 倍增求出两两之间的LCA后,比较容易理解的做法是挑出两个LCA再做一次LCA,比较所有挑法。但画kan出ti图jie可知其中有两个LCA 阅读全文
posted @ 2016-07-20 19:45 YuanZiming 阅读(216) 评论(0) 推荐(0) 编辑