优化复杂度
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
51nod1179【思维】
题意: 给你n个数,求两两之间的最大GCD; 思路: n太大,然后感觉是分解质因子,但是感觉分解质因子还是搞不出谁和谁的GCD; 但是可以发现,GCD给了一个范围1e6,所以能不能枚举GCD,然后看看满不满足,这里在枚举的时候可以利用素数筛那个,直接枚举i的约数,之前把输入的数标记一下就好了;有两个就行;const int N=1E6+10;int flag[N];int main(){原创 2016-10-01 19:03:13 · 599 阅读 · 0 评论 -
AtCoder Grand Contest 005【A栈模拟,B单调栈】
挖草,AtCoder实在是太吊了~ %%%,目前只A了两题; A题: 就是利用栈模拟一下就好了;S进栈,T的话有S就出栈,然后len减一下就好了;#include <bits/stdc++.h>using namespace std;char s[200020];stack<int>q;int main(){ scanf("%s",s+1); int len=strlen原创 2016-10-01 22:43:50 · 765 阅读 · 0 评论 -
HDU1059 【DP·二进制数优化】
题意:有6种不同价值的物品,然后问你能不能分成两半使得两堆价值相等;思路:一共有20000*6=120000 多的价值,总共背包有20000个,价值最大是120000,看看能不能DP到value/2就好了,所以DP数组可以开60000;价值乘以背包数,复杂度好大?我们知道一个数的组成可以搞成一个二进制,所以对于每个背包的数量,都可以搞成几个二进制数的背包数量那么就是有那原创 2016-12-26 16:55:04 · 568 阅读 · 0 评论