9 20模擬考試

2022-05-27 16:45:09 字數 4111 閱讀 7937

(某竇老師的題)表示以後不想看到這名字,肽毒瘤

題意:我們可以把供遊艇航行的航道看作一條單行道,航道上 \(n+1\) 艘遊艇自西 向東依次編號為 \(0..n\),小 z 所在的遊艇在最西邊編號為 0,而編號為 \(n\) 的遊艇 還要再往東航行一段才是小蠻腰。由於晚上航行視野不佳,排在後面的船不允 許超越前面的船,而當前面的船航行速度太慢時,後面的船隻能以相同的速度 緊跟著,此時兩船之間的距離可以忽略。 已知第 i 艘遊艇船身長為 \(l[i]\),船頭與小蠻腰距離為 \(x[i]\),最大航行速 度為 \(v[i]\)。小 z 好奇,他到底要等多久,才能乘著遊艇經過小蠻腰腳下呢??

反思:考場上先是想了貪心(顯然是不對的),,又推了dp,

$f_i=max(x_i/v_i, f_+l_/v_) $

最後的時候發現好像也是不對的,沒有考慮過線後其實也在堵著。。。然後就涼了;

倒是\(yych\),很澀會,機房唯一乙個切此題的人%%%%%

正解是實數域上二分:

可以看出答案是具有單調性的, 所以我們可以二分乙個時間,判斷它成不成立。

設\(dis =tim*v_i\)

\(lin_i\) 為\(tim\)時間後第\(i\)個船離小蠻腰還有多久

則就有dp : \(lin[i]=max(lin[i]-dis, l[i+1]+lin[i+1])\);

(\(lin[i]\)初值賦的\(x[i]\))

然後只需判斷是不是所有的穿都能越過小蠻腰啊~~

ps:\(c++11\)用「%lf「會屎的很慘

/***********絲毫不慌********/ 

#include#include#include#include#define n 100005

using namespace std;

double l[n], x[n], v[n];

double f[n], lin[n];

int n, t;

bool check(double tim)

return true;

}void solve1()

printf("%.4f\n", l);

}signed main()

return 0;

}

題意:

​ 小 z 事先準備了乙份地圖,地圖上給出了 n 個小 z 心儀的城市,依次編號 1…n,以及 m 條連線兩個城市的路,編號 1…m。小 z 打算把 m 條路都走一遍且 僅一遍,但他發現這樣的路線可能是不存在的。於是他打算,當他走到乙個城 市後發現從這個城市出發的道路他都已經走過了,他便會坐飛機到另乙個城市, 然後繼續他的旅行。 現在小 z 想知道,在最好的路線計畫下,他至少要坐多少趟飛機 。。

【輸入格式】第一行為測試資料組數 t(1≤t≤10)。 每組測試資料的第一行為城市數 n 及道路數 m。 接下來 m 行,每行兩個整數 x 和 y,表示一條連線城市 x 和城市 y 的雙向 道路。

【輸出格式】對於每組測試資料,輸出第一行包含乙個整數 k,表示小 z 至少要坐多少 趟飛機。 接下來 k+1 行,第 i 行輸出小 z 的第 i 段行程。若第 i 段行程經過 x 條道 路,則先輸出 x,然後輸出 x 個整數,分別表示路線經過的道路的編號。若是 正向通過第 i 條道路,則輸出 i,否則輸出-i。 若有多組方案,輸出任意一組。

​ (這不顯然是一筆畫問題嗎。。。然而我並沒有做過尤拉迴路的題,不會,果斷放棄)

性質:乙個尤拉迴路裡, 所有點度數均為偶數;

乙個聯通塊內,度數為奇數的點的個數為偶數

思想:​ 把乙個聯通塊內度數為奇數的點連起來(虛邊),然後它就可以一筆畫了;

​ 那麼換個角度想,連了多少條虛邊,不就是坐了多少趟飛機嗎;emm....

​ (然而毒瘤出題人還讓你輸出路徑)

​ 1.存邊時把路徑的權值賦成 id 或 -id

​ 2.每遍歷一條邊就把它放到當前旅程vector裡記錄下來;

