zoukankan      html  css  js  c++  java
  • Codeforces Gym 100203G G

    G - Good elements
    Time Limit: 20 Sec

    Memory Limit: 256 MB

    题目连接

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87954#problem/G

    Description

    You are given a sequence A consisting of N integers. We will call the i-th element good if it equals the sum of some three elements in positions strictly smaller than i (an element can be used more than once in the sum).

    How many good elements does the sequence contain?

    Input

    The first line of input contains the positive integer N (1 ≤ N ≤ 5000), the length of the sequence A.

    The second line of input contains N space-separated integers representing the sequence A ( - 105 ≤ Ai ≤ 105).

    Output

    The first and only line of output must contain the number of good elements in the sequence.

    Sample Input

    2
    1 3

    Sample Output

    1

    HINT

    题意

          给你一个序列,任意一个数只要等于在它前面的任意三个数之和(可以相同)则称为good数

    题解

          有时候能用数组尽量用数组,set还是有祸害的

    代码:

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <queue>
    #include <typeinfo>
    #include <map>
    #include <stack>
    typedef long long ll;
    using namespace std;
    inline ll read()
    {
        ll x=0,f=1;
        char ch=getchar();
        while(ch<'0'||ch>'9')
        {
            if(ch=='-')f=-1;
            ch=getchar();
        }
        while(ch>='0'&&ch<='9')
        {
            x=x*10+ch-'0';
            ch=getchar();
        }
        return x*f;
    }
    //***************************
    int s[5000000];
     int main()
     {
         int ans=0;
         int a[50004];
         int n=read();
         for(int i=1;i<=n;i++)
         {
             scanf("%d",&a[i]);
             for(int j=1;j<i;j++)
             {
                 if(s[a[i]-a[j]+500000])
                 {
                     ans++;
                     break;
                 }
             }
             for(int j=1;j<i;j++)
             {
                 s[a[i]+a[j]+500000]=1;
             }
             s[a[i]+a[i]+500000]=1;
         }
         cout<<ans<<endl;
         return 0;
     }
  • 相关阅读:
    第二次项目冲刺(Beta阶段)--第六天
    Struts2+Hibernate简单整合
    Struts中Action的相关知识点
    struts基础配置
    servlet基础及过滤器简介
    JSP中验证码问题
    mybatis中插入数据(id为主键的情况)以及查询数据
    Mybatis基础配置及使用
    JDBC访问数据库
    Mysql中的一些基本操作
  • 原文地址:https://www.cnblogs.com/zxhl/p/4733431.html
Copyright © 2011-2022 走看看