牛客网 小白月赛G题 DP
2018-03-17 22:59
218 查看
小白月赛G
这道题主要读入数据不好读入,如果把图建出来就很好DP,我采用dfs将点标记为1,然后再DP,开始我dfs1调用了dfs,很烦,我为什么老是要写这种函数名,再也不写dfs和dfs1了,哭
这道题主要读入数据不好读入,如果把图建出来就很好DP,我采用dfs将点标记为1,然后再DP,开始我dfs1调用了dfs,很烦,我为什么老是要写这种函数名,再也不写dfs和dfs1了,哭
//#include <bits/stdc++.h> #include<stdio.h> #include<string.h> #include<string> #include<math.h> #include<algorithm> #include<iostream> #include<queue> #include<vector> #include<stac 4000 k> #include<map> #include<set> #include<stdlib.h> #include<time.h> #include <iomanip> #define lowbit(x) (x&(-x)) #define inf 0x7fffffff #define linf 0x7fffffffffffffff #define fill(x,y) memset(x,y,sizeof(x)) #define fup(i,x,y) for(int i=(x);i<=(y);i++) #define fdn(i,x,y) for(int i=(x);i>=(y);i--) #define sp(x) setprecision(x) #define sd(n) scanf("%d",&n) #define sdd(n,m) scanf("%d%d",&n,&m) #define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k) #define sld(n) scanf("%lld",&n) #define sldd(n,m) scanf("%lld%lld",&n,&m) #define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k) #define sf(n) scanf("%lf",&n) #define sff(n,m) scanf("%lf%lf",&n,&m) #define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k) #define sc(n) scanf("%s",n) #define pf(x) printf("%d\n",x) #define pfl(x) printf("%lld\n",x) #define pff(x) printf("%lf\n",x) #define N 1000005 #define M 4000009 #define pi acos(-1) #define eps 1e-2 //cout.setf(ios::fixed); //freopen("out.txt","w",stdout);// freopen("in.txt","r",stdin); using namespace std; typedef long long ll; typedef double db; int vis[3200][2005],a[3200][2005]; int go[6][2]={1,-1,1,0,1,1,-1,1,-1,0,-1,-1}; void dfs(int x,int y,int n,int t) { if(!t) return ; fup(i,0,n-1) vis[x+2*i][y]=1; dfs(x+1,y-1,n-1,t-1); } void dfs1(int x,int y,int n,int t) { if(!t) return ; fup(i,0,n-1) vis[x+2*i][y]=1; dfs1(x+1,y+1,n-1,t-1); } int main() { int n; while(~sd(n)) { fill(vis,0); fill(a,-0x3f3f3f3f); vector<int> q[3200]; dfs(1,n,2*n-1,n); dfs1(2,n+1,2*n-2,n-1); // fup(i,1,4*n-3) // { // fup(j,1,2*n-1) // cout<<vis[i][j]<<' '; // puts(""); // } fup(i,1,4*n-3) { fup(j,1,2*n-1) if(vis[i][j]) sd(a[i][j]),q[i].push_back(j); } fdn(i,4*n-4,1) { int m=q[i].size(); for(int j=0;j<m;j++) { int tp=q[i][j]; a[i][tp]+=max(a[i+1][tp-1],max(a[i+2][tp],a[i+1][tp+1])); } } pf(a[1] ); } return 0; }
相关文章推荐
- 牛客网小白月赛1 B题
- ZOJ 3723 (浙大月赛)状压DP
- ZOJ 3723 (浙大月赛)状压DP
- 牛客小白月赛1 C 分元宵【快速幂】
- 【bzoj4884】[Lydsy2017年5月月赛]太空猫 dp
- 牛客网 Wannafly挑战赛12 C(dp)
- 小白算法练习 dp练习001-区间dp NYOJ 石子合并,整数划分 POJ Brackets
- 小白dp uva 10271 - Chopsticks
- 小白算法练习 树状dp caioj 二分苹果树
- bzoj4884: [Lydsy2017年5月月赛]太空猫(dp)
- poj 2018 Best Cow Fences USACO历年月赛 (分数规划+DP)
- lanqiao 小白算法练习 合并石子 区间dp
- 小白算法练习 hdu 不要62 POJ 2282 the Counting problem 数位dp
- [BZOJ4919][Lydsy六月份月赛 .C][树上DP][启发式合并]大根堆
- 牛客网 wannafly 月赛 完全平方数
- uva 709 &poj 1093 - Formatting Text (dp之小白告一段落)
- bzoj 4884 [Lydsy2017年5月月赛]太空猫(简单dp)
- 小白逛公园 - Vijos(线段树+一点dp)
- 小白算法练习 数位dp模板
- 牛客网-美团CodeM初赛A轮 合并回文子串 区间DP