自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 [SCOI2007] BZOJ 1072 排列perm - 状压dp

传送门题解:dp数组记录当前数字和%d以及用了哪些数字#include#include#include#define N 11#define D 1010using namespace std;int fac[10],b[10];char s[N];int dp[1<<N][D],a[N];inline int toi(char ch){ return ch^'0

2017-08-26 19:52:46 357

原创 BZOJ 1688 Disease Manangement 疾病管理 -状压dp

传送门题解:傻逼题#include#include#include#include#include#define inf (INT_MIN/2)#define N 1010#define D 16using namespace std;inline int getv(int x,int p){ return (x&(1>(p-1);}inline i

2017-08-26 19:50:07 553

原创 BZOJ 1231 mixup2 混乱的奶牛 - 状压dp

传送门题解:傻逼题#include#include#include#include#define lint long long#define N 17using namespace std;int n,all,a[N];lint dp[1<<N][N];inline int getv(int x,int p){ return (x&(1>(p-1);}inl

2017-08-26 19:48:10 339

原创 BZOJ1725 Corn Fields牧场的安排 - 状压dp

传送门题解:傻逼题#include#include#include#include#define N 13#define MAXT 380#define mod 100000000using namespace std;inline int updv(int &x,int p){ return x|=(1<<(p-1));}inline int getv(

2017-08-26 19:44:43 364

原创 [SCOI2005] BZOJ 1087 互不侵犯King - 状压dp

传送门题解:首先求出哪些行的状态是合法的,即没有相邻的棋子。发现合法的行状态数量只有90,没有2^9=512这么多。然后枚举相邻两行,预处理能否转移。然后记q[i]表示第i种合法的行方案是q[i],cnt[i]表示q[i]放了多少个棋子然后记dp[i][j][k]表示前i行第i行状态为j棋子个数是k的方案数转移枚举哪些状态可以转移(刚才预处理过的)然后……就没有然后

2017-08-26 19:41:32 344

原创 2017-08-07 NOIP模拟赛

