디스크 최적 저장 및 테이프 최적 저장 문제

2503 단어
테이프 최적의 스토리지
제목 설명
n 프로그램 {1,2,..., n} 이 (가) L 길이의 테이프에 저장되어 있습니다.프로그램 i는 테이프에 보관되는 길이가 Li이고 1<=i<=n입니다.이 n개 프로그램의 읽기 확률은 각각 p1,p2,...,pn이고 pi+p2+...+pn=1이다.이 n개의 프로그램을 i1, i2,..., in 순서로 저장하면 읽기 프로그램ir에 필요한 시간tr=c*(Pi1Li2+Pi2Li2+...+Pir*Lir).이 n개의 프로그램의 평균 읽기 시간은 t1+t2+...+tn이다.테이프의 가장 좋은 저장 문제는 이 n 프로그램이 테이프에 저장된 순서를 정하여 평균 읽기 시간을 최소화해야 한다.이 문제를 풀 수 있는 알고리즘을 시험적으로 설계하고 알고리즘의 정확성과 계산의 복잡성을 분석한다.프로그래밍 작업: 지정한 n개 프로그램이 테이프에 저장된 길이와 읽기 확률에 대해 n개 프로그램의 가장 좋은 저장 방안을 프로그래밍합니다.
입력 파일 input.txt는 입력 데이터를 제공합니다.첫 번째 행은 파일 개수를 나타내는 양의 정수 n입니다.다음 n줄에는 두 개의 정수 a와 b가 있는데 각각 프로그램이 테이프에 저장된 길이와 읽기 확률을 나타낸다.실제 k번째 프로그램의 읽기 확률ak/(a1+a2+...+an).모든 입력은 c=1로 가정합니다.출력
계산된 최소 평균 읽기 시간을 나타내는 실수 1개를 출력합니다.샘플 입력
5 71 872 46 452 9 265 73 120 35 87
샘플 출력
85.6 분석: 읽기 확률에 따라 작은 순서에서 큰 순서로 배열하고 배열된 순서가 가장 좋은 순서이다
#include 
#include
using namespace std;
typedef struct jojo
{
	int data;
	double p;
	double res;
}wwh;
bool cmp(wwh a, wwh b)
{
	return a.res>N;
	wwh wwh1[N];
	for(int i=0;i>wwh1[i].data>>wwh1[i].p;
	}
	double sum=0;
	for(int i=0;i

디스크 최적 스토리지
제목 설명
제목: 디스크에 n개의 파일이 있습니다. f1, f2,..., fn, 파일마다 디스크에 있는 1개의 트랙을 차지합니다.이 n개의 파일의 검색 확률은 각각 p1,p2,...,pn이고 p1+p2+...+pn=1이다.헤드가 현재 트랙에서 검출된 정보 트랙으로 이동하는 데 필요한 시간은 이 두 트랙 사이의 지름 거리로 측정할 수 있다.만약 파일pi가 i도에 저장된다면 1Pjd(i, j)]. 그 중에서 d(i, j)는 i도와 j도 사이의 지름방향 거리|i-j|요구: 입력: 1줄은 정수 n으로 파일 개수를 나타낸다.두 번째 줄에는 n개의 정수ai가 있는데 파일의 검색 확률을 나타낸다.출력: 계산된 최소 검색 시간입니다.
사고방식: 먼저 n개의 파일을 방문 확률에 따라 큰 것에서 작은 것으로 정렬하고 확률이 가장 큰 것은 중간에 놓아야 한다. 큰 것과 큰 것은 가장 큰 양쪽에 놓고 작은 것은 큰 왼쪽과 큰 것은 오른쪽에 놓아야 한다.
#include
#include
#include
using namespace std;
bool cmp(double a, double b)
{
	return a>b;
}
int main()
{
	int N;
	cin>>N;
	double file[N];
	double sum=0; 
	for(int i=0;i>file[i];
		sum+=file[i];
	}
	for(int i=0;i=0;i--)
	{
		a[i]=file[0+2*mid-2*i-1];//              
	}
	for(int i=mid+1;i

좋은 웹페이지 즐겨찾기