CodeForces 577B 模和vecto
2016-02-09 23:09
281 查看
上一年的最后一次训练赛被卡了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)吧貌似。。
嗯...acm真正进行半年了(其实是从九月多到二月多 五个月左右...)
嗯 以后也要努力!
一开始天真的认为每个数字都进行取模 然后认为它是一个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真正进行半年了(其实是从九月多到二月多 五个月左右...)
嗯 以后也要努力!
相关文章推荐
- 【HDOJ】4317 Unfair Nim
- 第19讲-字符数据及字符类型-练习
- u-boot-2016.01移植笔记之支持nandflash
- ThinkPHP - 登录流程
- What is JMX? 10 mins Quick Start JMX Tutorial (MBean, JConsole)
- 为你而来
- java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Int
- (二)搜索&&广告&&营收
- Matrix Chain Multiplication UVA 442(栈+表达式求值)
- java学习心得——动态sql拼接
- 【JAVA】JAVA易错小知识(长期更新)
- uva133救济金发放(双向约瑟夫问题)
- 等你,在路口
- POJ 3687 拓扑排序应用
- Django 笔记 模型数据的读取
- Django 笔记 模型数据的读取
- Oracle学习第三天
- MySQL UPDATE子查询
- 什么叫做有能力?——做事果断、泼辣,效率高,独当一面,心思缜密。做人过得去就行
- js 表达式与运算符 详解(上)