(奇怪的暴力)codeforces 731F 354C
2016-12-11 09:54
387 查看
731F Video
Cards
题意:给出数组a[1~n],(1 ≤ ai ≤ 200 000),从中选取一个数作为第一个数。接下来的所有数都要向下降成它的倍数。求解sum最大是多少。
题解:
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
354C Vasya
and Beautiful Arrays
题意:给出数组a[1~n],(1 ≤ ai ≤ 1000 000),所有数都可以向下降,最多降k。求解最大的gcd。
题解:
Cards
题意:给出数组a[1~n],(1 ≤ ai ≤ 200 000),从中选取一个数作为第一个数。接下来的所有数都要向下降成它的倍数。求解sum最大是多少。
题解:
#include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <cstdio> #include <string> #include <cmath> #include <queue> #include <set> #include <map> using namespace std; typedef long long ll; #define de(x) cout << #x << "=" << x << endl const int N=200005; int a ,b ; ll sum ; int main() { int n; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); int x; for(int i=1;i<=n;++i) { scanf("%d",&x); ++a[x]; } int m=0; for(int i=1;i<=200000;++i) { sum[i]=sum[i-1]+a[i]; if(a[i]) b[++m]=i; } ll ans=0; for(int i=1;i<=m;++i) { ll tmp=0; for(int j=1;b[i]*j-1<=200000;++j) {//开头数的j倍 ll t=b[i]*(j+1)-1; if(t>200000) t=200000; tmp+=0ll+1ll*b[i]*j*(sum[t]-sum[b[i]*j-1]); } ans=max(ans,tmp); } printf("%I64d\n",ans); } return 0; }
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
354C Vasya
and Beautiful Arrays
题意:给出数组a[1~n],(1 ≤ ai ≤ 1000 000),所有数都可以向下降,最多降k。求解最大的gcd。
题解:
#include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <cstdio> #include <string> #include <cmath> #include <queue> #include <set> #include <map> using namespace std; typedef long long ll; #define de(x) cout << #x << "=" << x << endl const int N=1000000; int n,k; int a[N+5]; ll sum[N+5]; bool check(int d) { if(sum[d-1]) return 0;//有比它更小的数 for(int i=1;d*i<=N;++i) {//这个数的i倍 int t1=d*(i+1)-1; if(t1>N) t1=N; int t2=d*i+k; if(t2>N) t2=N; if(sum[t1]-sum[t2]>0) return 0; } return 1; } int main() { while(~scanf("%d%d",&n,&k)) { memset(a,0,sizeof(a)); int x; for(int i=1;i<=n;++i) { scanf("%d",&x); ++a[x]; } for(int i=1;i<=N;++i) sum[i]=sum[i-1]+a[i]; for(int i=N;i>=1;--i) {//枚举gcd if(check(i)) { printf("%d\n",i); break; } } } return 0; }
相关文章推荐
- codeforces 731F (暴力)
- codeforces 731F 暴力(前缀和)
- Codeforces 442B Kolya and Tandem Repeat(暴力)
- codeforces 691F Couple Cover 暴力
- Codeforces-----233B---Non-square Equation暴力枚举
- Codeforces 842A. Kirill And The Game (暴力)
- CodeForces 727A Transformation: from A to B 暴力
- Codeforces 57B Martian Architecture 暴力||线段树
- Codeforces 633D Fibonacci-ish(暴力)
- Codeforces 851C - Five Dimensional Points - 数学 暴力
- Codeforces 463E Caisa and Tree(暴力)
- Codeforces 464B Restore Cube(暴力)
- CodeForces 722C Destroying Array(并查集和我奇怪的二叉树)
- Codeforces 143A Help Vasilisa the Wise 2(暴力)
- Codeforces 467B Fedor and New Game(暴力)
- codeforces 898B. Proper Nutrition(暴力+思维)
- codeforces 787A the monster(扩展欧几里得做法+暴力做法)
- CodeForces 593A - 2Char(暴力)
- codeforces 574B 暴力+复杂度分析
- codeforces 489D Unbearable Controversy of Being (暴力乱搞)