码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 577B 模和vecto

时间:2016-02-09 23:20:53      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:

上一年的最后一次训练赛被卡了AK...

一开始天真的认为每个数字都进行取模 然后认为它是一个vol为取模后的数 val为0的01背包 去计算dp[m]能否被装满

只想到了其中的一点..简直天真 

后来看百度学习了一下vector的部分用法 

头文件是queue 可以从0向q.size()遍历  for(int i=0;i<len;i++)

push_back() 往最后面放数

size()大小

再加个数组来判断某个数字是否出现过 把每次的东西都遍历一遍 

如果每次输入x后不进行ok的判断会超时 最多是O(n*n)吧貌似。。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
int main(){
int n,m;
while(~scanf("%d%d",&n,&m))
{
    map<int ,int >f;
    f.clear();
    bool ok=false;
    vector<int >q;
    int x;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&x);
        x%=m;
        int len=q.size();
        if(ok==false)
    {


        for(int k=0;k<len;k++)
        {
            int e=(q[k]+x)%m;
            if(e==0)
                ok=true;
            if(f[e]==0)
            {
                q.push_back(e);
                f[e]=1;
            }
        }
        if(f[x]==0)
        {
            q.push_back(x);
            f[x]=1;
        }
        if(x==0)
            ok=true;
    }
    }
    if(ok==true)
    {
        printf("YES\n");
    }
    else printf("NO\n");
}
}

  

嗯...acm真正进行半年了(其实是从九月多到二月多 五个月左右...)

嗯 以后也要努力!

CodeForces 577B 模和vecto

标签:

原文地址:http://www.cnblogs.com/rayrayrainrain/p/5185779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!