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, ...
随机推荐
- Github css加载失败,样式混乱解决办法
github被墙的解决办法 Github css加载失败,样式混乱解决办法 打开cmd,输入 nslookup github.com 8.8.8.8 ,下面就会显示出github的服务器地址列 ...
- Linux装mysqli.so
php 5.2.3+mysqli 安装与常见错误 总结 php 5.2.3+mysqli 安装与常见错误 总结 记得原来在编译php的已经已经加上参数--with-mysql=/usr/local ...
- 又一次认识java(九) ---- 内部类
注意注意!! ! 前排提示!!.本篇文章过长,最好收藏下来慢慢看.假设你之前对内部类不是非常熟悉,一次性看完,大概你会懵逼. . . 1. 内部类概述 一个类的定义放在还有一个类的内部,这个类就叫做内 ...
- Buck电路匹配和二极管仿真模式
Buck带同步整流,关闭二极管仿真模式会使空载损耗大 利用二极管仿真模式提高降压转换器轻负载效率 Buck电路工作原理以及三种工作模式分析 一.Buck电路原理图 Buck电路,又称降压电路,其基 ...
- Hibernate学习五----------组件属性
© 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...
- c# emit 动态实现接口
using System; using System.Linq; using System.Reflection; using System.Reflection.Emit; namespace Te ...
- C#中判断某个值是否存在于枚举
我有一个枚举类型: #region -酒的种类- public enum WineType { 白酒 = 3, 葡萄酒 = 4, 洋酒 = 5, 老年陈酒 = 16, 啤酒 = 17 } #endre ...
- 二、Silverlight中使用MVVM(二)——提高
在第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知 ...
- .NET C# 【小技巧】控制台程序,运行是否弹出窗口选择!
选中控制台程序项目,右键→属性→应用程序栏→输出类型: 1.Windows 应用程序(不弹出提示框)! 2.控制台应用程序(弹出提示框)! 3.类库(类库生成dll,是不能直接运行的,类库供应用程序调 ...
- 18- php Redis扩展编译
一:php扩展编译Redis :wget http://pecl.php.net/get/redis-2.2.5.tgz :tar -zxvf redis-.tgz :cd redis- :/usr/ ...