当前位置: 首页 > news >正文

网站建设用阿里还是华为云wordpress主题cms博客

网站建设用阿里还是华为云,wordpress主题cms博客,网站备案行业,昆明seo题干#xff1a; Help Jimmy 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台#xff0c;高度为零#xff0c;长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落#xff0c;它的下落速度始终为1米/秒。当Jim…题干 Help Jimmy 是在下图所示的场景上完成的游戏。  场景中包括多个长度和高度各不相同的平台。地面是最低的平台高度为零长度无限。  Jimmy老鼠在时刻0从高于所有平台的某处开始下落它的下落速度始终为1米/秒。当Jimmy落到某个平台上时游戏者选择让它向左还是向右跑它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时开始继续下落。Jimmy每次下落的高度不能超过MAX米不然就会摔死游戏也会结束。  设计一个程序计算Jimmy到底地面时可能的最早时间。  Input 第一行是测试数据的组数t0 t 20。每组测试数据的第一行是四个整数NXYMAX用空格分隔。N是平台的数目不包括地面X和Y是Jimmy开始下落的位置的横竖坐标MAX是一次下落的最大高度。接下来的N行每行描述一个平台包括三个整数X1[i]X2[i]和H[i]。H[i]表示平台的高度X1[i]和X2[i]表示平台左右端点的横坐标。1 N 1000-20000 X, X1[i], X2[i] 200000 H[i] Y 20000i 1..N。所有坐标的单位都是米。  Jimmy的大小和平台的厚度均忽略不计。如果Jimmy恰好落在某个平台的边缘被视为落在平台上。所有的平台均不重叠或相连。测试数据保证问题一定有解。  Output 对输入的每组测试数据输出一个整数Jimmy到底地面时可能的最早时间。 AC代码1 #includecstdio #includealgorithm #includeiostream #includecstring using namespace std; const int INF 0x3f3f3f3f; int n,x,y,maxx; int dp[1005][2];//fg0代表左边fg1代表右边 struct Node {int l,r,h; } node[1005]; bool cmp(const Node a,const Node b) {return a.h b.h; } int dfs(int cur,int fg) {if(cur 1) return 0;if(dp[cur][fg] ! -1) return dp[cur][fg];if(cur 1) {return 0;}int ans INF;if(dp[cur][fg] ! -1) {return dp[cur][fg];}int temp cur; for(int i cur-1; i1; i--) {tempi;if(node[cur].h - node[i].h maxx) break;if(fg0) {if(node[i].l node[cur].l node[i].r node[cur].l) {ans min(dfs(i,0)node[cur].l-node[i].l,dfs(i,1) node[i].r-node[cur].l );break;}} else {if(node[i].r node[cur].r node[i].l node[cur].r) {ans min(dfs(i,0)node[cur].r-node[i].l,dfs(i,1)node[i].r-node[cur].r);break;}}}if(ans INF) {if(node[cur].h maxx) return dp[cur][fg] 0;else return dp[cur][fg] ans;}else return dp[cur][fg] ans; } int main() {int t;cint;while(t--) {scanf(%d%d%d%d,n,x,y,maxx);memset(dp,-1,sizeof (dp));for(int i 1; in; i) {scanf(%d%d%d,node[i].l,node[i].r,node[i].h);}sort(node1,noden1,cmp);int okn1; // node[ok].h y;node[ok].lnode[ok].rx;for(int i n; i1; i--) {if(node[i].r x node[i].l x) {oki;break;}}if(ok n1) {printf(%d\n,y);}else {int ans min(dfs(ok,1) node[ok].r-x,dfs(ok,0) x-node[ok].l) y; // int ans min(dfs(ok,1),dfs(ok,0)) y;printf(%d\n,ans);}} return 0 ;} //1 //1 //2 3 //100 //5 6 1 AC代码2 #includecstdio #includealgorithm #includeiostream #includecstring using namespace std; const int INF 0x3f3f3f3f; int n,x,y,maxx; int dp[1005][2];//fg0代表左边fg1代表右边 struct Node {int l,r,h; } node[1005]; bool cmp(const Node a,const Node b) {return a.h b.h; } int dfs(int cur,int fg) {if(cur 1) return 0;if(dp[cur][fg] ! -1) return dp[cur][fg]; // int minn 0x3f3f3f3f,flag0;//0左 1右 // int tempcur;int ans INF;int temp cur; for(int i cur-1; i1; i--) {tempi;if(node[cur].h - node[i].h maxx) break;if(fg0) {if(node[i].l node[cur].l node[i].r node[cur].l) {ans min(dfs(i,0)node[cur].l-node[i].l,dfs(i,1) node[i].r-node[cur].l );break;}} else {if(node[i].r node[cur].r node[i].l node[cur].r) {ans min(dfs(i,0)node[cur].r-node[i].l,dfs(i,1)node[i].r-node[cur].r);break;}}}if(ans INF) {if(node[cur].h maxx) return dp[cur][fg] 0;else return dp[cur][fg] ans;}else return dp[cur][fg] ans; // if(ans INF) { // if(temp 1) { // if(node[cur].h maxx) return dp[cur][fg] ans; // else return dp[cur][fg] 0; // } // return dp[cur][fg] ans; // } // else return dp[cur][fg] ans; } int main() {int t;cint;while(t--) {scanf(%d%d%d%d,n,x,y,maxx);memset(dp,-1,sizeof (dp));for(int i 1; in; i) {scanf(%d%d%d,node[i].l,node[i].r,node[i].h);}sort(node1,noden1,cmp);int okn1;node[ok].h y;node[ok].lnode[ok].rx; // for(int i n; i1; i--) { // if(node[i].r x node[i].l x) { // oki;break; // } // } // int ans min(dfs(ok,1) node[ok].r-x,dfs(ok,0) x-node[ok].l) y;int ans min(dfs(ok,1),dfs(ok,0)) y;printf(%d\n,ans);} return 0 ;} 错误代码 #includecstdio #includealgorithm #includeiostream #includecstring using namespace std; int n,x,y,maxx; int dp[1005]; struct Node {int l,r,h; } node[1005]; bool cmp(const Node a,const Node b) {return a.h b.h; } int dfs(int cur,int curx,int curh) {if(curh 0) return 0;if(cur 0) return 0;if(dp[cur] ! -1) return dp[cur];int minn 0x3f3f3f3f;for(int i cur-1; i1; i--) {if(curh - node[i].h maxx) break;if(node[i].l node[cur].l) minn min(minn,dfs(i,node[cur].l,node[i].h)node[cur].l-curx);if(node[i].r node[cur].r) minn min(minn,dfs(i,node[cur].r,node[i].h)node[cur].r-curx);}return dp[cur] minn; } int main() {int t;cint;while(t--) {scanf(%d%d%d%d,n,x,y,maxx);memset(dp,-1,sizeof (dp));for(int i 1; in; i) {scanf(%d%d%d,node[i].l,node[i].r,node[i].h);}sort(node1,noden1,cmp);printf(%d\n,dfs(n,x,node[n].h));} // 18653293769return 0 ;} 总结 几个地方是真的坑首先这个错误代码记忆化搜素的设计状态我就没搞明白因为后来我通过观察发现一维dp表示不了所有状态于是dfs中乱设了一堆参数结果显然都没用。 其二函数内部显然要break不能不加break因为有上一个台子挡住了后面即使有符合的也不能跳上去了所以要break。 其三要处理好到地面的那一步一定是直接跳过去的也就是 一定ansINF所以return的时候不能直接retrun dp[cur][fg] ans;而应该判断是否ansINF 如果等于的话也就说明是到地面了要dp[cur][fg] 0;才可以。 其四有个处理技巧让出发点当成一个新的平台这样直接统一形式就可以了。不然的话就跟AC代码1一样先判断是否从出发点可以直接落到地面上特判一下这个条件才可以。 其五有个技巧就是高度都最后统一算直接y就可以了这样减少了代码出错概率。 其六递归函数中的状态转移要想清楚到底是由哪些状态转移而来或者想可以转移到哪些状态去。
http://wiki.neutronadmin.com/news/205894/

