zoukankan      html  css  js  c++  java
  • C. Jury Marks 思维

    C. Jury Marks

    这个题目虽然是只有1600,但是还是挺思维的。

    有点难想。

    应该可以比较快的推出的是这个肯定和前缀和有关,

    x x+a1 x+a1+a2 x+a1+a2+a3...

    x+sum=b

    所以我们可以通过b来枚举每一个x,如果这个x可以满足找到m个b,那就说明这个x是合理的。

    但是要注意的是,这个sum的去重,为什么要去重呢,因为如果不去虫,就是找到两个相同的  因为x=b-sum 

     所以可以只要枚举b[1]即可,因为对于每一个b,其中一个确定之后,剩下的b的位置也固定了。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<algorithm>
    #include<map>
    #include<iomanip>
    #define INF 99999999
    using namespace std;
    const int maxn = 2e6 + 10;
    typedef long long ll;
    int a[maxn];
    ll sum[maxn];
    map<ll, int>mp;
    
    int main()
    {
        int n, m;
        scanf("%d%d", &n, &m);
        for(int i=1;i<=n;i++)
        {
            scanf("%lld", &sum[i]);
            sum[i] += sum[i - 1];
            mp[sum[i]] = 1;
        }
        for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
        sort(sum + 1, sum + 1 + n);
        int len = unique(sum + 1, sum + 1 + n) - sum - 1;
        int ans = 0;
        for(int i=1;i<=len;i++)
        {
            int cnt = 0, num = a[1] - sum[i];
            for(int j=1;j<=m;j++)
            {
                if (mp[a[j] - num]) cnt++;
            }
            if (cnt >= m) ans++;
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    Java基础面试题附答案 81-100(五)
    css练习--抽屉作业
    css
    HTML 快速入门
    selectors 模块完成文件上传下载功能
    IO 模型
    进程 线程 协程
    socket套接字
    异常处理
    面向对象
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/11370592.html
Copyright © 2011-2022 走看看