自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sky_zdk的博客

相信奇迹的人本身就和奇迹一样了不起

  • 博客(424)
  • 收藏
  • 关注

原创 uva 10779

#include<cstdio>#include<cstring>#include<queue>using namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[1000010];int a[100010],b[100010],d[10010];int...

2018-05-18 20:48:43 362

原创 LA 3231 Fair Shar

#include<cstdio>#include<cstring>#include<queue>using namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[2000010];int a[100010],b[100010],d[100010];in...

2018-05-17 22:01:38 356

原创 求边数最少的最小割

#include#include#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[2010];int head[1010],cnt,S,T,d[1010],cur[1010],n,m;void add_edge(int

2018-04-09 19:47:12 650

原创 每个格子只能走有限次 求有多少人可以走出方格 每个人一次最多移动d格

#include#include#include#includeusing namespace std;const int maxn = 1200;const int INF = 0x3f3f3f3f;struct{ int to,next,flow;}e[maxn * maxn];int S,T;int head[maxn],cnt,d[maxn];void add_ed

2018-03-30 19:09:44 699

原创 hdu 2444 二分图匹配

#include#includeusing namespace std;int G[220][220],vis[220],n,m,mat[220];int dfs(int u,int flag){ if(vis[u] != -1){ if(vis[u] == flag) return 1; else return 0; } vis[u] = flag; for(int

2018-03-26 12:01:09 199

原创 无向图 求加几条边可以得到双联通图 poj 3177

#include#include#include#include using namespace std;const int maxn = 5050;vector mp[maxn];bool g[maxn][maxn];int dfn[maxn],low[maxn],cnt,ans,d[maxn];void Tarjan(int u,int fa){ dfn[u] = low[

2018-03-20 19:34:16 329

原创 给定一个连通图 q个询问 每次加一条边 每次求出有多少个桥 poj 3694

#include#include#include#include#includeusing namespace std;const int maxn = 101000;vector mp[maxn];int dfn[maxn],low[maxn],pre[maxn],p[maxn],cnt,ans;int find(int u){ return u == pre[u]?u:(p

2018-03-20 18:10:32 244

原创 无向图求桥的个数(有重边)

#include#include#include #include#include#includeusing namespace std;vector mp[10010];int ans,low[130],dfn[130],vis[130],cnt;struct node{ int x,y;}a[130];bool cmp(const node u,const node v

2018-03-19 21:48:20 1701

原创 求割点个数

#include#include#include #include#includeusing namespace std;vector mp[10010];int root,low[130],dfn[130],vis[130],num[130],cnt;void Tarjan(int u){ low[u] = dfn[u] = ++cnt; vis[u] = 1; for(

2018-03-19 20:35:20 318

原创 加边 成为强联通分量 poj 1236

#include#include#include#include#include#includeusing namespace std;stack st;vector mp[1010];int low[130],dfn[130],belong[130],vis[130],cnt,scc,n,in[130],out[130];void Tarjan(int u){ vis[u]

2018-03-19 20:03:23 160

原创 uva 12063 含有相同个数0和1 并且是k的倍数 的数的个数 DP

#include#includeusing namespace std;typedef long long LL;LL dp[60][60][120];int main(){ int T,t = 1; int n,mod; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&mod); printf("Case %d: ",t++);

2018-03-07 09:12:45 216

原创 uva 11526

网上推出的公式 2*Σ(n/i) - n*n#include#include#includeusing namespace std;int main(){ int T,n; scanf("%d",&T); while(T--){ long long res = 0; scanf("%d",&n); int m = sqrt(1.0 * n); for( int i

2018-03-07 07:57:43 212

原创 uva 1645

#include<cstdio>using namespace std;const int MOD = 1e9 + 7;int dp[1010];int main(){ int t = 1,n; dp[1] = 1; for(int i = 2;i < 1001;i++){ for(int j = 1;j < i;j++){ if((i - 1) %...

2018-03-06 12:41:54 173

原创 uva 1210 数学

#includeusing namespace std;int vis[10100],pri[10010],num,n;void init(){ num=0; for(int i=2;i<=10010;i++){ if(!vis[i]){ pri[num++]=i; for(int j = i + i;j <= 10010;j += i) vis[j]=1; } }