相关文章:

  • 做国外网站收款怎么收搭建网站的平台有哪些
  • 百度右侧相关网站北京seo实战培训班
  • php做数据网站建立企业网站的好处
  • 网站关键词怎么做效果好阜阳商城网站建设
  • 品牌网站建设优化公司排名阿里网 网站备案流程
  • 网站目录层级建设什么网站管理系统好
  • 广州高端网站制作公司哪家好南京家装口碑排名前十
  • 做网站的时候说需求的专业术语做网站郑州汉狮
  • 保险网站查询网站建设文库 新的开始
  • 无锡微网站房产网站制作方案
  • 网站备案证书下载失败外包加工原因
  • 住房城乡建设部网站主页代发关键词包收录
  • 东莞市官网网站建设哪家好多用户分布式网站开发
  • 网站流量功能更怎么做最简单的网站代码
  • 制作网站系统上海大型广告公司排名
  • 辽宁省交通建设投资集团官方网站高密网站制作
  • wordpress插件自动seo关于网站搜索
  • 建设网站的工作总结一家专做二手手机的网站叫什么手机
  • 河南南阳油田网站建设互联网网站建设营销
  • 开发门户网站多少钱搜狗推广找谁
  • 个人网站建设方案书 备案wordpress 网站收录
  • 怎样建设免费网站中国世界排名前200的大学
  • 网站建设电销微信平台微网站开发
  • 潍坊专职消防员邢台抖音优化
  • 广东企业微信网站开发菜鸟教程网站开发
  • 网站建设周期规划有服务器了怎么做网站
  • 做网站内嵌地图时事新闻热点素材
  • 怎样把域名和做的网站连接不上上海企业网站的建设
  • 响应式网站做mip做游戏网站的需求分析
  • 西安制作网站四川重庆是哪个省