zoukankan      html  css  js  c++  java
  • CODEVS1533 互斥的数(哈希表)

      给定一个集合,要求一个最大子集,满足两两之间不互斥。对两个数x,y互斥的定义是,y=p*x。

      先对集合中的数从小到大排序后线性扫,若一个数x可以取则取,取完之后p*x这个数不可取。由于数字较大,使用哈希表来判断。

      

     1 Program CODEVS1533;
     2 const maxn=1000007;
     3 var a,f:array[0..maxn] of longint;
     4     num,m,n,i,j,k,x,y,z:longint;
     5  procedure sort(l,r: longint);
     6       var
     7          i,j,x,y: longint;
     8       begin
     9          i:=l;
    10          j:=r;
    11          x:=a[(l+r) div 2];
    12          repeat
    13            while a[i]<x do
    14             inc(i);
    15            while x<a[j] do
    16             dec(j);
    17            if not(i>j) then
    18              begin
    19                 y:=a[i];
    20                 a[i]:=a[j];
    21                 a[j]:=y;
    22                 inc(i);
    23                 j:=j-1;
    24              end;
    25          until i>j;
    26          if l<j then
    27            sort(l,j);
    28          if i<r then
    29            sort(i,r);
    30       end;
    31 procedure insert(x:longint);
    32 var h:longint;
    33 begin
    34   h:=x mod maxn;
    35   while (f[h]<>0) and (f[h]<>x) do
    36     h:=(h+1) mod maxn;
    37   f[h]:=x;
    38 end;
    39 function find(x:longint):boolean;
    40 var h:longint;
    41 begin
    42   h:=x mod maxn;
    43   while (f[h]<>0) and (f[h]<>x) do
    44     h:=(h+1) mod maxn;
    45   if f[h]=0 then exit(false) else exit(true);
    46 end;
    47 begin
    48   readln(n,m);
    49   for i:=1 to n do read(a[i]);
    50   sort(1,n);
    51   num:=0;
    52   for i:=1 to n do
    53     begin
    54       if find(a[i]) then continue;
    55       inc(num);
    56       insert(a[i]*m);
    57     end;
    58   writeln(num);
    59 end.
  • 相关阅读:
    Javascript错误调试与处理
    大话数据结构笔记——第七章 图
    大话数据结构笔记——第六章 树
    前端常见面试题(三)垂直居中的10种方式
    优化transform在过渡效果中出现文字模糊和抖动问题
    H-ui 管理系统
    thinkphp第一节结构
    php实现验证码
    fullpage.js
    jquery的使用
  • 原文地址:https://www.cnblogs.com/rpSebastian/p/4143692.html
Copyright © 2011-2022 走看看