萬惡的三校聯考

2022-04-30 19:06:10 字數 4752 閱讀 3274

提高組

\[\text

\]求:

\[\sum\limits^_st(i)

\]\(st(i)=i\) 的約數個數。

\(l \leq r \leq 10^7\)

並不知道怎麼推公式,所以就暴力直接跑。

時間複雜度:

\[\sum\limits^_\frac

\]怎麼辦,大概是 \(1.6 \times 10^8\)。況且我還用了 \(pascal\)。

後面想到一種卡常方法,只要不開陣列就可以了。\(1400+ms\ ->\ 800ms\)。

預計得分: \(100pts\)。

實際得分: \(100pts\)。

// t1

var i,j,s,t:longint;

ans:int64;

begin

read(s,t);

for i:=2 to t do

begin

j:=i; while j<=t do begin if (j>=s) then inc(ans); inc(j,i); end;

end;

writeln(ans+t-s+1);

end.

\[\text

\]給你乙個序列,每乙個位置有多種顏色,要求求乙個最小的完整的序列且包含所有顏色。序列很長, \(2^\)。

考慮到這種東西可以用佇列來求,然後我就離散化一下就好了。

預計得分: \(100pts\)。

實際得分: \(0pts\)。(原因竟然是沒有輸出)

// t2

uses math;

var num,node:array[-1..2100000] of int64;

bucket:array[-1..10000] of longint;

n,m,k,p,tail,he,ta,kind,ans:int64;

i,j:longint;

procedure swap(var x,y:int64);var t:longint; begin t:=x; x:=y; y:=t; end;

procedure sort(l,r:longint);

var i,j,s:longint;

begin

i:=l; j:=r; s:=num[(l+r) >> 1];

repeat

while num[i]s do dec(j);

if i<=j then

begin

swap(num[i],num[j]);

swap(node[i],node[j]);

inc(i); dec(j);

end;

until i>=j;

if il then sort(l,j);

end;

begin

read(n,m); tail:=0; ans:=maxlongint*888; num[0]:=-1;

for i:=1 to m do

begin

read(k);

for j:=1 to k do begin read(p); inc(tail); num[tail]:=p; node[tail]:=i; end;

end;

sort(1,tail); kind:=0; he:=0;

for i:=1 to tail do

begin

if bucket[node[i]]=0 then inc(kind); inc(bucket[node[i]]);

while kind>=m do

begin

inc(he); dec(bucket[node[he]]);

if bucket[node[he]]=0 then dec(kind);

ans:=min(ans,num[i]-num[he]);

end;

end;

writeln(ans);

end.

\[\text

\]給你乙個矩陣(\(n \times n\)),有一些障礙和空地,讓你求移走 \(k\) 個障礙以後兩個空地之間的最長距離。\(n \leq 3\times 10\)。

只需要求出乙個座標點 \(x,y\) 到另乙個座標點 \(l,r\) 經過的障礙個數就可以了。偷懶用了 \(floyd\)。

這是神馬情況:

預計得分 : \(50\)~\(80pts\)。

實際得分 : \(0pts\)。

// t3

uses math;

var id:array[-1..122,-1..122] of longint;

table:array[-1..122,-1..122] of longint;

i,j,n,m,k,l,r,num,tmp,node:longint;

s:string;

ans:real;

function judge(x,y:longint):boolean;

begin

if (x=0)or(y=0)or(x=n+1)or(y=m+1) then exit(false); exit(true);

end;

function disq(l,r,x,y:longint):real;

begin

l:=(l-x)*(l-x); r:=(r-y)*(r-y); exit(sqrt(l+r));

end;

procedure link(x,y,sum:longint);

begin

table[x,y]:=max(table[x,y],sum); table[y,x]:=max(table[x,y],max(table[y,x],sum));

end;

begin

for i:=1 to 31 do for j:=1 to 31 do table[i,j]:=-maxlongint div 8333;

readln(n,m,tmp); node:=n*m; num:=0; ans:=-maxlongint div 8333;

for i:=1 to n do for j:=1 to m do begin inc(num); id[i,j]:=num; end;

for i:=1 to n do

begin

readln(s);

for j:=1 to m do

begin

val(s[j],k);

if k=1 then

begin

for k:=1 to node do link(k,id[i,j],1); continue;

end;

if judge(i-1,j) then link(id[i-1,j],id[i,j],0);

if judge(i+1,j) then link(id[i+1,j],id[i,j],0);

if judge(i,j-1) then link(id[i,j-1],id[i,j],0);

if judge(i,j+1) then link(id[i,j+1],id[i,j],0);

end;

end;

for k:=1 to node do

for i:=1 to node do

for j:=1 to node do

begin

table[i,j]:=min(table[i,j],table[i,k]+table[k,j]);

end;

for i:=1 to n do

for j:=1 to m do

for l:=1 to n do

for r:=1 to m do

begin

if table[id[i,j],id[l,r]]>tmp then continue;

ans:=max(ans,disq(i,j,l,r));

end;

writeln(ans:0:6);

end.

\[\text

\]給你乙個圖,然後讓你求有多少種方法可以從 \(1 -> n\) 號點且用時為 \(t\)。

不會,直接爆搜。

預計得分 : \(30pts\)。

實際得分 : \(30pts\)。

// t4

var table:array[-1..11,-1..11] of longint;

i,j,n,m,ans:longint;

s:string;

procedure dfs(x,dis:longint);

var i:longint;

begin

if dis>m then exit;

if (dis=m)and(x=n) then begin inc(ans); exit; end;

for i:=1 to n do if (table[x,i]<>0) then dfs(i,dis+table[x,i]);

end;

begin

readln(n,m);

for i:=1 to n do

begin

readln(s);

for j:=1 to n do val(s[j],table[i,j]);

end;

dfs(1,0);

writeln(ans mod 2009);

end.

總結:

殺馬特

萬惡的英語

entity en ti ty ent t n.實體 本質 存在 attribute at trib ute tr bju t n.屬性 標誌,象徵 特質,特性 定語 v.歸於,屬於 perspective per spec tive p r spekt v p s n.遠景,透視,看法 take ...

萬惡的英語

entity en ti ty ent t n.實體 本質 存在 attribute at trib ute tr bju t n.屬性 標誌,象徵 特質,特性 定語 v.歸於,屬於 perspective per spec tive p r spekt v p s n.遠景,透視,看法 take ...

萬惡的中介

中介者模式 鬥地主 using system.collections.generic region 主程式 public class 鬥地主 endregion 乙個牌局 中介者 public class mediator 倍率 public int multiple 加入 public bool ...