[Học lập trình] Tổ chức tham quan

Status
Không mở trả lời sau này.
C

concanhcam

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,...., N). Hội thi có M xe taxi đánh số từ 1 đến M (MN) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, M (NM200);
- Dòng thứ hai chứa các số nguyên dương d1, d2, ..., dN;
- Dòng thứ ba chứa các số nguyên dương v1, v2, ..., vM.
- Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
Kết quả: Ghi ra file văn bản P2.OUT:
- Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
- Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, ..., N).
 
M

marik

Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,...., N). Hội thi có M xe taxi đánh số từ 1 đến M (MN) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, M (NM200);
- Dòng thứ hai chứa các số nguyên dương d1, d2, ..., dN;
- Dòng thứ ba chứa các số nguyên dương v1, v2, ..., vM.
- Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
Kết quả: Ghi ra file văn bản P2.OUT:
- Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
- Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, ..., N).

Anh tin bây giờ trong này không có ai đủ khả năng làm bài này đâu em ạ ;))
 
P

p_trk

Nếu làm được thì bạn post cho các bạn cùng tham khảo.
mod T hy vọng bạn đừng phát ngôn ....... trong box
 
N

nguyenhungtu9x

Thử cố hết sức đi nói trước thì làm được điều gì đâu! Ko ai làm đc thì còn anh 11anhkhoeo nữa! Cứ đưa bài làm lên sai thì sửa có gì phải ngại
 
M

marik

Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,...., N). Hội thi có M xe taxi đánh số từ 1 đến M (MN) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, M (NM200);
- Dòng thứ hai chứa các số nguyên dương d1, d2, ..., dN;
- Dòng thứ ba chứa các số nguyên dương v1, v2, ..., vM.
- Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
Kết quả: Ghi ra file văn bản P2.OUT:
- Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
- Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, ..., N).

Nhìn qua bài này có vẻ hung hãn nhưng hóa ra khá là đơn giản, chỉ cần ghép đoàn đi xa nhất với xe tiêu thụ ít nhiên liệu nhất là được, kỹ thuật lập trình cũng không có gì phức tạp cả ;))


Anh xin sửa lại đề bài một chút, bạn trẻ nào rảnh rỗi có thể thử làm ;))


Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,...., N). Hội thi có M xe taxi đánh số từ 1 đến M (MN) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng trung bình là vij đơn vị thể tích/km khi đi di km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, M (NM200);
- Dòng thứ hai chứa các số nguyên dương d1, d2, ..., dN;
- M dòng sau chứa các số nguyên dương v11, v21, ..., vN1.
............................................
v1j,v2j,.....vNj
............................................
v1M,v2M,......VNM
chứa mức tiêu thụ xăng của xe j đối với từng quãng đường tương ứng
- Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
Kết quả: Ghi ra file văn bản P2.OUT:
- Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
- Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, ..., N).
Bây giờ thì thành "khó" thật rồi ;))
 
M

marik

Gửi Vk yêu

Mã:
Program thamquan;
uses crt;
const fi = 'P2.inp';
         fo = 'P2.out';
type _type=array[1..2] of integer;
 mang=array[1..200] of _type;

var f:text;
 d,v:mang;
 m,n:byte;

procedure input;
var i:byte;
begin
 assign(f,fi);
 reset(f);
 readln(f,n,m);
 for i:=1 to n do
 begin
 read(f,d[i,1]);
 d[i,2]:=i;
 end;
 readln(f);
 for i:=1 to m do
 begin
 read(f,v[i,1]);
 v[i,2]:=i;
 end;
 close(f);
end;

procedure sapxeptang(var m:mang;n:byte);
var d:_type;
 i,j:byte;
begin
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if m[j,1]m[i,1] then
 begin
 d:=m[j];
 m[j]:=m[i];
 m[i]:=d;
 end;
end;

var i:byte;
 tong:integer;
begin
 input;
 sapxeptang(d,n);
 sapxeptang(v,m);
 tong:=0;
 for i:=1 to n do tong:=tong+v[n-i+1,1]*d[i,1];
 for i:=1 to n do v[i,1]:=d[n-i+1,2];
 xapxeptang(v,n);
 assign(f,fo);
 rewrite(f);
 writeln(f,tong);
 for i:=1 to n do writeln(f,v[i,2]);
 close(f);
end.

Vẫn phải vào làm không làm không tập trung được, Điện thoại cứ reo ầm ĩ. Từ mai tắt điện thoại tắt yahoo các chú cố gắng giúp chị mày nhé

Anh thấy có vài vấn đề, thứ nhất là kiểu khai báo của em, anh chưa dùng kiểu khai báo mảng 2 chiều kiểu vậy bao giờ nên không biết truy cập như bình thường hay là a[j]. Tiếp là em khai biến d,m,n chung cho chương trình con lẫn chương trình chính. Tiếp nữa là em dùng mảng kiểu integer nhưng chỉ dùng các biến kiểu byte anh thấy không hợp lý!


Anh tin bây giờ trong này không có ai đủ khả năng làm bài này đâu em ạ ;))