2018-03-05 12:21:34 294

原创 uva 242 DP 求s张邮票可以连续组合成最大面值多少的邮票

#include#include#includeusing namespace std;int d[36][36],dp[1036],res[36];int main(){ int s,n; while(scanf("%d",&s) == 1 && s){ scanf("%d",&n); for(int i = 1;i <= n;i++){ scanf("%d",&d[

2017-11-06 09:10:25 268

原创 uva 1630 KMP判断周期串 和 区间DP 压缩字符串

#include#include#include#include#includeusing namespace std;string dp[160][160];char s[160],t[160];int f[160];string ToString(int x){ string res = ""; while(x){ res += (char)('0' + (x % 1

2017-11-06 08:22:50 330

原创 uva1629 切方格使得每个方格中只有一个物品,求最少切割费用 记忆化搜索

#include#include#include#define INF 0x3f3f3f3fusing namespace std;int dp[36][36][36][36],x[500],y[500],n,m,k;int dfs(int x1,int y1,int x2,int y2){ int &t = dp[x1][y1][x2][y2]; if(t != -1) retu

2017-11-06 07:21:03 210

原创 uva 10118 Free Candies

#include#include#includeusing namespace std;int vis[30],top[5],dp[60][60][60][60],n,d[4][60];int dfs(int k){ int &t=dp[top[0]][top[1]][top[2]][top[3]]; if(t != -1) return t; t=0; if(k >= 5 ||

2017-11-06 07:18:42 205

原创 uva 10934 有k个气球 用高n层楼来测试气球硬度 求最小扔几次可以测出来

#include#includeusing namespace std;long long dp[160][80],n;int k;int main(){ for(int i=1;i<=100;i++) for(int j=1;j<=64;j++) dp[i][j]=dp[i-1][j-1]+dp[i][j-1]+1; while(scanf("%d%lld",&k,&n) ==

2017-10-31 11:52:32 378

原创 uva 1252 最少看几位数字 就可以分辨出所有的二进制数字

#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;int dp[3600][3600],d[200],n,m;int dfs(int s1,int s2){ if(dp[s1][s2]!=INF) return dp[s1][s2]; int t=0; for(int i=0;i<n;i++)

2017-10-18 10:08:14 370

原创 uva 1220 树的最大独立集和唯一性的判断

每个点和他相连的点不能同时选中

2017-10-18 07:34:47 236

原创 uva 12186 DP

#include#include#include#includeusing namespace std;int n,t,x;vector g[100010];int dfs(int u){ if(g[u].empty()) return 1; int k=g[u].size(); vectord; for(int i=0;i<k;i++) d.push_back(dfs(g[

2017-10-17 21:46:27 187

原创 区间DP 最大面积最小的三角形划分

#include#include#include#include#define INF 0x3f3f3f3f#define eps 1e-7using namespace std;int n;double x[66],y[66],dp[66][66];double cal(int a,int b,int c){ double x1=x[a]-x[c]; double y1=y

2017-10-16 09:02:09 395

原创 uva 10003 一根木棍上有n个切割点 每次选一个点切割,求总切割费用最小 区间DP

#include#include#includeusing namespace std;int dp[66][66],d[66];int main(){ int l,n; while( scanf("%d", &l) == 1 && l ){ scanf("%d", &n); for(int i=1;i<=n;i++) scanf("%d", &d[i]); d[0]=0

2017-10-16 08:02:59 432

原创 2018网易校园招聘 DP

#include#include#include#includeusing namespace std;long long dp[2020][2020],n,a[2020];int dfs(int x1,int x2){ if(dp[x1][x2]!=-1) return dp[x1][x2]; if(x1==n-1 ) return dp[x1][x2]=min(abs(a[x1

2017-10-14 07:11:07 178

原创 uva 1625 DP 使得所有相同字母最大距离之和最小

#include#include#includeusing namespace std;char s1[5005],s2[5005];int l1[36],l2[36],r1[36],r2[36];int dp[5005][5005];int main(){ int T; scanf("%d",&T); while(T--){ scanf("%s%s",s1+1,s2+1

2017-10-12 08:57:48 217

