山東多校聯合模擬賽 Day1

2022-05-27 17:15:18 字數 3376 閱讀 6744

給出圓周上的 \(n\) 個點,請你計算出以這些點中的任意四個為四個角,能構成多少個矩 形。

點的座標是這樣描述的,給定乙個陣列 \(v[1..n]\),假設圓心為\((0,0)\),圓的周長 \(c=\sum_^ v_i\) ,第乙個點座標為\((0,c/(2π))\)。從第乙個點開始,順時針沿圓周走 \(v_1\) 個單位長度, 此時座標為第二個點的座標,再走 \(v_2\) 個單位長度,此時為第三個點的座標,當走完 \(v_1,v_2..v_i\) 個距離後,為第 \(i+1\) 個點的座標(全過程都是沿圓周順時針)。特別的,走完 \(v_1,v_2..v_n\) 個 距離後,就會回到第乙個點。

輸入檔名為\(rect.in\)

輸入共 \(n+1\) 行。 第一行為正整數 \(n\)。 接下來 \(n\) 行每行乙個正整數。其中第 \(i+1\) 行表示的是 \(v_i\)。

輸出檔名為\(rect.out\)

輸出共\(1\) 行,乙個整數,表示能構成的矩形的個數。

輸入輸出樣例

\(rect.in\)

\(rect.out\)

輸入輸出樣例說明

很明顯的是,圓中的矩形的對角線為圓的直徑.

那麼我們就可以對於圓的直徑搞事情.

表示這個題的樣例解釋和題面對不上(但還是切了 (滑稽

直接計算圓的周長,\(/2\)就是"直徑".(此處由於圓上的距離同樣有\(\pi\),因此這裡忽略\(\pi\))

手玩樣例(觀察)之後,我們發現,只要某乙個點與另乙個點之間的圓上距離也是\(周長/2\),那它們必然是被直徑連線的.

**

#include#include#include#include#include#include#include#define int long long

#define r register

using namespace std;

inline void in(int &x)

while(isdigit(s))

x*=f;

}int n,v[280],c,sum[280];

int cnt,dis[280][208];

int pipei[280];

bool ok[280][280];

bool judge(int i,int j)

signed main()

c/=2;

for(r int i=1;i<=n;i++)

for(r int j=i+1;j<=n;j++)

for(r int i=1;i<=n;i++)

for(r int j=i+1;j<=n;j++)

if(judge(i,j))

printf("%lld",cnt);

fclose(stdin);

fclose(stdout);

return 0;

}

任何一種生物的 dna 都可以表示為乙個由小寫英文本母組成的非空字串。科學家發 現,所有的生物都有可能發生變異。所謂變異,就是子代的 dna 串與父代的 dna 串有差 異。每次變異,dna 串中恰好有乙個字元會變成兩個任意的字元。一共有 n 種可能的變異。 變異 ai->bici 表示字元 ai 有可能變異為兩個字元 bici。詳細來說,就是刪掉乙個字元 ai,之 後在原來 ai 的位置處,插入 bi,ci 兩個字元(注意字元 bi 必須在 ci 的前面)。每種變異都 有可能發生任意多次。可以發現,每變異一次,dna 串的長度會加 1。

如果有一種生物 a,他的 dna 串是 s1,另外存在一種生物 b,他的 dna 串是 s2。如 果 s2 可以通過若干次變異變為 s1,那麼生物 b 就被叫做生物 a 的祖先。

現在,給定一種生物,他的 dna 串是 s。請找出他的乙個祖先,且這個祖先的 dna 串 盡量短。

輸入檔案 ancestor.in,共 n+2 行。

第一行包含乙個非空字串 s。

第二行含有乙個整數 n,表示所有可能的變異。

接下來 n 行,每行描述一種可能的變異,按照 ai->bici 的格式。

s,ai,bi,ci 僅包含小寫英文本母。

請注意:一種變異可能出現多次。

輸出檔名為 ancestor.out。

輸出只有一行,乙個整數,表示祖先 dna 串的最短長度。

發現我們可以將字元兩兩合成,考慮區間\(dp\)。

由於資料範圍很小.

所以直接暴力預處理.

這裡給出陣列定義,看懂**應該不是很難.

注意預處理要倒敘,正序會出鍋.(可以手玩一下.

**

#include#include#include#include#include#include#include#define r register

using namespace std;

inline void in(int &x)

while(isdigit(s))

x*=f;

}char s[55],ss[55];

bool f[55][55][30];//f[i][j][k]代表從i到j能否為k

int dp[55][3],ans[55][55],len,n;

int main()

// for(r int i=1;i<=n;i++)

// printf("%c->%c%c\n",dp[i][0]+'a',dp[i][1]+'a',dp[i][2]+'a');

for(r int i=len;i>0;i--)

for(r int j=i+1;j<=len;j++)

for(r int k=i;k0;--i)

for(r int j=i;j<=len;++j)

while(isdigit(s))

x*=f;

}int t,n,m,k,dis[n],head[n],tot,s,t;

bool ok[n],vis[n];

struct codedge[n<<2];

inline void add(int x,int y)

inline bool spfa(int x)

int main()

in(s),in(t);

while(l<=r)

printf("%d\n",ans==214748364?-1:ans);

} fclose(stdin);

fclose(stdout);

return 0;

}

NOIP2018 模擬賽day1 塔

小 a 想搭乙個體積不超過 m 的塔,他有各種大小的立方積木,比 如邊長為 a 的積木,體積為 a 3,現在小 a 需要你給乙個 x,每次小 a 會用乙個體積不超過 x 的最大積木,依次到搭好為止,現在他想最 大化積木的個數,同時在積木個數最大的情況下使 x 最大。這道題只有那麼神奇了,寶寶看了n久...

FZU ACM 聯合訓練 Day1總結

題意 給你一棵有根樹 記每個點的權值為 w i 對於每個 i 求 sum w lca i,j 題解 marser twii幾分鐘口頭ac dsu on tree,用樹狀陣列分兩輪統計輕子樹對重子樹的貢獻,log方穩過。感受 m t調了三個小時沒ac,當場暴斃。現在都不知道掛在 題意 給乙個矩陣b,讓...

2018 多校聯合訓練 1

problem a 首先解方程 frac frac frac n frac frac frac 1 如果 a,b,c 都必須為正整數,那麼令 a b c 那麼 a 3 所以 2 a 3 a 2 的時候 b 3,c 6,或者 b 4,c 4 顯然前者好像比較垃圾,那麼捨去 a 3 的時候 frac f...