工科楼北面的那个坑


  1 #include <stdio.h>
2 #include <stdlib.h>
3
4 typedef struct mdata
5 {
6 int *pTime;
7 int width;
8 int hight;
9 struct mdata *pre;
10 struct mdata *next;
11 }mhole;
12
13 mhole *setHole(mhole *,int ,int ,int *); //插入结点
14 void pourTime(mhole *cur); //计算灌水时间
15 void printTime(int *pTime,int N); //输出灌水时间
16
17 int main()
18 {
19 mhole *left,*right,*pt,*curHole;
20 int N,mCount;
21 int mWidth,mHight;
22 int *time;
23
24 left = (mhole*)malloc (sizeof(mhole)); //初始化左边界
25 left->width = 0;
26 left->hight = 1000000;
27 left->pTime = NULL;
28 left->pre = left->next = NULL;
29
30
31 scanf("%d",&N);
32 time = (int*)calloc(N,sizeof(mhole)); //time分配空间
33
34 pt = curHole = left; //当前结点,坑底位置最低结点
35 for(mCount = 0;mCount<N;mCount++){
36 scanf("%d%d",&mWidth,&mHight);
37 curHole = setHole(curHole,mWidth,mHight,time+mCount);
38 if(pt->hight > mHight) //坑底位置最低结点
39 pt = curHole;
40 }
41 right = setHole(curHole,0,1000000,NULL);
42
43 pourTime(pt);
44 printTime(time,N);
45
46 return 0;
47 }
48 mhole *setHole(mhole *preHole,int width,int hight,int *ptime)
49 {
50 mhole *curHole = (mhole *)malloc(sizeof(mhole));
51 curHole->width = width;
52 curHole->hight = hight;
53 curHole->pTime = ptime;
54 curHole->pre = preHole;
55 curHole->next = NULL;
56
57 preHole->next = curHole;
58 return curHole;
59 }
60 void pourTime(mhole * curHole)
61 {
62 mhole *cur = curHole,*pt;
63 int myclock = 0;
64 while(cur->pre->hight != cur->next->hight){
65 *(cur->pTime) = myclock + cur->width;
66 //计算当前时间,合并以灌满结点
67 if(cur->pre->hight > cur->next->hight){
68 myclock += (cur->next->hight - cur->hight)*cur->width;
69 cur->next->width += cur->width;
70 //摘下pt,释放结点
71 cur->pre->next = cur->next;
72 cur->next->pre = cur->pre;
73 pt = cur;
74 cur = cur->next;
75 free(pt);
76 }
77 else{
78 myclock += (cur->pre->hight - cur->hight)*cur->width;
79 cur->pre->width += cur->width;
80
81 cur->pre->next = cur->next;
82 cur->next->pre = cur->pre;
83 pt = cur;
84 cur = cur->pre;
85 free(pt);
86 }
87 //移动至下一结点,此结点为当前坑底最低位置
88 if(cur->hight < cur->pre->hight&&cur->hight < cur->next->hight)
89 continue;
90 else if(cur->pre->hight > cur->next->hight){ //右移
91 while(cur->hight > cur->next->hight)
92 cur = cur->next;
93 }else {
94 while(cur->hight >cur->pre->hight)
95 cur = cur->pre;
96 }
97 }
98 myclock += cur->width;
99 *(cur->pTime) = myclock;
100 }
101 void printTime(int *pTime,int N)
102 {
103 while(N--){
104 printf("%d\n",*pTime++);
105 }
106 }
107
108
109

工科楼北面的那个坑,码迷,mamicode.com

时间: 2025-01-14 03:09:54

工科楼北面的那个坑的相关文章

养成良好的编程风格--论二分查找的正确姿势

摘自:http://www.cnblogs.com/ider/archive/2012/04/01/binary_search.html 在学习算法的过程中,我们除了要了解某个算法的基本原理.实现方式,更重要的一个环节是利用big-O理论来分析算法的复杂度.在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度. 时间复杂度按优劣排差不多集中在: O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n) 到目前位置,似乎我学到的算法中,时间复杂度

Ionic2 环境搭建、项目搭建、项目发布、打包PAK

