9.2 NOIP提高组试题精解(2)
9-18 fruit.c
#include <stdio.h> #define MAXN 10000 int Queue1[MAXN], Queue2[MAXN]; void Insert(int n, int data) //按增序插入数组 { int i, mid, left, right; left = ; right = n - ; || data >= Queue1[right]) //最大 { Queue1[n] = data; return; } else if (data < Queue1[left]) //最小 { ; i--) { Queue1[i + ] = Queue1[i]; } Queue1[] = data; return; } while (left <= right) { mid = (left + right) / ; if (Queue1[mid] <= data) { left = mid + ; } else if (Queue1[mid] > data) { right = mid - ; } } if (Queue1[mid] < data) mid++; ; i >= mid; i--) //插入到a[mid]之前 { Queue1[i + ] = Queue1[i]; } Queue1[mid] = data; } int Calc(int a[], int n) //按增序插入数组 { int i, frontOld, frontNew, rearNew; ; ) ]; ) ] + a[]; ; i < n; i++) //按增序插入数组 Insert(i, a[i]); //先加上前两个 frontOld = frontNew = rearNew = ; Queue2[rearNew++] = Queue1[frontOld] + Queue1[frontOld + ]; frontOld += ; while (frontOld < n) //合并Queue1的所有元素 { if (Queue1[frontOld] > Queue2[frontNew]) sum = Queue2[frontNew++]; else sum = Queue1[frontOld++]; if (frontNew < rearNew && frontOld < n) { if (Queue1[frontOld] > Queue2[frontNew]) sum += Queue2[frontNew++]; else sum += Queue1[frontOld++]; } else if (frontNew < rearNew) sum += Queue2[frontNew++]; else if (frontOld < n) sum += Queue1[frontOld++]; Queue2[rearNew++] = sum; } ) //如果Queue2的元素没有合并完 { Queue2[rearNew++] = Queue2[frontNew] + Queue2[frontNew + ]; frontNew += ; } sum = ; ; i < rearNew; i++) sum += Queue2[i]; return sum; } int main() { int n, i, sum; }; FILE *fp1, *fp2; if ((fp1 = fopen("fruit.in", "r")) == NULL) { printf("不能打开文件!\n"); exit(); } fscanf(fp1, "%d\n", &n); //果子种类数 ; i < n; i++) //各类果子的数量 fscanf(fp1, "%d", &a[i]); fclose(fp1); sum = Calc(a, n); if ((fp2 = fopen("fruit.out", "w")) == NULL) { printf("不能打开文件!\n"); exit(); } printf("%d\n", sum); fprintf(fp1, "%d\n", sum); fclose(fp2); getch(); ; }
9-19 chorus.c
#include <stdio.h> #define MAXN 101 int main() { }, flag2[MAXN]={}, a[MAXN]={}; int n, max; int i, j; FILE *fp1, *fp2; if ((fp1 = fopen("chorus.in", "r")) == NULL) { printf("不能打开文件!\n"); exit(); } fscanf(fp1, "%d\n", &n); ; i <= n; i++) fscanf(fp1, "%d", &a[i]); fclose(fp1); a[] = ; //设置为一个最小值 ; i <= n; i++) //用动规求最长升序序列 { ; j >= ; j--) { > flag1[i])) flag1[i] = flag1[j] + ; } } a[n + ] = ; //最后设置一个最小值 ; i--)//用动规求最长降序序列 { ; j <= n + ; j++) { > flag2[i]) flag2[i] = flag2[j] + ; } } max = ; ; i <= n; i++) //计算升序和降序序列的最多人数 { if (flag1[i] + flag2[i] > max) { max = flag1[i] + flag2[i]; printf("%d,%d\n",flag1[i],flag2[i]); } } if ((fp2 = fopen("chorus.out", "w")) == NULL) { printf("不能打开文件!\n"); exit(); } printf(); //减去要保留的人数,就得到出列人数 fprintf(fp2, ); fclose(fp2); getch(); ; }
9.2 NOIP提高组试题精解(2)的更多相关文章
- 9.2 NOIP提高组试题精解(1)
9-16 poise.c #include <stdio.h> #define MAXN 1001 int main() { ], flag[MAXN] = { }; //保存6种砝码的数 ...
- 9.1 NOIP普及组试题精解(2)
9-4 soldier.c #include <stdio.h> #define MAXN 21 }; int n, m, x, y; //n,m为B点的行列坐标位置,x,y为马的坐标位置 ...
- 9.1 NOIP普及组试题精解(3)
9-6 seat.c #include <stdio.h> #define MAXN 1001 void swap(int *a, int *b) //交换数据 { int t; t = ...
- 9.1 NOIP普及组试题精解(1)
9-1 series1.c #include <stdio.h> int main() { float s=0.0,k; int n; printf("输入数字k(1~15):& ...
- noip2010初赛提高组 试题详解
转载自:https://blog.csdn.net/eirlys_north/article/details/52889970 一.单项选择题 1.与16进制数 A1.2等值的10进制数是 ( ) A ...
- noip2011初赛提高组 试题详解
转载自:https://blog.csdn.net/Eirlys_North/article/details/52889993 一.单项选择题(共20题,每题1.5分,共计30分,每题有且仅有一个正确 ...
- NOIP提高组2004 合并果子题解
NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...
- NOIP提高组初赛难题总结
NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
随机推荐
- Java千百问_05面向对象(006)_is-a,has-a,like-a是什么
点击进入_很多其它_Java千百问 1.is-a,has-a,like-a是什么 在面向对象设计的领域里,有若干种设计思路,主要有例如以下三种: is-a.has-a.like-a java中在类.接 ...
- 27:简单错误记录SimpleErrorLog
题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: ...
- python thrift hbase安装连接
默认已装好 hbase,我的版本是hbase-0.98.24,并运行 python 2.7.x 步骤: sudo apt-get install automake bison flex g++ git ...
- 【7.1.1】ELK集群搭建 之 ES集群
写在前边 昨天晚上就已经完成这篇博客了,就是在测试这块是否正常跑起来,晚上没搞完,上班前把电脑关机带着,结果没保存!基本上昨天写的东西都丢了,好在博客园的图片url还在. 为了让大家都轻松些,我轻松写 ...
- request 解决中文乱码问题
package request; import java.io.IOException;import javax.servlet.ServletException;import javax.servl ...
- linux下网卡绑定
网卡绑定的作用:1.冗余,防止单点故障 2.防止传输瓶颈 1.交换机端口绑定: system-view link-aggregation group 1 mode manual 比如把端口1和2进行绑 ...
- HTML经典标签用法
1.marquee属性的使用说明 <marquee> ... </marquee>移动属性的设置 ,这种移动不仅仅局限于文字,也可以应用于图片,表格等等 鼠标属性 onMo ...
- 网页图表类框架(插件)——百度eCharts和Highcharts
ECharts, 缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库, 可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 /10 ...
- MongoDB水平分片集群(转)
为何需要水平分片 1 减少单机请求数,将单机负载,提高总负载 2 减少单机的存储空间,提高总存空间. 下图一目了然: mongodb sharding 服务器架构 简单注解: 1 mongos 路由进 ...
- 高速修复汉澳sinox命令解释程序bash shell漏洞
bash是linux默认命令行管理程序shell.汉澳 sinox也安装有,尽管sinox并没有默认使用bash.可是用户一旦使用就会可能被通过漏洞入侵,所以必须高速修复.尽管sinox使用freeb ...