原创 uva 11400 DP 需要推理

#include#include#includeusing namespace std;struct node{ int v,k,c,l;}a[10100];long long dp[10100],sum[10100];bool cmp(const node &a,const node &b){ return a.v<b.v;}int main(){ int n; whi

2017-10-11 12:47:13 190

原创 平面n个点 求从最左边点到最右边点再返回的最短路长 uva 1347

#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;int x[1010],y[1010],n;double dp[1010][1010],d[1010][1010];double dfs(int t1,int t2){ if(dp[t1][t2]) return dp[t1][t2]

2017-10-11 09:53:05 300

原创 uva437 DAG最长路

#include#include#include#define k1(x) ((x+1)%3)#define k2(x) ((x+2)%3)using namespace std;int dp[36][4],d[36][4],n;int dfs(int lo,int k){// printf("%d %d\n",lo,k); if(dp[lo][k]) return dp[lo]

2017-10-11 07:21:47 217

原创 uva11175

#include#includeusing namespace std;int m,k,g1[310][310],g2[310][310],n1[310],n2[310],to[310];int solve(){ for(int i=0;i<m;i++){ memset(to,0,sizeof(to)); for(int j=0;j<n2[i];j++){ for(int

2017-10-09 20:34:39 296

原创 uva 1623 贪心 数据结构

#include#include#includeusing namespace std;int lo[1000100],d[1000100],ans[1000100];int main(){ int T,n,m; scanf("%d",&T); while(T--){ memset(lo,0,sizeof(lo)); memset(ans,0,sizeof(ans));

2017-10-09 13:19:03 298

原创 uva 1622 贪心

#include#includeusing namespace std;typedef long long LL;LL solve(LL x,LL y,LL N,LL S,LL W,LL E){ LL res=0; if( S > N ) swap(S,N); if( E > W ) swap(E,W); if(N){ res += x * y; y--; N-=S;

2017-10-09 12:49:28 447

原创 uva 1312 一个矩形中的最大的子矩形(其中不能包含某些点)

#include#include#includeusing namespace std;int p,q,l,n,w,h;struct node{ int x,y; node(int a=0,int b=0):x(a),y(b){}}t[160];bool cmpx(const node &a,const node &b){ return a.x==b.x?a.y<b.y:a.x

2017-10-01 20:24:19 531

原创 uva 1619 单调 求一段序列和 和 其中最小值的乘积的最大值

#include#include#define INF 0x3f3f3f3fusing namespace std;int d[100010],l[100010],r[100010];long long sum[100010];int main(){ int n,t=0; while(scanf("%d",&n)==1){ memset(sum,0,sizeof(sum));

2017-10-01 16:01:40 331

原创 uva 11536 尺取法 滑动窗口

#include#include#includeusing namespace std;int vis[1010],d[1000100],n,m,k;bool ok(){ for(int i=1;i<=k;i++) if(!vis[i]) return 0; return 1;} int main(){ int T,t=1; scanf("%d",&T); while(T

2017-10-01 15:23:34 300

原创 uva 1614 贪心

第i个数 不超过i 则前i个数可以组合成任意1-sum[i]中的数

2017-10-01 12:15:59 194

原创 uva 439 前序,中序遍历 转化成后序遍历 不用指针!用数组

前序,中序遍历 转化成后序遍历 不用指针!用数组

2017-09-28 12:09:44 415

原创 uva11082 知道矩阵每行每列数字之和 求矩阵每一个元素 最大流

#include#include#include#define INF 0x3f3f3f3fusing namespace std;int n,m,a[50],b[50],cap[50][50],pre[60],flow[50];int bfs(){ memset(pre,-1,sizeof(pre)); pre[0]=flow[0]=INF; queueq; q.push(0

2017-09-27 11:44:23 1680

原创 uvalive 3268 二分图匹配 或者 最大流

每个人可以分到若干组内,但实际上只把他分到一个组内,让人数最多的那个组 人数尽可能小

2017-09-27 09:46:08 378

原创 uva 10806 从一个点到另外1个点的2条不重复边的路径

从一个点到另外1个点的2条不重复边的路径

2017-09-27 08:52:58 632

空空如也

空空如也

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

TA关注的人

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