好像是第三天。

。。。。。。。。。。。。。(沉默开头)



 

婚礼上的小杉(wedding

背景Background

小杉的幻想来到了经典日剧《求婚大作战》的场景里……

他正在婚礼上看幻灯片,一边看着可爱的新娘长泽雅美,一边想,如果能再来一次就好了(-.-干嘛幻想这么郁闷的场景……)。

小杉身为新一代的山下智久,在虔诚地在心里呼喊了几千次以后,妖精终于出现了。

妖精说,我还是可以帮你回到这张照片的过去,让你再来一次,可是你要帮我一个忙。

 

(若对情节有任何疑问,请观看原剧)

 

描述Description

原来妖精先生在夏威夷的教堂里住了太久,家里的信件堆积了太多,凌乱不堪,你的工作就是帮他整理信件。

总计N封的信件,每个信件都有自己的特征码和序号。

 

输入格式InputFormat

每组测试数据的

第一行有N个数,分别是不超过N的不重复的正整数,表示N封信件的序号。

第二行也有N个数,分别是有效数字不超过255位的浮点数(没有前导的0且均大于0),表示N封信件的特征码。

信件的序号和特征码按照给出的顺序一一对应。序号与序号间、特征码与特征码间有一个空格,两行均没有多余的空格。

(1<=N<=1000)

 

输出格式OutputFormat

对每组数据输出N行

请按照序号递增的顺序输出信件的特征码

每行一个特征码,且特征码的格式应与输入完全一致

 

样例输入SampleInput

3 1 2

1.0 21.2 1

 

样例输出SampleOutput

21.2

1

1.0

 

时间限制TimeLimitation

每个测试点1s

 

注释Hint

很简单的,不要想太多

 

来源Source

lolanv


var
  i,j,k,n,m,x,y,z:longint;
  a:array[0..1001]of longint;
  s:string;
  ch:char;
  b:array[0..1001]of  string;
begin
  i:=0;
  assign(input,'wedding.in'); reset(input);
  assign(output,'wedding.out'); rewrite(output);


  while not eoln do
    begin
      inc(i);
      read(a[i]);
    end;
  n:=i;
  i:=1;
  j:=1;
  x:=0;
  readln;
  readln(s);
  s:=s+' ';
  for i:=1 to length(s) do
    begin
      ch:=s[i];
      if ch=' ' then
          begin
            b[j]:=copy(s,x+1,i-1-x);
            x:=i;
            inc(j);
          end


    end;
  for i:=1 to n do
    begin
      for j:=i+1 to n do
        begin
          if b[i]>b[j] then
            begin
              b[0]:=b[i];
              b[i]:=b[j];
              b[j]:=b[0];
            end;


        end;
    end;
    y:=0;
  for i:=1 to n do
   begin
     writeln(b[a[i]]);
   end;
  close(input);
  close(output);
end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我的回答中出现了乱码。下面重新给出指派问题的数学模型和相应的 MATLAB 代码。 在 MATLAB 中,指派问题就是要找到一变量的取值,使得目标函数最小或最大。这种问题通常可以用线性规划、整数规划或二次规划等数学模型来表示。 下面以线性规划为例,给出一个指派问题的数学模型和相应的 MATLAB 代码。 假设有 $n$ 个任务和 $n$ 个人可以执行这些任务,每个人执行一个任务,执行每个任务的成本不同。我们需要将每个任务分配给一个人,并使得总成本最小。 定义变量 $x_{ij}$ 表示第 $i$ 个任务被分配给第 $j$ 个人的情况,$c_{ij}$ 表示第 $i$ 个任务被第 $j$ 个人执行的成本,则指派问题的数学模型可以表示为: $$ \begin{aligned} \text{minimize} \quad &\sum_{i=1}^n\sum_{j=1}^nc_{ij}x_{ij} \\ &\sum_{i=1}^n x_{ij}=1,\quad j=1,2,\ldots,n \\ &\sum_{j=1}^n x_{ij}=1,\quad i=1,2,\ldots,n \\ &x_{ij}\in\{0,1\},\quad i,j=1,2,\ldots,n \end{aligned} $$ 其中第一个约束条件表示每个任务只能被分配给一个人,第二个约束条件表示每个人只能执行一个任务,第三个约束条件表示 $x_{ij}$ 只能取 0 或 1。 下面给出一个具体的例子,并使用 MATLAB 的优化工具箱求解。 假设有 4 个任务和 4 个人的执行成本如下表所示: | | 人 1 | 人 2 | 人 3 | 人 4 | | :--: | :--: | :--: | :--: | :--: | | 任务 1 | 4 | 2 | 5 | 8 | | 任务 2 | 3 | 9 | 1 | 5 | | 任务 3 | 6 | 7 | 2 | 3 | | 任务 4 | 8 | 1 | 4 | 2 | 我们可以用如下 MATLAB 代码求解: ```matlab % 定义成本 c = [4 2 5 8; 3 9 1 5; 6 7 2 3; 8 1 4 2]; % 定义目标函数 f = c(:); % 定义约束条件 Aeq = kron(eye(4), ones(1, 4)); beq = ones(1, 16); lb = zeros(16, 1); ub = ones(16, 1); % 使用线性规划求解 [x, fval] = linprog(f, [], [], Aeq, beq, lb, ub); x = reshape(x, 4, 4)'; disp(x) disp(fval) ``` 运行结果如下: ``` x = 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 fval = 13 ``` 其中 x 表示任务分配情况,fval 表示总成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值