機房測試 11 6

2022-02-19 17:53:45 字數 3392 閱讀 7905

電子科大的題,整體不錯,就是t3水了點。但是分3頁pdf是無法接受的

歡迎**ssw02的部落格:

為什麼叫三教呢 ? ssw02還是個高中生,當然不知道了。

讀入

第一行兩個非負整數 ,表示表示補給點個數和需要收集的體力數;

第二行 n 個非負整數 ,第 i 個整數表示在不觸發 bug 的情況下補給點 提供的體力。

思路

60分的做法嘛,這種搜尋小學生都會了。

100分做法: n = 25 , 如果只有一半 n = 13 ,複雜度就在 1e6 級別 , 所能得到的各種答案最多有 1e6 種。同時考慮到蔣神才講了折半法 , 那就簡單了。 用map或者hash記錄先搜尋前一半能的到的結果 。 搜尋後一半是統計 t-val 的貢獻即可 。 懶人ssw02用了map 。 但把乙個 ll 錯開為 int - - 100 -> 25 (部分分都沒拿全)

#includeusing namespace std ;

#define ll long long

inline ll read()

ll n , t , a[30] , b[30] , sum[30] , ans , tot = 0 , half , cnt = 0 , preans[600000] ;

struct apt[30];

maph ;

inline bool cmp( ap x , ap y )

ll work( ll bb )

return anss ;

}void dfs( int now , ll val )

if( val > t )return ;

dfs( now+1 , val ) ;

dfs( now+1 , val+a[now] ) ;

dfs( now+1 , val+b[now] ) ;

}void dfs2( int now , ll val )

int u = (int)h[val] ; preans[u]++ ; return ;

} if( val > t )return ;

dfs2( now+1 , val ) ;

dfs2( now+1 , val+a[now] ) ;

dfs2( now+1 , val+b[now] ) ;

}void dfs3( int now , ll val )

if( val > t )return ;

dfs3( now+1 , val ) ;

dfs3( now+1 , val+a[now] ) ;

dfs3( now+1 , val+b[now] ) ;

}void work2()

struct apt[maxm];

int n , m , head[maxn] , to[maxm] , nex[maxm] , w[maxm] , tot = 1 ;

int du[maxn] , vis[maxn] ;

queueq ;

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

inline bool check( int lim )

for( int i = 1 ; i <= n ; ++i )if( !du[i] && vis[i] == 0 )

while( !q.empty() )

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

if( check(mid) )ans = mid , r = mid-1 ;

else l = mid+1 ;

} cout《為何ssw02想到了 這貨不是烏迪爾 ?

開個桶記錄 , 每次修改用樹狀陣列維護一下 , 在值域上分3段區間求和 , 用dsu on tree即可 , 不會的可以去翻翻ssw02的學習筆記-dsu ontree。

**#includeusing namespace std ;

const int maxn = 200005 ;

#define ll long long

inline int read()

int n , s , a[maxn] , b[maxn] , size[maxn] , son[maxn] ;

int to[maxn*2] , nex[maxn*2] , head[maxn] , tot = 1 , tott ;

int a[maxn] , b[maxn] , c[maxn] ;

//-----------------

ll cnt[maxn] ;

void insert( int x , int y )

ll ask_sum( int x )

//-----------------

void add( int x , int y )

int query( int x )

void dfs( int u , int fa )

}void updata( int u )

void deal( int u , int fa , int val )

}void dfs2( int u , int fa , int opt )

if( son[u] )dfs2( son[u] , u , 1 ) , s = son[u] ;

deal( u , fa , 1 ) ;

s = 0 ; updata( u ) ;

if( !opt )deal( u , fa , -1 ) ;

}int main()

for( register int i = 1 ; i <= n ; ++i )a[i] = b[i] = read() ;

dfs( 1 , 1 ) ;

sort( b+1 , b+n+1 ) ; tott = unique( b+1 , b+n+1 ) - b - 1 ;

dfs2( 1 , 1 , 0 ) ;

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

return 0 ;

}

ssw02蠢了。。

開局寫了t1 60分,然後就先把 t3 切了,然後回來寫了會t2 , 中途t1有了正解 , 寫了t1,拍了t3 。結果t2最後發現死迴圈的問題,改了又改,結果。。。。暴斃

t1 : 折半法很依賴資料範圍 。 然而 ll 呼叫時錯寫了乙個 int ,60都沒有,艹。。

t2 : 思路還是有一點問題,應該猜一下結論,然後多手推幾組資料,不應該丟分啊。

t3 : dsu on tree 裸題啊 。 比模板還裸 , 雖然可以想天天愛跑步一樣做。。。

11 6 測試 約瑟夫問題

yjc 很喜歡玩遊戲,今天他決定和朋友們玩約瑟夫遊戲。約瑟夫遊戲的規則是這樣的 n個人圍成一圈,從1 號開始依次報數,當報到m 時,報1 2 m 1 的人出局,下乙個人接著從1 開始報,保證 n 1 是 m 1 的倍數。最後剩的乙個人獲勝。yjc 很想贏得遊戲,但他太笨了,他想讓你幫他算出自己應該站...

機房 測試計畫

2 計畫 2.4測試2 識別符號 3 測試設計說明 3.2測試2 識別符號 4 評價準則 感謝閱讀 1.1編寫目的 測試計畫是描述將要進行測試活動的範圍 方法 資源和時間進度的文件。它確定了測試項,要測試的特徵 測試任務,誰來完成每一項任務及需要制定應急方案的所有風險等。目的就是盡可能多的找到系統中...

機房測試 10 29

真的服了這個出題人 歡迎 ssw02的部落格 看似t1神仙題,結果卻是大暴力。分為3種情況統計答案,注意要先按照 x 排序。實際上可以被 hack 掉 但隨機資料下有一維偏序是可以過很大資料的。出題人這麼說,即使被 hack 了也麼辦法呀 神仙資料結構題目。線段樹啟發式合併,你可以認為是 dsu o...