/******* 执行1-3,可搭建项目成功 执行1-9, 可发布成开发版apk 执行1-15,可发布成发布版apk ******/ 1,下载nodejs 1.1 检测node是否安装成功 node -v 1.2 监测npm是否安装成功 npm -v2,安装cordova/ionic2 : npm install -g cordova ionic3,新建项目(指定2.0版本去初始化项目): ionic start demo 新建项目的时候,有5种模板让你选择,这里选择有侧边目录的模板 4,运行程

2019/08/28最新进展

今天完成的工作如下: 1.登录gitlab,添加了新的开发者,并且把本地已更新的项目上传到我们的project中. 2.修改了地图放缩级别. 3.修改了activity的标题栏颜色,修改后为深蓝色.修改了app的名字. 4.早上的时候测试了我们的地图定位精准度(截图时用户位于图书馆七楼北面): 4.在MainActivity中添加了一个Button,用来搜索目的地址. 点击 SEARCH 按钮,将会跳转到搜索页面: 今晚及明天计划: 1.读官方NaviDemo示例代码,搞明白这个导航是如何实现的

被坑死了的中文乱码

最近在调试一个接口.然后,就被中文乱码给坑了. 事情的经过是这样的,领导让我跟其他服务器的接口进行对接,简单点就是我这边暴露一个http的请求地址给对方,然后对方发请求到我这边.然后,对方请求时,使用的是GBK编码的GET请求,然后,中文到我这边就乱码了. 最初,我这边的tomcat使用的是UTF-8编码.然后,接到对方请求后,怎么转都转不过来中文.当初不想改tomcat的配置,我就将(GBK.UTF-8.GB2312.ios-8895-1)这四种编码来回转啊!怎么就转不过来. 后来,没办法.那

《聊一聊关于微信、支付宝、银联支付故事 --- 支付坑的故事》

支付坑的故事 -最主要的是微信 ,以下都是自己的思考得来的,难免有不足之处.如有错误,欢迎给位批评指正!也可在下面留下你的QQ 咱们一起讨论问题! 总结:楼主感觉微信支付是最坑人的-没有之一! 1:微信支付步骤如下:微信支付原理:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3 统一下单接口:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1   可以查看那些是必

.NET Web API 新手遇到的那些“坑”

以前一直做web项目,用的mvc.最近公司需要上线APP,准备用webAPI做接口,用习惯了MVC,API还是有好多细节的地方感觉很“坑”... 第一个坑,webAPI的默认路由规则不一样,通过命名来匹配调用方式,只匹配controller和参数,不匹配action...偶,NO!叫我这个使用了快两年MVC的小码农如何能承受如此重的打击!!!二话不说,咔咔咔,路由配置加上了action...心情瞬间舒畅了不少,再望望窗外的灰蒙蒙的天,我分明看见了蓝天与白云. 第二个坑,一个简单参数的POST方法

【踩坑速记】全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻麻再也不用担心依赖第三方jar包繁琐无趣啦.而,如果自己写一个开源库是一种怎样的体验,此乃利(装)国(逼)利(神)民(器)呀! 而一路装逼不易,你会发现如果你要发布你的开源库到官方的Bintray/Jcenter并非易事,所以先去网上一探究竟,简单的,难的,五花八门,全(误)面(人)具(子)备(弟)

xcode8 的坑

iOS-Xcode8之调用系统相册 (2326)  (6) 自从更新Xcode8之后啊,就独得皇上恩宠,啊呸,串戏了,就遇到各种大坑啊:哎,想当初怎么就手贱更新了呢:但是这种事情没法避免的,早更新晚更新早晚更新:更多的大坑有大牛们去填,我们知道哪地方有坑怎么填就够了嘿嘿嘿! 今天我想讲的是更新后调用系统功能出现的大坑,虽然网上好多教程,但是呢,谢谢又不犯法,哈哈哈,开个玩笑啦, 废话不多说,进入正题 好多更新完Xcode8 的小盆友们(我也是小盆友啦),会发现当我们调用系统功能,相册,相机,麦克

支付宝和微信支付的各种填坑

填坑 支付宝填坑是每个接入支付宝必经之路,下面是我接入支付宝遇到的问题汇总,希望大家在接入的路上少一点弯路 问题1. Util/base64.h:63:21: Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’ 解决办法: 这是base64.h中没有加入#import 系统库文件导致,这个错误报错方法直接想喷它一脸.报错方式太恶心. 1 2 解决办法: 这是base64.h中没有加入#import  系