T1. 定义F(x)=各位数字的阶乘之积,给定a题解:沙茶题。每一位数字分开考虑然后打表即可。T2. 给一个n*m的字符矩阵(n,m题解:沙茶题,保存当前这一行是否和上一行相等;如果相等并且上一和的这一列的字符大就删除,否则更新这个数组。复杂度O(nm)。T3. 给一列n个数。每次可以把相邻两个相同的数合并成这个数值+1.请操作若干次使得剩余数列数字的最大值

2017-08-07 14:28:59 430

原创 2017-08-06 NOIP模拟赛

持续沙茶T1:一个1~n的排列,每次可以把序列中的某个数字拿到序列首端,求变成1~n的最小步数n题解:不难想到贪心的方法:找到第一个i满足i的位置在i+1的位置后面,然后i就是答案。正确性显然T2:n个题,做第i到题的时间为ti,初始得分ai,每分钟会少得bi分。保证不会有题目在比赛结束的时候变成负数。求T分钟后的最大得分。n题解:如果dp的话,显然

2017-08-06 13:59:33 429

原创 [HNOI2008] 水平可见直线 - 单调栈

传送门题解:沙茶题#include#include#include#include#define N 50010using namespace std;int s[N],ans[N];struct Line{ int k,b,id; Line operator=(const Line &L) { this->k=L.k;this->b=

2017-08-05 15:07:56 416 3

原创 vijos 1421 更换轮胎 - 前缀和优化dp

传送门题解:和上一个题一样强迫症晚期必须做到O(n)空间代码://vijos 1421#include#include#include#include#include#define INF (LLONG_MAX/2)#define N 1010#define lint long longusing namespace std;lint dp[2][N],pre[

2017-08-04 21:32:53 641

原创 vijos 1283 佳佳的魔杖 - 前缀和优化dp

传送门题解:不知道他们怎么看出是LCS的。首先考虑转化成图,选了[l,r]就不能选择[s,t],l所以可以用网络流做最小割,也可以在这张无环图上做dp,但是边数是O(n^4)的。发现如果左端点相同至多只会选择一根。考虑dp,记dp[l][r]表示选了[l,r]选了左端点最靠左的区间为[l,r](当然有可能不合法,此时记为0)这样dp[l][r]是从dp[s][t]转移而

2017-08-04 21:11:00 562

原创 vijos 1471 教主的游乐场 - 线段树优化dp

传送门题解:首先这个题可以n遍bfs。然后发现dp只记录一维状态不够,因为可能有环,不满足dp性质。解决方案有如下两种:1.于是找性质,发现非常有意思的一点是每个点可以向前跳到任何一个点。考虑一条最优解路径,如果先向右跳了一步,然后又向左跳了一步,那么不如直接向右/左跳一步。也就是最优解至多在第一次跳是向左的。因此可以先处理一个点只往右跳的答案,这个显然可以用线段树维护

2017-08-04 19:53:05 559 1

原创 vijos 1417 魔法塔防 - DP

传送门题解:显然红塔放在最后。dp[i][j]表示前i座塔放了几个绿塔,剩下的放红塔。这样是O(n^2)的。此题显然可以做到O(gb+n)的复杂度。可以通过形如n发现可以优化空间。//vijos 1411#include#include#include#include#define lint long long#define N 1100using nam

2017-08-03 20:14:46 421

原创 tyvj 1087 拆分 - 递推

传送门题解:O(nlgn)DP显然。100%做法需要递推。考虑如果n是奇数那么显然拆分方案中必然有至少一个1.因此此时方案数等于n-1的方案数。否则如果n为偶数,分两种情况考虑。第一种,拆分方案中有1,这个和上面的一样。第二种,没有1.全部都是2.那么整体除以2,方案等于n/2的方案数。代码://tyvj 1087 #include#include#inc

2017-08-03 19:15:29 427

原创 BZOJ3398 牡牛和牝牛 - 动态规划

传送门题解:沙茶题。前缀和维护一下。这题显然可以再O(k+lgn)的时间内出解。代码:#include#include#include#define mod 5000011#define N 100010using namespace std;int dp[N],s[N];int main(){ int n,k;scanf("%d%d",&n,&k);

2017-08-02 20:49:06 718

原创 BZOJ2435 守卫者的挑战 - 期望dp

传送门题解:考虑dp。dp[i][j][k]表示当前第i场,已经赢了j场,背包容量为k(可能为负)的概率。转移显然。可以用n+1表示背包容量无穷大(因为显然碎片最多n个,容量太大就变成无穷大了)。代码:#include//BZOJ 3029#include#include#define MAXN 210using namespace std;double dp[

2017-08-02 20:42:41 405

原创 [学习笔记]BZOJ3224 普通平衡树 - 平衡树Splay

传送门rotate和splay跳过insert就是insert,不要忘了splay。find写成找第一个>=v的。前驱后继就是find后先往左右跳一步然后能往右左走就走del就是find后把前驱后继splay的根和根的右儿子删除即可。getk就是find后splay到根然后左子树大小+1getkth就是在上面二分即可。为了保证存在前驱后继可以先insert(±I

2017-08-02 20:35:18 431 1

原创 [学习笔记][HEOI2013]BZOJ3165 Segment - 超哥线段树

传送门题解:超哥线段树先考虑直线L。首先,假设当前线段树上区间的直线是L2,如果L完全在L2的上面或者L2完全在L的上面那么把其中一个舍弃,递归结束。否则求一下两直线交点。为了方便起见,把左端点比较小的记作L1,另一条记作L2。求一下两条直线的交点。如果它小于等于mid,说明L1在右面的区间上完全覆盖了L2,因此当前区间保存L1,把L2下传到左区间。否则要把L1下放到右

2017-08-02 20:27:46 818

原创 BZOJ1409 Password - 矩阵乘法 - 快速幂 - 欧拉定理

传送门题解:由于pq互质所以要求f[n]mod phi(q)。然后f[n]用矩乘计算即可。然后快速幂即可。及说此题卡常需要先预处理出一些质数。#include#include#include#define MAXV 5#define MAXP 1000000#define lint long long#define debug(x) cerr<<x#define sp <

2017-08-02 20:15:57 544 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除