博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces #105 DIV2 ABCDE
阅读量:4945 次
发布时间:2019-06-11

本文共 4737 字,大约阅读时间需要 15 分钟。

开始按照顺序刷刷以前的CF。

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b);}int a[4],d;int main(){ while (cin>>a[0]>>a[1]>>a[2]>>a[3]>>d) { int ans = 0; for (int i = 1; i <= d; i++) { for (int j = 0; j < 4; j++) if (i % a[j] == 0) { ans ++; break; } } cout<
<
View Code

B贡献无数发WA。注意相遇的条件 直接double处理就可以。一直以为按照相应直接直接跳跃相应距离 直接int处理

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b);}int vp,vd,t,f,c;int pos[1010];int main(){ while (cin>>vp>>vd>>t>>f>>c) { if (vp >= vd) {puts("0");continue;} int thev = vd - vp; double pospri = vp * t;int ans = 0; while (pospri < c) { double ti = pospri / (double)thev; if ((double) vd * ti >= c) break; ans ++; pospri = pospri + f * vp +(double) 2 * ti * vp; // printf("%d\n",pospri); if (pospri >= c) break; } cout <
<
View Code

C 坑点比较多。注意b等于0的情况

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b);}int n,a,b;int num[110];int main(){ while (cin >> n >> a >> b) { if (a > n || b > n){ puts("-1");continue;} if (a > 0 && b == 0) { if (n - a < 2) {puts("-1");continue;} else { printf("1 1 "); for (int i = 1 ,k = 2,j = 3; j <= n && i <= a ; k++,i++) printf("%d ",k); for (int i = a + 3; i <= n; i++) printf("%d ",a + 1); puts(""); } continue; } for (int i = 0; i < 110; i++) num[i] = 1; int cas = 1; int sum = 1; for (int i = 2; i <= b + 1; i++) { num[i] = sum + cas; sum += num[i]; } cas = 1; for (int i = b + 2; i <= a + b + 1;i ++) { num[i] = num[i - 1] + cas; } for (int i = 1; i <= n; i++) if (i == 1) cout << num[i]; else cout << ' ' << num[i]; puts(""); } return 0;}
View Code

D DP

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b);}int w,b;double dp[1010][1010];void init(){ for (int i = 0; i < 1001; i++) { dp[i][0] = 1.0; dp[0][i] = 0.0; } for (int w = 1; w < 1001; w++) for (int b = 1; b < 1001; b++) { dp[w][b] += 1.0 * w / (w + b); if (b >= 3) dp[w][b] += dp[w][b - 3] * 1.0 * b / (w + b) * 1.0 * (b - 1) / (w + b - 1) * 1.0 * (b - 2) / (w + b - 2); if (b >= 2) dp[w][b] += dp[w - 1][b - 2] * 1.0 * b / (w + b) * 1.0 * (b - 1) / (w + b - 1) * w / (w + b - 2); }}int main(){ init(); while (scanf("%d%d",&w,&b) != EOF) printf("%.9lf\n",dp[w][b]); return 0;}
View Code

E DP预处理+DP

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b);}#define MAXN 110#define MAXD 10010int sum[MAXN][MAXD],dp[MAXN][MAXD],res[MAXN][MAXD];int N,M;int num[MAXN];int main(){ while (scanf("%d%d",&N,&M) != EOF) { memset(dp,0,sizeof(dp)); memset(res,0,sizeof(res)); for (int i = 1; i <= N; i++) { scanf("%d",&num[i]); sum[i][0] = 0; for (int j = 1; j <= num[i];j++) { int tmp; scanf("%d",&tmp); sum[i][j] = sum[i][j - 1] + tmp; } res[i][0] = 0; for (int j = 1; j <= num[i]; j++) for (int k = 0; k <= j; k++) res[i][j] = max(res[i][j],sum[i][k] + sum[i][num[i]] - sum[i][num[i] - (j - k)]); } for (int i = 1; i <= N; i++) for (int j = 1; j <= M; j++) for (int k = 0; k <= num[i] && k <= j; k++) dp[i][j] = max(dp[i][j],max(dp[i - 1][j],dp[i - 1][j - k] + res[i][k])); printf("%d\n",dp[N][M]); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/Commence/p/4033713.html

你可能感兴趣的文章
java:一个项目的开发过程(转)
查看>>
操作系统下载路径
查看>>
网站开发 关于图片压缩 以及图片使用
查看>>
hive的count(distinct id)测试--慎用
查看>>
第九周周总结
查看>>
Logistic Regression
查看>>
8lession-基础类型转化
查看>>
FlashCS5作成SWC,在Flex4中使用(1)
查看>>
vue-cli目录结构及说明
查看>>
JS 数据类型转换
查看>>
WeQuant交易策略—RSI
查看>>
osgearth将视点绑定到一个节点上
查看>>
PHP 当前时间秒数+数值,然后再转换成时间。
查看>>
数据交互 axios 的使用
查看>>
bootloader,kernel,initrc
查看>>
Java中jshell脚本
查看>>
performSelector的方法
查看>>
redis
查看>>
BZOJ1645 [Usaco2007 Open]City Horizon 城市地平线
查看>>
配置IIS
查看>>