考題題解6 稍複雜的模擬 棧 dfs 單調佇列

2021-08-16 01:16:16 字數 2369 閱讀 5841

1.無聊的遊戲

由題意可得,這道題只需要村模擬即可,就是稍微複雜裡一點

1.迴圈列舉每乙個沒死的同學,找到與該同學最近的乙個非自身且沒有死的同學,然後將其殺掉(標記一下)即可。

2.因為給的同學的位置是座標系的座標,所以求最近距離是要用上勾股定理,即行列的絕對值之差的平方之和。

3.如果一次迴圈沒有把剩下的殺死,那就再迴圈一次即可。

4.如果在模擬的過程中總數為1,那麼就找到唯一生存的同學並且輸出以及退出迴圈。

**如下:

#includeusing namespace std;

int students;

struct cristiano_ronaldo

student[3000]={};//x,y記錄座標;die記錄該學生是否死掉

inline int find_the_shortest_student(int student_number)//找到與第student_number個學生最近的學生

//勾股定理求最小值

}return shortest_student_number;

}inline int find_the_only_one_student()//找到唯一生存的學生

int main()

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

cin>>student[i].x>>student[i].y;

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

student[i].die=0;//標記未死亡

int sum=students;

while (true)

}if (sum==1)

,double_seat=-1,ans=0;

char seat[1000]={};

cin>>seats;

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

cin>>seat[i];

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

//判斷是單人座位的情況

if (seat[i]=='l')

//判斷雙人座位的情況

} cout<3.括號表示式的值

1.因為由題意可得,括號是平衡的,因此可以用括號匹配來做,找出與每乙個左括號所匹配的右括號。

2.括號匹配的方法如下:用棧記錄左括號的位址,每次匹配到乙個右括號就記錄棧頂所匹配的右括號的位址,並出棧,如此反覆操作即可。

3.接著,就可以dfs了,先dfs(1,n),然後接著遞迴就可以。

遞迴過程如下:

a.如果它由多個平衡的括號組成,就遞迴第乙個平衡的括號和剩下部分。

b.如果有且只有一對不巢狀的括號,返回值為2.

c.如果只有一對平衡且帶有巢狀的括號,去掉頭和尾接著遞迴,並且結果乘2即可。

**如下:

#includeusing namespace std;

const long long mod=12345678910;

struct cristiano_ronaldo

a[100000]={};

long long dfs(long long l,long long r)//dfs遞迴

//進行括號匹配

cout<4.加油問題

1.因為資料沒有排序,應按照地點進行排序。

2.排序後,要使加油費最小,用單調佇列來維護每乙個加油站的加油費和每乙個加油站作加的油,令最便宜的油在對頭即可。

3.因為要使車能達到終點,沒到乙個站都要把油加滿,如果加的油比隊尾的油要便宜,那麼就把隊尾去掉,直到前面的油比它大或者隊列為空即可。

4.每次要用油的時候就從對頭取油用,因為是最便宜的。

5.因為一開始已經擁有的油是不用錢的,說宜**標記為0即可。

q:這麼反覆將油加滿不會對結果產生影響嗎?因為加了很多沒必要的油啊,那麼結果不是會更高嗎?

a:不會,因為佇列只是用來控制可用的且最便宜的油的數量,最後用多少要看你在對頭去多少油,因此給加滿油的油不一定會用完,而是取多少用多少,最終的結果也只是和你取得油量有關。

**如下:

#includeusing namespace std;

int head=1,tail=1,ans=0;

struct jgt

a[100000]={};

bool cmp(jgt xx,jgt yy)

{ return (xx.x>n>>g>>b>>d;

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

cin>>a[i].x>>a[i].y;

sort(a+1,a+n+1,cmp); //按照地點排序

q[1].p=0;

q[1].h=b;//把原有油進隊

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

{ if (g

一面 6 開發環境相關知識點與高頻考題解析

工程師的開發環境決定其開發效率,常用的開發環境配置也是面試考查點之一。本小節會重點介紹 git 的基本用法 部署和開發中常用的 linux 命令,然後以 webpack 為例介紹下前端構建工具,最後介紹怎麼抓包解決線上問題。這些都是日常開發和面試中常用到的知識。題目 你平時都使用什麼 ide 程式設...

題解 poj2054 複雜的貪心

題目鏈結 大佬部落格的講解非常詳細,學習了 詳細思路見上方部落格或者李煜東 演算法競賽高階指南 include include include using namespace std define rep i,a,b for int i a i b i define for i,a,b for in...

劍指offer題解(複雜鍊錶的複製)

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 新建乙個鍊錶,先不管random指標,根據next指標將原鍊錶複製到新的鍊錶中,然後遍歷新...