不得不說,這真的是一屆更水的題了,180一等線是真的低,感覺比前三屆簡單多了。
這個,,,水題沒什麼說的(注意!!你對了這道題就是二等獎!!)
#includeusing namespace std;
int n,l,r;
int main()
for(int i=1;i<=n;i++)
else if((a[i]>a[x]||a[i]==a[x]&&i>x)&&(a[i]在這裡肯定有人要問了用線段樹或者平衡樹怎麼寫尼???
我寫一下,學過的話思路簡單,沒學的話如讀天書:
平衡樹+離散化演算法
#includestructq[200001];
struct pair tr[3000010];
int cnt = 1;
void insert(lld x)
}void remove(lld x)
}int query(lld x)
return ret;
}int main()
int op, x, v;
for (int i = 1; i <= q; ++ i) else printf("%d\n", query((lld)a[x] * n + x - 1) + 1);
} return 0;
}
注意,這不是簡單的事情複雜化,是簡單的演算法你考試你根本想不出來。
這道題就是map資料結構基本功,以及string基本用法,沒什麼難的。
建乙個字串陣列存答案(即每台計算機連線狀態,**內為 a),再建乙個陣列 sum 存連線成功客戶機所對應的服務機編號,對於答案儲存講完了。
輸入部分較為簡單,我的變數名也與題目所述一致,就跳過。
然後講服務機重複位址,和客戶機連線的服務機編號。對於每個位址合法的服務機,我們用乙個 map 存它的位址和編號,記為
mapss;
這樣服務機重複位址的情況,看下位址對應的 map 是否為 0 就行了。至於客戶機,若它位址合法,看下位址對應的 map 是否為 0,為 0 則連線失敗,否則連線的服務機編號就是 ss 的第二個鍵值。
當然,有坑(csp—j第三和四題沒那麼水):
1.map 等清空。
2.位址不得出現除題目規定外的字元。
3.位址必須要有 5 個數(比如 10..9.7:2 就不行)
4.位址必須含有 3 個 . 與 1 個 :,且順序不能顛倒。
5.位址的 5 個數要符合題目規定的資料範圍。
6.位址的 5 個數不能含前導 0。
#include#define int long long
using namespace std;
int n,sum[10005];
string a[10005];
mapss;
signed main()
if(ad[i]==':')knf=1;
}
if(kf!=5)
for(int i=0;i='0'&&ad[i]<='9'))
sk+=ad[i];
}if(_1!=3||_2!=1||w==1)
for(int i=0;i=0&&ans<=255)
else
}if(i==0||ad[i-1]=='.'||ad[i-1]==':')
else}}
ans=ans*10+ad[i]-48;
}if(ans<0||ans>65535||w==1)
if(op[0]=='s')
else
}else
else}}
for(int i=1;i<=n;i++)
else printf("%lld",sum[i]);
printf("\n");
}return 0;
}
本次csp之所以簡單是因為沒考圖論,主要是資料結構基礎,所以很簡單,這個壓軸題也只需要建個雙向鍊錶就行。
首先對輸入序列建雙向鍊錶,維護每乙個「假塊」頭建雙向鍊錶,共維護兩個鍊錶。
這裡的「假塊」指每個「假塊」中水果種類必定相同,但相鄰「假塊」中水果種類可能相同。
我們可以使用雙向鍊錶的刪除元素來模擬吃乙個水果。
不斷迴圈遍歷「假塊」頭鍊錶,遍歷過程中記錄上乙個被吃水果種類。遍歷到某個塊頭時,若其指向的水果與上乙個被吃水果種類相同,直接將這個塊頭刪除,相當於合併塊;若不同,吃掉這個水果,更新上乙個被吃水果種類,將這個塊頭指向的水果變成被吃水果的下乙個水果。
關於乙個假塊被吃完的處理方法,此時這個假塊的塊頭一定會指向下乙個塊頭。若這個塊頭的種類與被吃水果的種類不同,刪掉這個塊,因為遍歷下乙個塊時將會吃掉這個水果;若相同,不動,因為接下來的過程將會把下乙個塊的塊頭刪除。這樣保證遍歷時不會出現長度小於一的假塊。若假塊沒有被吃完,其指向的下乙個水果一定與吃掉的種類相同,同樣不做任何處理。
每個水果被遍歷一次,每個塊被刪除一次,時間複雜度 o(n)。
#includeusing namespace std;
const int maxn = 2e5+10;
struct node;
int n;
int shuiguo[maxn];
node headlist[maxn];
node shuiguolist[maxn];
int cc;
void eatone(int pos)
void del(int pos)
void chi()
eatone(headlist[solo].val);
headlist[solo].val = shuiguolist[headlist[solo].val].next;
if (shuiguo[headlist[solo].val]!=nowcolor)
solo = headlist[solo].next;
nowcolor^=1;
} putchar('\n');
}int main()
shuiguo[0] = 2;
shuiguo[n+1] = 2;
headlist[0].next = 1;
for (int i = 1; i <= n; i++)
} while (shuiguolist[0].next!=n+1)
return 0;
}
網路連線(CSP J 2021 T3)
一道又臭又長的模擬題目。1.scanf d.d b,c 這裡是定了乙個格式如果不按格式來就不輸入後面的內容 程式中用來分離數字方便計算 2.sscanf a,d.d a,b 這是從a字串中讀入a和b他反回的是讀入了幾個數 程式中用來判斷格式是否正確 3.scanf c a 在 c前面加乙個空格可以直...
2021秋招部分筆試題
2021秋招部分筆試題彙總 企業提供原題 00 00 28 4 6 程式設計題 查詢二叉搜尋樹的葉子節點 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 給乙個二叉查詢樹 binary search tree 的前序遍歷結果陣列,列印出所有的葉子節點。輸入描述 輸入為...
中興2021批筆試題解
總結 人菜思維僵硬.jpg 做筆試感覺智商嚴重下降 以後得寫點正常的agc題之類的了 t1 題目大意 給出長度為n的排列,要求按順序插入排序二叉樹,問經過根節點的最長路徑長度。n 1 e5 n 1e5 n 1 e5奇怪的做法 把陣列進行排序後,把id給拿出來。例如 ai 5,3 2,1 6,7 4 ...