電子科大的題,整體不錯,就是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...