通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"NOIP真题" 试卷中 NOIP第十六届全国青少年信息学奥林匹克联赛初赛试题[2010提高组] 中有题目如下:
第1题
(烽火传递) 烽火台又称烽燧,是重要的军事防御设施,一般建在险要处或交通要道上。 一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情。在 某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确地传 递,在连续的 m个烽火台中至少要有一个发出信号。现输入 n、m和每个烽火台发出信号的代 价,请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确传 递。
例如,有 5 个烽火台,他们发出信号的代价依次为 1,2,5,6,2,,且 m为 3,则总共最少 花费代价为 4,即由第 2 个和第 5 个烽火台发出信号。
#include<iostream> #include<cstring> using namespace std; const int SIZE=100; int n,m,r,value[SIZE],heap[SIZE], pos[SIZE],home[SIZE],opt[SIZE]; //hep[i] 表示用顺序数组储存的堆 heap 中第 i 个元素的值 //pos[i] 表示 opt[i] 在堆 heap中的位置,即 heap[pos[i]]=opt[i] //home[i] 表示 heap[i] 在序列 opt 中的位置,即 opt[home[i]]=heap[i] void swap(int i,int j)// 交换堆中的第 i 个和第 j 个元素 { int tmp; pos[home[i]]=j; pos[home[j]]=i; tmp=heap[i]; head[i]=head[j]; heap[j]=tmp; tmp=home[i]; home[i]=home[j]; home[j]=tmp; } void add(int k)// 在堆中插入 opt[k] { int i; r++; heap[r]= ① ; pos[k]=r; ② ; i=r; while( (i>1) && (heap[i]<heap[i/2]) ) { swap(i,i/2); i/=2; } } void remove(int k)// 在堆中删除 opt[k] { int i,j; i=pos[k]; swap(i,r);; r--; if(i==r+1) return ; while( (i>1)&&(heap[i]<heap[i/2]) ) { swap(i,i/2); i/=2; } while(i+i<=r) { if( (i+i+1<=r) && (heap[i+i+1]<heap[i+i]) ) j=i+i+1; else ③ ; if(hea[i]>heap[j]) { ④ ; i=j; } else break; } } int main() { int i; cin>>n>>m; for(i=1;i<=n;i+++) cin>>value[i]; r=0; for(i=1;i<=m;i++) { opt[i]=value[i]; add(i); } for(i=m+1;i<=n;i++) { opt[i]= ⑤ ; remove( ⑥ ); add(i); } cout<<heap[1]<<endl; return 0; }
所属试卷:NOIP第十六届全国青少年信息学奥林匹克联赛初赛试题[2010提高组]
有如下程序(cout格式控制setfill、setw相
执行下列语句段后,输出字符'*'的个数是。
在在列链表中,能够从任意一个节点出发直接访问到所有结点
对于页式虚拟存储管理系统,下列关于存储器层次结构的叙述
阅读程序,写出程序运行结果。
绐定程序MODI1.C中函数fun的功能是:从低位开始
有以下程序段执行上述语句后,m和n的值分别是( )。
给定程序中,函数fun的功能是:将形参n所指变量中,各
有以下程序程序的运行结果是( )。
若有以下程序则程序的输出结果是。
已知path =r'c:\test.html',那么表
下面程序运行结果是_______。
以下程序打开新文献f.txt,并调用字符输出函数将a数
在C语言中,当表达式值为0时表达逻辑值“假”,当表达式
在超级用户下显示Linux系统中正在运行的全部进程,应
有一普通用户想在每周日凌晨零点零分定期备份/user/
下列( )不属于连接种类
折半查找法的查找速度一定比顺序查找法快 。
例如数据库中有A表,包括学生,学科,成绩三个字段 ,
以下表示可变长度字符串的数据类型是( )
现在用如下代码来计算xn,其时间复杂度为。
100BaseT 快速以太网使用的导向传输介质是。
(9分)43题的C语言代码,对应的机器级代码如下,请回
功能:根据整型形参m,计算如下公式的值:y=1/2+1
若int x=6;则x+=x-=x*x表达式最后x的值
有以下程序程序执行后的输出结果是
给定程序函数fun的功能是:比较两个字符串,将长的那个
设G是有n个结点、m条边(n ≤m)的连通图,必须删去
输入: 10 20输出: _________
输入: 9734526输出: ____________
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2