給出圓周上的 \(n\) 個點,請你計算出以這些點中的任意四個為四個角,能構成多少個矩 形。\(rect.out\) 輸入輸出樣例說明點的座標是這樣描述的,給定乙個陣列 \(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\)
很明顯的是,圓中的矩形的對角線為圓的直徑.
那麼我們就可以對於圓的直徑搞事情.
表示這個題的樣例解釋和題面對不上(但還是切了 (滑稽
直接計算圓的周長,\(/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。發現我們可以將字元兩兩合成,考慮區間\(dp\)。如果有一種生物 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 串的最短長度。
由於資料範圍很小.
所以直接暴力預處理.
這裡給出陣列定義,看懂**應該不是很難.
注意預處理要倒敘,正序會出鍋.(可以手玩一下.
**
#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...