codeforces 510D Fox And Jumping
来源:互联网 发布:看异性洗澡知乎 编辑:程序博客网 时间:2024/05/24 03:04
之前一篇写了题意
这里讲另外一种做法。
大概是用 map 记录 所有的公约数状态 然后暴力更新
代码如下 很好懂
思想很简单 ,对于CF用这种写法还是可以。就是复杂度不太好计算
但是比我用dp 状压质因子 跑的时间少 这种写法 只跑了 124MS 而状压 质因子DP 却跑了468MS
代码如下
#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<map>using namespace std;#define INFF 0x3fffffffmap<int,int>dp;int l[310],c[310];int gcd(int x,int y){ if(y==0) return x; return gcd(y,x%y);}int main(){ int n; while(scanf("%d",&n)!=EOF) { dp.clear(); int p=0; for(int i=1;i<=n;i++) { scanf("%d",&l[i]); p=gcd(l[i],p); } for(int i=1;i<=n;i++) scanf("%d",&c[i]); if(p!=1) { printf("-1\n"); continue; } for(int i=1;i<=n;i++) { if(dp.find(l[i])==dp.end()) dp[l[i]]=c[i]; else dp[l[i]]=min(dp[l[i]],c[i]); } int ans=INFF; for(int i=1;i<=n;i++) { map<int,int>::iterator it; for(it=dp.begin();it!=dp.end();it++) { int tmp=gcd(l[i],it->first); int cost=it->second; if(dp.find(tmp)==dp.end()) { dp[tmp]=cost+c[i]; } else { if(dp[tmp]>cost+c[i]) dp[tmp]=cost+c[i]; } if(tmp==1) ans=min(ans,dp[1]); } } printf("%d\n",ans); } return 0;}
0 0
- Fox And Jumping - CodeForces 510 D
- codeforces 510D Fox And Jumping
- codeforces 510D Fox And Jumping
- codeforces 510D Fox and Jumping
- codeforces 510D D. Fox And Jumping(dp+数论)
- codeforces 510D D. Fox And Jumping(dp+数论)
- Codeforces Round #290 D. Fox And Jumping
- 510D Fox And Jumping(dp+gcd)
- codefoces--510D. Fox And Jumping
- Codeforces Round #290 (Div. 2) D Fox And Jumping
- Codeforces Round #290 (Div. 2)D. Fox And Jumping
- Codeforces Round #290 (Div. 2)-D. Fox And Jumping
- CF D. Fox And Jumping
- gcdDP Fox And Jumping : CodeForces
- Codeforces 510D. Fox And Jumping By Assassin 暴力大法好
- Codeforces 510D.Fox And Jumping By Assassin 数论+状压dp
- Codeforces 510D Fox And Jumping【数论+Dp+压缩空间】好题~
- Codeforces Round #290 (Div. 2) C. Fox And Names && D. Fox And Jumping
- 关于分布式架构的思考
- ads1230使用时出现的问题
- 资料集合C# .net android
- 菜鸟的Linux学习笔记之命令logout
- tomcat相关知识总结
- codeforces 510D Fox And Jumping
- 棋盘覆盖和Hall's marriage theorem
- 最大二分匹配——匈牙利算法详解
- ubuntu12.04 (32/64 bits) 安装配置 arm-linux-gcc-4.5.1 交叉编译工具链
- SQLite语法详解
- xFreezing
- android 通过eclipse混淆代码 打包 + proguard 总结
- 内核编译图文教程,硬盘篇
- Java匿名内部类