noip2016普及組複賽總結

2021-07-24 18:03:25 字數 4260 閱讀 5741

9點半從紀中出發,大概11點多來到廣州六中。

在六中旁邊一家小餐館吃了中餐,那餐廳真心很貴,一盆飯就要20元,我們那桌吃了四

盆......    xc:不想買單啦~\(≧▽≦)/~啦啦啦

然後就來到六中的某個功能室百無聊賴的休息了一會兒,兩點鐘進考場。

兩點半:

比賽開始,還是先看題...一二兩題太水了,直接開碼,1小時搞定兩題、

三點半:

仔細閱讀第三題題目,還是想不到100分做法,看來這次不能ak了,

選了70分暴力直接開切1小時搞定

四點半:

肩負著ac第四題的使命,在草稿紙上胡亂地推著式子、

貌似暴力四重迴圈只能拿40-50分,不行,還要繼續想

然後我就把3條公式的變形全部寫出來,

終於推出了三重迴圈,

列舉xa、xb、xc三處魔法值,然後再根據公式推出第四處,1小時搞定

實測得到能拿80~85分

五點半:

還剩半個小時,繼續檢查,隨心所欲地出著資料..............

六點: 

比賽結束~

估分:100+100+70+80=350分

洛谷得分:100+100+70+85=355分

紀中資料:100+100+70+85=355分

noip官方初評:100+100+70+85=355分

比賽**:

第一題:

var    n,x1,y1,x2,y2,x3,y3,min1,min2,min3:longint;

function min(x,y:longint):longint;

begin

if x0 then min1:=(n div x1+1)*y1 else min1:=(n div x1)*y1;

if n mod x2>0 then min2:=(n div x2+1)*y2 else min2:=(n div x2)*y2;

if n mod x3>0 then min3:=(n div x3+1)*y3 else min3:=(n div x3)*y3;

writeln(min(min(min1,min2),min3));

close(input);close(output);

end.

第二題:

var     a:array[1..12]of longint=(31,28,31,30,31,30,31,31,30,31,30,31);

s1,s2,s3:string;

i,j,bz,x1,x2,x3,y1,y2,y3,tot:longint;

begin

assign(input,'date.in');reset(input);

assign(output,'date.out');rewrite(output);

readln(s1);

readln(s2);

val(copy(s1,1,4),x1);

val(copy(s1,5,2),x2);

val(copy(s1,7,2),x3);

val(copy(s2,1,4),y1);

val(copy(s2,5,2),y2);

val(copy(s2,7,2),y3);

for i:=1to 4 do

if s1[i]<>s1[9-i] then

begin

bz:=1;

break;

end;

if bz=0 then inc(tot);

while(x1a[x2] then

begin

if (x2=2)and(x3=29)and(((x1 mod 4=0)and(x1 mod 100>0))or(x1 mod 400=0)) then else

begin

x3:=1;

inc(x2);

if x2>12then

begin

x2:=1;

inc(x1);

end;

end;

end;

str(x1,s1);

str(x2,s2);

str(x3,s3);

if x2>9 then s1:=s1+s2 else s1:=s1+'0'+s2;

if x3>9 then s1:=s1+s3 else s1:=s1+'0'+s3;

bz:=0;

for i:=1 to 4 do

if s1[i]<>s1[9-i] then

begin

bz:=1;

break;

end;

if bz=0 then inc(tot);

end;

writeln(tot);

close(input);close(output);

end.

第三題:

var     n,i,j,t,k,l:longint;

a:array[0..1000,0..3000]of longint;

b:array[0..100000]of longint;

c:array[0..100000]of longint;

begin

assign(input,'port.in');reset(input);

assign(output,'port.out');rewrite(output);

readln(n);

for i:=1to n do

begin

read(b[i],a[i,0]);

for j:=1 to a[i,0] do

begin

read(a[i,j]);

inc(c[a[i,j]]);

if c[a[i,j]]=1 then inc(l);

end;

while b[i]-86400>=b[t] do

begin

for k:=1 to a[t,0] do

begin

dec(c[a[t,k]]);

if c[a[t,k]]=0 then dec(l);

end;

inc(t);

end;

writeln(l);

end;

close(input);close(output);

end.

第四題:

var     i,j,k1,k2,n,m,t:longint;

a:array[1..40000]of longint;

b:array[1..15000,1..4]of int64;

c:array[1..15000]of longint;

begin

assign(input,'magic.in');reset(input);

assign(output,'magic.out');rewrite(output);

readln(n,m);

for i:=1to m do

begin

readln(a[i]);

inc(c[a[i]]);

end;

for i:=1to n-3 do

begin

if c[i]=0 then continue;

for j:=i+1 to n-2 do

begin

if c[j]=0 then continue;

if(j-i) mod 2=1 then continue;

t:=j+3*(j-i)+1;

if t>n-1 then break;

for k1:=t to n-1 do

begin

if c[k1]=0 then continue;

k2:=(j-i) div 2+k1;

if k2>n then break;

if c[k2]=0 then continue;

b[i,1]:=b[i,1]+c[j]*c[k1]*c[k2];

b[j,2]:=b[j,2]+c[i]*c[k1]*c[k2];

b[k1,3]:=b[k1,3]+c[i]*c[j]*c[k2];

b[k2,4]:=b[k2,4]+c[i]*c[j]*c[k1];

end;

end;

end;

for i:=1to m do

writeln(b[a[i],1],' ',b[a[i],2],' ',b[a[i],3],' ',b[a[i],4]);

close(input);close(output);

end.

NOIP 2016 普及組 複賽題解

t1 pencil 隨便做 include using namespace std int n,a,b,ans 2147483647 int main t2 date 列舉每個 月 1 12 日 1 day i 再判斷此日期符不符合 把月日反過來就是年 注意二月二十九號推出的日期是 92200229...

NOIP2016普及組 複賽 回文日期

題目自己點,複製過來會飛掉 這個題,當時想得太複雜,但沒想到竟然得了70分 真的不想說什麼 當時的思路 列舉每一天,然後開頭和末尾單獨處理,於是,洋洋灑灑寫了100多行。正確思路 列舉每一天 不要打我臉 當然方法不同,量也就50行,不難理解。第一步 輸入兩個int整數即可 因為只有8位 然後分離出它...

NOIP2016普及組 複賽 回文日期

題目自己點,複製過來會飛掉 這個題,當時想得太複雜,但沒想到竟然得了70分 真的不想說什麼 當時的思路 列舉每一天,然後開頭和末尾單獨處理,於是,洋洋灑灑寫了100多行。正確思路 列舉每一天 不要打我臉 當然方法不同,量也就50行,不難理解。第一步 輸入兩個int整數即可 因為只有8位 然後分離出它...