2018北師珠ACM校內賽 網路預選賽

2021-08-18 02:37:45 字數 3773 閱讀 3972

小明從小的夢想就是成為一名像歐幾里德一樣的數學家,雖然他以前老是讓我們幫他解決問題,現在他正在進行一場考試,這是考試的最後乙個問題。

現在給你三個點a,b,c,能不能找出乙個旋轉點和旋轉角度,使得如果這三個點繞著旋轉點旋轉一定的角度後,點a到達點b原來的位置,點b到達點c原來的位置。

現在小明想讓你告訴他有沒有合適的旋轉點和旋轉角度,如果有則輸出yes,否則輸出no

由於三個點不會出現重疊的情況,所以就判斷兩個要點:

三個點以a->b->c的形式形成乙個等腰三角形,也就是說|ab|==|bc|

三點不共線,也就是說不滿足向量ab!=向量bc即可

tips:不能使用除運算、sqrt、pow等會丟失精度的運算,所以實現以上兩點時要注意

#include 

using

namespace

std;

long

long distance(long

long ax, long

long ay, long

long bx, long

long by);

int main()

bool dis = false;

long

long a = distance(x[0], y[0], x[1], y[1]);

long

long b = distance(x[1], y[1], x[2], y[2]);

if(a == b)

bool line = false;

long

long tempy1 = y[1] - y[0];

long

long tempx1 = x[1] - x[0];

long

long tempy2 = y[2] - y[0];

long

long tempx2 = x[2] - x[0];

long

long xp = tempy1 * tempx2;

long

long yp = tempy2 * tempx1;

if((xp - yp) == 0)

if(dis && !line)

else

}}long

long distance(long

long ax,long

long ay,long

long bx,long

long by)

最近貓叔很懷戀高中的計算器,但是貓叔自從學習了程式設計以後就不用計算器了,所以貓叔打算利用自己的規則打造乙個屬於自己的計算器!

經過多天的研究,貓叔終於研究了出來,首先要給計算器乙個數x,表示初始數,然後給予」+-*/」這四個符號中的其中乙個,接著是乙個數字對初始資料進行以計算機中的整數形式計算規則計算得到乙個新的數,後面的操作以此類推!最後就會得到貓叔想要的結果!貓叔的眼睛不是很好,你可以告訴貓叔答案是多少嗎?

對+-*/進行字串切割,然後把運算子和數字分開放在兩個vector當中,然後進行運算

賽後發現挺蠢的,可以通過getchar() != '\n'獲得運算子,然後通過scanf獲取運算子後的數字,不需要這麼麻煩…

#include 

#include

#include

#include

using

namespace

std;

vector

split(string str, string separator);

long

long str2int(string string_temp);

vector

chars;

int main()

}chars.clear();

cout

<< "case #"

<< i << ":"

<< total << endl;

}}vector

split(string str, string separator)

str = str.substr(cutat + 1);

}if (str.length()>0)

return result;

}long

long str2int(string string_temp)

考對sort的使用,寫好兩種不同優先順序的排序方法進行了

#include 

#include

#include

using

namespace

std;

struct hotel

;bool comparem(hotel hotel1, hotel hotel2);

bool comparen(hotel hotel1, hotel hotel2);

int main()

hotel hotel = ;

hotels.push_back(hotel);

count++;

}int flag;

cin >> flag;

vector

::iterator hotel_iter = hotels.begin();

cout

<< "case #"

<< i << ":"

<< endl;

if (flag == 0)

else

}}bool comparem(hotel hotel1, hotel hotel2)

else

if (hotel1.m == hotel2.m && hotel1.n < hotel2.n)

return

false;

}bool comparen(hotel hotel1,hotel hotel2)

else

if(hotel1.n == hotel2.n && hotel1.m < hotel2.m)

return

false;

}

在寒冷的冬天,外面有很多的流浪貓,貓叔看著它們無家可歸都把它們接到了家裡,但是貓叔是南方人家裡沒有任何的取暖設施,只能幫流浪貓們鋪地毯取暖,地毯是矩形的,一共有n張,編號從1-n,現在將這些地毯依次鋪好,每個地毯依次疊加起來,鋪完n張地毯以後,貓叔把流浪貓們放在乙個(a,b)座標上,想看看,流浪貓休息的地方上最上面的地毯是哪張?你能幫幫貓叔嗎?

判斷哪個地毯放在最上方就行了,時刻保持最優值,賽後發現蠢了,我是從下往上判斷的,其實從上往下判斷還能提前break掉

#include

using

namespace

std;

int main()

int cat_x,cat_y;

cin >> cat_x >> cat_y;

int top = -1;

for(int j = 0;j < num;j++)

}cout

<< "case #"

<< i << ": "

<< top << endl;

}}

acm 2018北京網路賽B題

這個題的題意就是給n n 10個字串,長度不超過8,但是n個字串每乙個都可以組成乙個環,然後求這n個字串的最長公共子串行 我的做法就是使用位運算遍歷。朱學長要打我.就是每一位就是乙個0 1,來遍歷,這樣就比for迴圈遍歷快很多,然後分別使用map來存同時要避免在每個字串中子串出現次數大於1,然後再用...

2013西安交大ACM校內賽C題

description zz和gg有很多大事要決定。在他們實在說服不了對方的時候,他們決定猜拳決定勝負。由於石頭剪刀布在設計之初存在巨大的缺陷,有極大的可能出現平手!事實上,某一天,zz和gg猜拳猜了乙個下午 在中科院的領導的幫助下,zz和gg開始使用 二維向量夾角大作戰 來決定勝負。二維向量夾角大...

2018acm區域賽青島

zoj4060 思維題目 找規律,比較難想!劃分不同塊,找不同塊。根據不同塊的數目又分為4種情況。劃分塊就夠難想了,這4種情況計算規律更是難找!1 include 2 include 3 include 4 using namespace std 5 typedef long long ll 6 l...