
各省省选
Exception2017
OI总结
展开
-
[AHOI2009]中国象棋 dp+递推
原题:https://www.luogu.org/problemnew/show/P2051题解:求在n*m中放炮的方案数,每行每列最多2个。考虑50分的做法,将每一列的状态压缩,用3进制表示。即f(i,j)表示前i行,状态为j的方案数。讨论当前行放的棋子数。<1> 当这一行不放时,f(i,j)=f(i-1,j)<2> 放1个时: f(...原创 2019-03-10 22:20:08 · 146 阅读 · 0 评论 -
[HEOI2016/TJOI2016]排序 二分+线段树 || 80分的桶排序
原题:https://www.luogu.org/problemnew/show/P2824题解:两种操作,区间升序,降序排序。先写一种暴力的桶排序,每次排序的时间复杂度为O(n)。原理和基数排序类似,开一个桶(数组),扫一遍区间在对应的下标+1,然后在从前往后(后往前查)一遍就行了,只用扫两遍就行了,比快排还快。80分的桶排序。#include<cstdio>#inc...原创 2019-03-15 21:47:01 · 153 阅读 · 0 评论 -
[ZJOI2007]棋盘制作 单调栈||dp
原题:https://www.luogu.org/problemnew/show/P1169题解:求最大的01正方形和矩形。若只求01中最大矩形可以用单调栈一列一列做,设f(i,j)为第i行第j列最长连续的0的长度。用单调栈维护最大矩形面积就行了。但本题要求01交替的矩形面积。我们考虑做两遍,将相邻斜线的0全改成11 0 1 1 1 1 { 1 2 30 1 0...原创 2019-03-09 18:58:45 · 139 阅读 · 0 评论 -
[TJOI2017]不勤劳的图书管理员 数列分块+二分
原题:https://loj.ac/problem/2639题解:就是求动态逆序对的和。考虑暴力的方法,对于区间[L,R] 把[L+1.R-1]的元素和L,R比,其实就是要求[L+1,R-1]中所有大于L的和,所有小于L的和,很容易想到数列分块,把每一个块排序,二分查找求和。要注意不要用STL,注意常数优化。#include<bits/stdc++.h>#define ll...原创 2019-04-26 19:09:18 · 174 阅读 · 0 评论 -
[TJOI2017]可乐 矩阵&倍增
原题:https://www.luogu.org/problemnew/show/P3758题解:首先要明确一个事情,如果把图放进邻接矩阵时,记矩阵为A,A^k所对应的mat[i][j]就是从i-j经过k步的方案。因为矩阵乘法的定义是这样的:。对于这道题来说就是i->j的路径条数。那么这道题有三种情况,不动,爆炸,移动。不动的可以在邻接矩阵中自连,爆炸就把每个点连到0,0不能连向任何...原创 2019-04-26 21:36:25 · 378 阅读 · 0 评论 -
「SDOI2016」排列计数 组合+dp
原题:https://loj.ac/problem/2034题解:很容易发现对于n个格子,定下m个稳定的的方案数是C(n,m),那么就是求剩下的n-m个格子怎么填,让下标和值不一样。不妨用dp的思想设:f(i)表示要填i个下标和值不一样的格子的方案数。有转移方程为: 考虑第i号放在哪,肯定是前i-1个位置,记这个位置是j 考虑j号放在哪?可以放在第i号那么,答案就是剩下的i-2进行错排...原创 2019-04-28 21:28:47 · 335 阅读 · 0 评论