2024牛客寒假算法基础集训营1(视频讲解全部题目)

03-11 1261阅读

2024牛客寒假算法基础集训营1(题目全解)

  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L
  • M

    2024牛客寒假算法基础集训营1(视频讲解全部题目)

    2024牛客寒假算法基础集训营1(视频讲解全部题目)

    A

    #include
    #define endl '\n'
    #define deb(x) cout 
    	int n; cin  n;
    	string s; cin  s;
    	bool f = false, F = false;
    	for(int i = 0; i  
    

    C

    #include
    #define endl '\n'
    #define int long long
    #define deb(x) cout 
    	int n, q, tc; cin  n  q >> tc;
    	vectort(n + 1);
    	vectors(n + 1);
    	vectorss(n + 1);
    	for(int i = 1; i 
    		cin > t[i];
    	}
    	sort(t.begin() + 1, t.end());
    	for(int i = 1; i 
    		s[i] = s[i - 1] + t[i];
    	}
    	for(int i = 1; i 
    		ss[i] = ss[i - 1] + s[i];
    	}
    	while(q--){
    		int M; cin  M;
    		int l = 1, r = n;
    		while(l > 1;
    			int cnt = n - mid + 1;
    			if(cnt * tc 
    				r = mid;
    			}else{
    				l = mid + 1;
    			}
    		}
    		if(l == n){
    			if(tc  M){
    				cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	t = 1;
    	//cin  t;
    	while(t--)
    	solve();
    }
    
    	int n, m; cin  n  m;
    	vector
    		cin  a[i];
    		cnt[a[i]] += 1;
    	}
    	if(n >= 30){
    		//一定要减少绝对值不等于1的数字个数。
    		for(auto [x, y]: cnt){
    			if(n - cnt[x] - cnt[x - 2] > 30)
    				continue;
    			int mul = 1;
    			bool flag = true;
    			for(int i = 0; i  1e9){
    					flag = false;
    					break;
    				}
    			}
    			if(flag)
    				ans.insert(mul);
    			mul = 1, flag = true;
    			for(int i = 0; i  1e9){
    					flag = false;
    					break;
    				}
    			}
    			if(flag)
    				ans.insert(mul);
    		}
    	}else{
    		//如果n 
    			a[i] -= tmp;
    		}
    		for(int i = -1e6; i 
    			int mul = 1;
    			bool flag = true;
    			for(int j = 0; j  x;
    		if(ans.count(x)){
    			cout 
    			cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	t = 1;
    	//cin  t;
    	while(t--)
    	solve();
    }
    
    	int n, m; cin  n  m;
    	vector
    		cin  a[i];
    	}
    	for(int i = 0; i > u >> v;
    		u --, v --;
    		b[i] = {u, v};
    	}
    	int ans = 11;
    	function dfs = [&](int u)->void{
    		
    		if(u >= m){
    			int sc = a[0];
    			int top = 1;
    			for(int i = 1; i  sc){
    					top ++;
    				}
    			}
    			ans = min(ans, top);
    			return;
    		}
    	
    		int x = b[u].first, y = b[u].second;
    		a[x] += 3;
    		dfs(u + 1);
    		//回溯
    		a[x] -= 3;
    		a[y] += 3;
    		dfs(u + 1);
    		
    		a[y] -= 3;
    		a[x] += 1, a[y] += 1;
    		dfs(u + 1);
    		a[x] -= 1, a[y] -= 1;
    	};
    	dfs(0);
    	cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	//t = 1;
    	cin  t;
    	while(t--)
    	solve();
    }
    

    F

    #include
    #define endl '\n'
    #define int long long
    #define deb(x) cout 
    	int res = 1;
    	while(b){
    		if(b & 1)
    			res = res * a % p;
    		a = a * a % p;
    		b = 1;
    	}
    	return res;
    }
    void init(){
    	fact[0] = infact[0] = 1;
    	for(int i = 1; i > m;
    	int res = 0;
    	for(int i = 0; i 
    		if((m - i) % 2){
    			res = ((res - (qmi(i, n, mod) * infact[i] % mod * infact[m - i] % mod)) % mod + mod) % mod;
    		}else{
    			res = (res + (qmi(i, n, mod) * infact[i] % mod * infact[m - i] % mod)) % mod;
    		}
    	}
    	cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	t = 1;
    	// cin  t;
    	init();
    	while(t--)
    	solve();
    }
    
    	int n, m; cin  n  m;
    	vector
    		cin  a[i].x >> a[i].y;
    	}
    	sort(a.begin(), a.end());
    	vectors(n + 1);
    	for(int i = 1; i 
    		s[i] = s[i - 1] + a[i].y;
    	}
    	int ans = m;
    	for(int i = n; i = 1; i --){
    		int dis = a[i].x - s[i];
    		if(dis > m){
    			continue;
    		}
    		ans = max(ans, m + s[i]);
    	}
    	cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	//t = 1;
    	cin  t;
    	while(t--)
    	solve();
    }
    

    H

    #include
    #define endl '\n'
    #define int long long
    #define deb(x) cout 
    	int n, m; cin  n  m;
    	vectorv(n), w(n);
    	for(int i = 0; i > v[i] >> w[i];
    	}
    	int ans = 0, pre = 0;
    	for(int i = 31; i >= 0; i --){
    		int x = pre;
    		if((m >> i) & 1){
    			x += (1 
    			if((x | w[j]) == x){
    				sum += v[j];
    			}
    		}
    		ans = max(ans, sum);
    	}
    	int sum = 0;
    	for(int j = 0; j > a[i];
    	}
    	auto check = [&](int dis)->bool{
    		// cout 
    			return false;
    		}
    		for(int i = 0; i  dis){
    				st.erase(*st.rbegin());
    			}
    			
    			if(!st.size()){
    				return false;
    			}
    			st.insert(a[i]);
    		}
    		return true;
    	};
    	int l = 0, r = 1e9;
    	while(l > 1;
    		if(check(mid)){
    			r = mid;
    		}else{
    			l = mid + 1;
    		}
    	}
    	cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	t = 1;
    	// cin  t;
    	while(t--)
    	solve();
    }
    

    K

    #include
    #define endl '\n'
    #define deb(x) cout 
    	if(x != p[x])
    		p[x] = find(p[x]);
    	return p[x];
    }
    void init(int x){
    	for(int i = 1; i 
    		p[i] = i;
    		root.insert(i);
    	}
    }
    void merge(int x, int y){
    	int px = find(x);
    	int py = find(y);
    	if(px != py){
    		if(in[px])
    		{
    			p[px] = py;
    			root.erase(px);
    		}
    		else
    		{
    			p[py] = px;
    			root.erase(py);
    		}
    	}
    }
    void dfs(int u, char answer){
    	if(st[nex[u]]){
    		if(answer == t[nex[u]]){
    			nums ++;
    		}
    		return;
    	}
    	
    	char nex_answer = choice[nex[u]][answer - 'A'];
    	t[nex[u]] = answer;
    	st[nex[u]] = true;
    	dfs(nex[u], nex_answer);	
    	st[nex[u]] = false;
    }
    void solve()
    {
    	int n; cin  n;
    	init(n);
    	for(int i = 1; i 
    		int x; string s;
    		cin  x  s;
    		choice[i] = s;
    		nex[i] = x;
    		in[x] ++;
    		merge(x, i);
    	}
    	int ans = 1;
    	for(auto x: root){
    		for(int i = 0; i  
    

    L

    #include
    #define endl '\n'
    #define deb(x) cout 
    	int c, d, h, w;
    	cin  c  d >> h >> w;
    	cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	//t = 1;
    	cin  t;
    	while(t--)
    	solve();
    }
    

    M

    #include
    #define endl '\n'
    #define deb(x) cout 
    	int n; cin  n;
    	if(n % 6)
    		cout 
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t;
    	//t = 1;
    	cin  t;
    	while(t--)
    	solve();
    }
    
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]