2019 06 09 NOIP普及組 模擬賽C組

2021-09-24 11:11:28 字數 3739 閱讀 6086

超連結為pdf題面,請先登入。

渣題用s來表示長城的長度,t來表示目前的所用的時間。

不斷地讀入a,b,t,而t不斷地加 (b-a+1)t,表示這一段所用的時間。最後s不斷減掉 bi-ai+1,則就是剩下的長度了。最後t還要加上加上s1,計算普通的長城的時間。

bas code:

#include

int s,n,x,y,z,t,i;

intmain()

printf

("%d\n"

,t+s)

;}

對於此題,暴力列舉:

用f[i,j]表示第i座建築高度為j時的最大面積。則i-1#include

#define max(a,b) ((a)>(b)?(a):(b))

using namespace std;

int a[

1000010];

intmain()

if(a[j]

} ans=

max(ans,s)

; s=0;

}printf

("%d"

,ans)

;fclose

(stdin);

fclose

(stdout);

return0;

}(1).判斷三點共線:

如果q,p1,p2滿足:(qx-p1x)(p2y-p2y)=(p2x-p1x)(qy-p1y)

則q,p1,p2在同一條直線上

(2).判斷三點中一點在另兩點形成的線段之間:
如果滿足(1),且min(p1x,p2x) <= qx,qx<=max(p1x,p2x)

且min(p1y,p2y)<=qy,qy<=max(p1y,p2y))

則q在p1,p2所形成的線段之間

然後理解理解:

一開始,球權在澤擇手中,他可以選擇自己射門,也可以選擇傳給其他球員射門,選擇時間略短的一種方案(先保證沒有流氓攔截)

而被傳球的球員也可以選擇自己射門,也可以選擇傳給其他球員射門

則:⑴舉每個澤澤隊伍的隊員b,看看是a直接射門優還是a傳球給b射門優

⑵舉每個澤澤隊伍的隊員c,看看是b直接射門優還是b傳球給c射門優

dfs code:

#include

#include

#include

#define r register int

using namespace std;

int n,m,x[

301]

,y[301

],a,b,bz[

5001][

5001

],l[

301]

;double map[

302]

[302

],ans;

void

dfs(

int k,

double t)

}int

main()

for(r i=

1;i<=n;

++i)

for(r j=i+

1;j<=n;

++j)}if

(bz2)

map[i]

[j]=map[j]

[i]=

sqrt

(double

((x[i]

-x[j])*

(x[i]

-x[j])+

(y[i]

-y[j])*

(y[i]

-y[j]))

);else

map[i]

[j]=map[j]

[i]=-1

;}for(r i=

1;i<=n;

++i)

map[i]

[301

]=map[

301]

[i]=

sqrt

(double

((x[i]

-a)*

(x[i]

-a)+

(y[i]

-b)*

(y[i]

-b)))*

2;ans=map[1]

[301];

dfs(1,

0);printf

("%d"

,int

(ans+

0.5));

fclose

(stdin);

fclose

(stdout);

return0;

}

而最短路**,首先構造路線,然後進行搜尋最優:

spfa code:

#include

#include

#include

#define inf 2147483647.0

#define er 0.00000001

using namespace std;

queue<

int> q;

struct p

a[3100

],b[

1100

],d;

struct edge

edge[

450100];

inline

intmax

(int a,

int b)

inline

intmin

(int a,

int b)

int n,m,ans,len,head[

3100];

bool inq[

3100];

double dis[

3100];

inline

doublegd(

int x1,

int y1,

int x2,

int y2)

inline bool eq

(double a,

double b)

inline bool br

(double a,

double b)

bool line

(p a,p b,p c)

void

add_edge

(int u,

int v,

double f)

; head[u]

=len;

}void

spfa()

}}}int

main()

if(!bz)

}for

(int i=

1;i<=n;

++i)

add_edge

(i,n+1,

gd(a[i]

.x,a[i]

.y,d.x,d.y)*2

);++n;

spfa()

;if((

int)dis[n]

*1.0

+0.5

>=dis[n]

) ans=

(int

)dis[n]

;else

ans=

(int

)dis[n]+1

;printf

("%d",(

int)ans)

;return0;

}

NOIP普及組總結

一些感想 考試,好也罷壞也罷,已經過去,只能反思,不能再來 題目 問題 a 3502 noip2017普及組 成績 題目描述 牛牛最近學習了c 入門課程,這門課程的總成績計算方法是 總成績 作業成績 20 小測成績 30 期末考試成績 50 牛牛想知道,這門課程自己最終能得到多少分。輸入只有1 行,...

NOIP普及組考試心得

考試小技巧 這有幾個關於博主本人的說明 1.c 選手 2.並不熟悉devc 3.2016普及組300分弱雞 這篇文章講述的是博主本人對於noip考試的幾個心得和技巧 目前只是初稿,一些詳細的事務會補上 1.士力架 巧克力 或曼妥思 糖果 不是開玩笑的,在考試的時候給自己隨手丟一顆有助於提神醒腦 2....

數字遊戲 NOIp普及組 2003 普及 提高

數字遊戲 題目描述 丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共nn個 你要按順序將其分為mm個部分,各部分內的數字相加,相加所得的mm個結果對1010取模後再相乘,最終得到乙個...