高效演算法設計專項 UVa 11572

2021-06-14 08:19:47 字數 447 閱讀 5950

題目大意就是求一串數中最長的子串,要求該子串中的數互不相同。這題掃一遍就可以了,可以一邊讀入一邊做。用乙個map對映距當前位置的值為i的最近的位置j,同時記錄乙個pre,表示從pre到當前位置沒有相同元素。然後在讀入的同時維護map和pre,同時更新最長的不含相同元素的子串即可。

#include #include #include #include using namespace std;

int n;

maptable;

int main()

{ freopen("in.txt","r",stdin);

int t;

scanf("%d",&t);

while(t--)

{table.clear();

scanf("%d",&n);

int ans=0,pre=0;

for(int i=0;i

小鼠迷宮問題uva1157

小鼠a與小鼠b身處乙個m n的迷宮中,如圖所示。每乙個方格表示迷宮中的乙個房間。這m n個房間中有一些房間是封閉的,不允許任何人進入。在迷宮中任何位置均可沿上,下,左,右4個方向進入未封閉的房間。小鼠a位於迷宮的 p,q 方格中,它必須找出一條通向小鼠b所在的 r,s 方格的路。請幫助小鼠a找出所有...

高效演算法設計專項 UVa 10827

這道題用o n 4 的方法水過了 就是把原來n n的矩陣擴充套件成2n 2n的矩陣,然後預處理出以 i,j 為右下角的矩陣的元素和。然後再列舉矩陣的左上角和右下角,當矩陣的長或寬大於n時,直接continue即可。include include include include using names...

高效演算法設計專項 UVa 10691

這道題可以轉化為區間選點問題,即給定一些區間,找到最少的點使得每個區間至少存在乙個點。只不過這道題上的區間是在乙個圓上的,注意到n小於200,可以列舉開始的區間,然後分別進行一次貪心即可,時間複雜度為o n 2 只不過由於是在圓上,所以有很多細節需要注意,wa了n炮才調過了。include incl...