/***********絲毫不慌********/ 

#include#include#include#include#define n 100010

using namespace std;

int read()

int t, n, m, tot;

vectorv[n];

int nxt[n<<2], cnt = 1, to[n<<2], head[n], val[n<<2], vis[n], vis_e[n<<2], deg[n];

void add(int x, int y, int z)

void dfs(int x)

}signed main()

int last = 0;

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

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

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

}// for(int i = 1; i <= m; ++ i )

printf("%d\n",tot - 1);

for(int i = 1; i <= tot; i++)

} return 0;

}

題意:

​ 【題目描述】小 z 的爸爸是一位通訊工程師,他所在的通訊公司最近接到了乙個新的通 信工程建設任務,他們需要在 c 城建設一批新的基站。 c 城的城市規劃做得非常好,整個城市被規整地劃分為 8 行 8 列共 64 個街 區,現在已知新基站需要建設在哪些街區,用字元「#」表示,而不需要建設基 站的街區用「.」表示.. 爸爸告訴小 z 說,建設基站最耗時的是基站兩兩之間互相通訊的除錯,每 建設乙個新的基站,需要確保其與其他已經建好的基站之間能互相通訊,若兩 個基站的座標分別為\((x1,y1)\)和\((x2,y2)\),則除錯所需時間大概為 \(max(|x1- x2|,|y1-y2|)\),而乙個基站的總除錯時間為與其他已經建好的基站的除錯時間 中的最大值。現在爸爸想考考小 z,看小 z 能否計算出如何設計建設基站的順 序,使得總的除錯時間盡量少

【輸入格式】輸入乙個 8 行 8 列的矩陣,全部由「#」和「.」組成。

【輸出格式】輸出乙個整數,表示花費的最少時間。

【樣例輸入一】

【樣例輸出一】8

思路:​ 資料10以內顯然是可以暴力的,\(n!\)的那種\(10!\) 才3628800, 顯然是可以過的;;

正解:(非正解)

​ 先盜圖(自己懶得畫啦)

看上面這個圖

(已經解釋得很清楚)先放中間比先放四周優;

然後就考慮怎麼先放中間 正解給的是乙個不像dp的dp 然後我用的爆搜

(調了乙個下午);

​ 大概思路就是:每次找到剩下的點構成的最大的矩陣(就是保證矩陣的上下左右邊界都有點,之外沒有),列舉最後放哪一行哪一列就行,往下搜就行,一直搜到只剩乙個點;

​ 乙個比較麻煩的地方就是:回溯的時候比較難回溯,要把所有的點都記錄下來;

​ 然後ctrl+c, ctrl+v 就行

(ps:不要覺得搜尋過程很相近就無腦複製, 有些細微地方是很要命的, 要不也不會調一下午);

/***********絲毫不慌***********/ 

#include#include#include#include#include#define it set::iterator

#define ri register int

using namespace std;

int cnt, vis[100];

struct node

e[100];

int ans = 1e9;

int zh_dou = 233333;

set t[20];

void solve(ri v)

\)

NOIP2011模擬9 20 素數密度

time limits 1000 ms memory limits 262144 kb description 給定區間 l,r l r 2147483647,r l 1000000 請計算區間中素數的個數。input 兩個數l和r output 一行,區間中素數的個數。sample input 2...

2017 9 7 模擬考試

問題描述 一張長度為 的紙帶,我們可以從左至右編號為0 紙帶最左端標號為 0 現在有 次操作,每次將紙帶沿著某個位置進行摺疊,問所有操作之後紙帶 的長度是多少。輸入格式 第一行兩個數字 如題意所述。接下來一行 個整數代表每次摺疊的位置。輸出格式 一行乙個整數代表答案。樣例輸入 5 2 3 5 樣例輸...

RHSCA模擬考試

開始考試 桌面是個黑框子 點選reboot按鈕,破解密碼 開機成功,輸入startx進入圖形介面 不能複製,要在物理機用ssh root 172.25.0.11 遠端連線,就可以複製貼上了 hostname server.reorigion5.example.com 四級網域名稱 有問題 10.配置...