zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 194

    A I Scream

    int main()
    {
    	IOS;
    	int a, b;	
    	cin >> a >> b;
    	if(a + b >= 15 && b >= 8) puts("1");
    	else if(a + b >= 10 && b >= 3) puts("2");
    	else if(a + b >= 3) puts("3");
    	else puts("4");
    	return 0;
    } 
    

    B

    int n;
    int a[N], b[N];
    
    int main()
    {
    	scanf("%d", &n);
    	int res = INF;
    	for(int i = 1; i <= n; ++ i) 
    	{
    		scanf("%d%d", &a[i], &b[i]);
    		res = min(res, a[i] + b[i]);
    	}
    	for(int i = 1; i <= n; ++ i)
    		for(int j = 1; j <= n; ++ j)
    			if(i != j) res = min(max(a[i], b[j]), res);
    	printf("%d
    ", res);
    	return 0;
    } 
    

    C Squared Error

    (sumlimits_{i=2}^Nsumlimits_{j=1}^{i-1}(A_i-A_j)^2) = (sumlimits_{i=1}^NA_i^2 * (N - 1) - sumlimits_{i=2}^NA_isumlimits_{j=1}^{i - 1}2 * A_j)
    用前缀和优化后复杂度 (O(n))

    int n;
    int a[N], sum[N];
    
    int main()
    {
    	scanf("%d", &n);
    	LL res = 0;
    	for(int i = 1; i <= n; ++ i) 
    	{
    		scanf("%d", &a[i]);
    		res += (LL)a[i] * a[i] * (n - 1);
    		res -= (LL)sum[i - 1] * a[i] * 2;
    		sum[i] = sum[i - 1] + a[i];
    	}
    	printf("%lld
    ", res);
    	return 0;
    } 
    

    D Journey

    令当前已经访问过的顶点集合为 (S), 下一次能使得 (|S|) 增加 (1) 的概率为 (dfrac{N - |S|}{N}), 首中即停止,符合几何分布,已知几何分布的期望是 (dfrac{1}{p}), 故期望是 (sumlimits_{i = 1}^{n - 1}dfrac{N}{N - i})

    int n;
    
    int main()
    {
    	cin >> n;
    	double res = 0;
    	for(int i = 1; i < n; ++ i) res += (double)n / i;
    
    	printf("%.10lf
    ", res);
    	return 0;
    } 
    

    E Mex Min Editorial

    对于相同的两个数 (x),如果它们之间的距离大于 (M),则代表有一段长度为 (M) 的区间中没有 (x), (x)则可以作为答案
    为了处理边界情况,在 (0)(n + 1) 的位置上放置每一个数

    int n, m;
    int last[N];
    
    int main()
    {
    	scanf("%d%d", &n, &m);
    	int res = INF;
    
    	for(int i = 1; i <= n; ++ i)
    	{
    		int x; 
    		scanf("%d", &x);
    		if(i - last[x] > m) res = min(x, res);
    		last[x] = i;
    	}
    	for(int i = 0; i <= n; ++ i)
    		if(n + 1 - last[i] > m) 
    			res = min(i, res);
    	printf("%d
    ", res);
    	return 0;
    }
    

    F Digits Paradise in Hexadecimal

    (f[i][j]) 为前 (i) 位选了 (j) 种的方案数,且选出的方案都严格小于上界
    当上一位未达到上界时:
    (f[i + 1][j] += f[i][j] * j)
    (f[i + 1][j + 1] += f[i][j] * (16 - j))
    因为要处理前导零,所以从 (0) 转移要特殊处理:
    (f[i + 1][1] += f[i][0] * 15)
    (f[i + 1][0] += f[i][0])
    再统计上一位达到上界时,当前位取 (0) ~ (v[i] - 1) 的贡献
    最后特判掉所有位都取到上界是否符合题意

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    
    #define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
    
    const int P = 1e9 + 7;
    const double PI = acos(-1.0);
    const int INF = 0x3f3f3f3f;
    const int N = 3e6 + 10;
    
    int main()
    {
    	IOS;
    	int n;
    	string str;
    	vector<int> v;
    	cin >> str >> n;
    
    	for(auto x : str)
    		if(x >= '0' && x <= '9') v.push_back((int)(x - '0'));
    		else v.push_back((int)(10 + x - 'A'));
    	
    	vector<vector<int> > f(str.size() + 1, vector<int>(18, 0));
    	
    	int state = 0;
    	for(int i = 0; i < (int)str.size(); ++ i)
    	{
    		for(int j = 1; j <= 16; ++ j)
    		{
    			f[i + 1][j] = (f[i + 1][j] + (LL)f[i][j] * j % P) % P;
    			f[i + 1][j + 1] = (f[i + 1][j + 1] + (LL)f[i][j] * (16 - j) % P) % P;
    		}
    		f[i + 1][1] = (f[i + 1][1] + (LL)f[i][0] * 15 % P) % P;
    		f[i + 1][0] = (f[i + 1][0] + f[i][0]) % P;
    		for(int j = 0; j < v[i]; ++ j)
    		{
    			int nstate = state;
    			if(i || j) nstate |= (1 << j);
    			f[i + 1][__builtin_popcount(nstate)] += 1;
    		}
    		state |= (1 << v[i]);
    	}
    
    	int res = f[str.size()][n] + (__builtin_popcount(state) == n);
    	cout << res << endl;
    	
    	return 0;
    } 
    
  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/ooctober/p/14492751.html
Copyright © 2011-2022 走看看