动态规划
文章平均质量分 66
stony_oi
oi弱鸡qaq
今天终于开博客啦
展开
-
bzoj1076【概率dp+状压】
好神奇的题,正着递推会有很多问题,可以用f[i][s]表示已经过了i个宝物,状态为s,之后最多还能得多少分,这样就可以倒着递推啦#include#include#include#include#includeusing namespace std;typedef long long LL;inline LL read(){ LL x=0;bool f=0;char c=get原创 2016-11-16 11:04:56 · 245 阅读 · 0 评论 -
bzoj1090
玄学dp,感觉我写的复杂度好高的样子,但是直接水过啦~#include#include#include#include#includeusing namespace std;typedef long long LL;inline LL read(){ LL x=0;bool f=0;char c=getchar(); for (;c'9';c=getchar()) f=c=原创 2016-11-15 08:24:10 · 322 阅读 · 0 评论 -
bzoj3566
#include#include#include#include#includeusing namespace std;inline int read(){ int x=0;bool f=0;char c=getchar(); for (;c'9';c=getchar()) f=c=='-'?1:0; for (;c>='0'&&c<='9';c=getchar()) x=x*原创 2017-02-13 16:46:13 · 294 阅读 · 0 评论 -
bzoj3900【状压】
设f[S]是保证子集S完全满足要求的最小交换次数。对于一个集合S先判断是否可能有解,若有解则先令f[S]=S中的点数-1(相当于整个集合进行置换)。但是也有可能S是分成若干个子集,在这些子集中分别置换,所以最后再dp一下就行了。#include#include#include#include#includeusing namespace std;typedef long long原创 2016-12-13 15:49:23 · 397 阅读 · 0 评论 -
bzoj1037
感觉好神奇的dp所谓任意一段,其实也就是任意一个前缀的任意一个后缀。所以我们只需保证填到某一个位置时,已完成的一段(一个前缀)的任意后缀都满足该条件。设f[i][j][k1][k2]为已经放了i个男生和j个女生,且该段后缀中男生减女生最大是k1,女生减男生最大是k2,若为负则记为0。因假如男生始终比女生少的话(k1#include#include#include#include原创 2016-11-15 16:48:03 · 256 阅读 · 0 评论 -
bzoj1571【DAG上dp】
首先把时间离散化,并建n*m个点(n是总的时间点数,m是技术等级数),(t,a)表示位于t好时间点并且科技等级为m,然后就变成了DAG上的最短路,dp即可#include#include#include#include#includeusing namespace std;#define id(a,b) (((b)-1)*post+a)typedef long long LL;原创 2016-11-15 14:39:12 · 324 阅读 · 0 评论 -
bzoj1024
玄学搜索#include#include#include#include#includeusing namespace std;typedef long long LL;inline LL read(){ LL x=0;bool f=0;char c=getchar(); for (;c'9';c=getchar()) f=c=='-'?1:0; for (;c>='0'原创 2016-11-15 09:35:49 · 241 阅读 · 0 评论 -
bzoj1079
1079: [SCOI2008]着色方案Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1820 Solved: 1092[Submit][Status][Discuss]Description 有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。所有油漆刚好足够涂满原创 2016-11-15 09:04:33 · 289 阅读 · 0 评论 -
bzoj1187【插头dp】
#include#include#include#include#include#includeusing namespace std;typedef long long LL;#define mp make_pair#define pb tran[s][i].push_back(make_pair(to_num(b),true))inline LL read(){ LL原创 2016-11-16 17:50:41 · 238 阅读 · 0 评论