Anh nói câu này lúc trước do mới chỉ đọc qua, anh tưởng bài này kiểu bài ở dưới anh sửa, cái đó là do lỗi của anh cẩu thả. Nhưng những gì anh nói cũng chỉ là thực tế thôi! Và anh không hiểu vấn đề này liên quan gì đến stt của anh, dòng trên hay dòng dưới :-??
 
O

ochuotqb

Gửi Vk yêu

Mã:
Program thamquan;
uses crt;
const fi = 'P2.inp';
         fo = 'P2.out';
type _type=array[1..2] of integer;
 mang=array[1..200] of _type;

var f:text;
 d,v:mang;
 m,n:byte;

procedure input;
var i:byte;
begin
 assign(f,fi);
 reset(f);
 readln(f,n,m);
 for i:=1 to n do
 begin
 read(f,d[i,1]);
 d[i,2]:=i;
 end;
 readln(f);
 for i:=1 to m do
 begin
 read(f,v[i,1]);
 v[i,2]:=i;
 end;
 close(f);
end;

procedure sapxeptang(var m:mang;n:byte);
var d:_type;
 i,j:byte;
begin
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if m[j,1]m[i,1] then
 begin
 d:=m[j];
 m[j]:=m[i];
 m[i]:=d;
 end;
end;

var i:byte;
 tong:integer;
begin
 input;
 sapxeptang(d,n);
 sapxeptang(v,m);
 tong:=0;
 for i:=1 to n do tong:=tong+v[n-i+1,1]*d[i,1];
 for i:=1 to n do v[i,1]:=d[n-i+1,2];
 xapxeptang(v,n);
 assign(f,fo);
 rewrite(f);
 writeln(f,tong);
 for i:=1 to n do writeln(f,v[i,2]);
 close(f);
end.

Vẫn phải vào làm không làm không tập trung được, Điện thoại cứ reo ầm ĩ. Từ mai tắt điện thoại tắt yahoo các chú cố gắng giúp chị mày nhé
Bài trên thì: Chương trình trên sẽ chạy chậm nếu chúng ta mở rộng bài toán (chẳng hạn n <= m <= 8000)
Bài này là bài 2 thi quốc gia năm 1999.
Bài trên anh tự làm hả. :-s


Còn đây là 1 code bài khác em đã tìm được trên mạng.
PHP:
const
  Inp = 'P2.INP';
  Out = 'P2.OUT';
var
  n, m: Integer;
  Val, Pos: array[1..2, 1..8000] of Integer;
procedure ReadInput;
var
  i: Integer;
  hf: Text;
begin
  Assign(hf, Inp);
  Reset(hf);
  Readln(hf, n, m);
  for i := 1 to n do Read(hf, Val[1, i]);
  Readln(hf);
  for i := 1 to m do Read(hf, Val[2, i]);
  Close(hf);
  for i := 1 to m do
  begin
    Pos[1, i] := i;
    Pos[2, i] := i;
  end;
end;
procedure QuickSort(t, l, r: Integer);
var
  x, tg, i, j: Integer;
begin
  x := Val[t, (l + r) div 2];
  i := l; j := r;
  repeat
    while Val[t, i] < x do Inc(i);
    while Val[t, j] > x do Dec(j);
    if i <= j then
    begin
      Tg := Val[t, i]; Val[t, i] := Val[t, j]; Val[t, j] := Tg;
      Tg := Pos[t, i]; Pos[t, i] := Pos[t, j]; Pos[t, j] := Tg;
      Inc(i); Dec(j);
    end;
  until i > j;
  if i < r then QuickSort(t, i, r);
  if j > l then QuickSort(t, l, j);
end;
procedure WriteOutput;
var
  i: Integer;
  Sum: LongInt;
  hf: Text;
begin
  Sum := 0;
  for i := 1 to n do Inc(Sum, Val[1, n - i + 1] * Val[2, i]);
  for i := 1 to n do Val[1, Pos[1, n - i + 1]] := Pos[2, i];
  Assign(hf, Out);
  Rewrite(hf);
  Writeln(hf, Sum);
  for i := 1 to n do Writeln(hf, Val[1, i]);
  Close(hf);
end;
begin
  ReadInput;
  QuickSort(1, 1, n);
  QuickSort(2, 1, m);
  WriteOutput;
end.
 
Last edited by a moderator:
  • Like
Reactions: Nobodytk11

cuongtk2002

Học sinh mới
Thành viên
18 Tháng tư 2014
5
1
16
22
LÀM ĐC MỖI Ý a !
JFBQ00125061225b
var a,b:array[0..100] of longint;
i,n,j,m,s,tam,k:longint;
begin
readln(n,m);
for i:=1 to n do readln(a);
for j:=1 to m do readln(b[j]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a<a[j] then
begin
tam:=a;
a:=a[j];
a[j]:=tam;
end;
for i:=1 to m-1 do
for j:=i+1 to m do
if b>b[j] then
begin
tam:=b;
b:=b[j];
b[j]:=tam;
end;
s:=0;
for i:=1 to n do s:=s+a*b;
writeln(s);
readln
end.
 
Last edited:
Status
Không mở trả lời sau này.
Top Bottom