SDSC 2017 Day 4 T3 Lift
来源:互联网 发布:中国移动iptv网络电视 编辑:程序博客网 时间:2024/06/05 11:22
//考场上写的30分可爱小暴力 #include<cstdio>#include<cmath>#include<iostream>using namespace std;const int moder = 1000000007;int n, a, b, k;int ans;void dfs(int na, int step){ if(step == k+1){ ans %= moder; ans++; return; } int delta = abs(na - b) - 1; if(delta == 0) return; int l = na - delta; int r = na + delta; if(l < 1) l = 1; if(r > n) r = n; for(int i = l; i <= r; i++) if(i != na) dfs(i, step+1);}int main(){ freopen("lift.in", "r", stdin); freopen("lift.out", "w", stdout); scanf("%d%d%d%d", &n, &a, &b, &k); if(abs(a-b) == 1){ printf("0\n"); return 0; } dfs(a, 1); printf("%d\n", ans); return 0;}
//正解DP//dp[i][j]表示从i层出发还剩j次坐电梯的方案数 #include<bits/stdc++.h>using namespace std;const int moder = 1e9 + 7;int n, a, b, k;long long sum[5010], start, end;int dp[5012][2];inline int read(){ int num = 0; char c; while((c = getchar()) == ' ' || c == '\r' || c == '\n'); num = c - '0'; while(isdigit(c = getchar())) num = num*10 + c - '0'; return num;}int main(){ n = read(); a = read(); b = read(); k = read(); if(abs(a-b) == 1){ printf("0\n"); return 0; } int now = 1, pre = 0; for(int i = 1; i <= n; i++) dp[i][pre] = 1; for(int i = k; i <= 1; i++){ sum[0] = 0; for(int j = 1; j <= n; j++) sum[j] = dp[j][pre] + sum[j-1];//预处理前缀和 for(int j = 1; j <= n; j++) if(j != b){ int delta = abs(j - b); if(j - delta < 0) start=0; else start = j - delta; start++; if(j + delta > 1 + n) end = n + 1; else end = j + delta; end--; dp[j][now] = (sum[end] - sum[start-1] - dp[j][pre]) % moder; } swap(now, pre);//滚动数组 } printf("%d\n", dp[a][pre]); return 0;}
阅读全文
0 0
- SDSC 2017 Day 4 T3 Lift
- SDSC 2017 Day 5 T3
- SDSC 2017 Day5 T2
- SDSC 2017 Day1 T2 && 洛谷 2652 同花顺
- NOIP2016#模拟考试 Day.1# T3 导航软件
- NOIP2016#模拟考试 Day.2# T3 王位继承
- #NOIP 2014#Day.2 T3 解方程
- NOIP 2015 Day T3 landlords 斗地主
- 济南学习 Day 2 T3 am
- 济南学习 Day 2 T3 pm
- 济南学习 Day 3 T3 am
- 济南学习 Day 3 T3 pm
- 济南学习 Day 5 T3 pm
- 济南学习 Day 5 T3 am
- NOIP2015 Day 1 T3 斗地主
- #NOIP 2014# day.1 T3 飞扬的小鸟 bird
- T3
- t3
- hdu 6181 (次短路
- dubbo线程池溢出解决
- Android 混淆报的异常IOException ,ParseException,ClassNotFoundException
- 动画
- 大数据平台生产环境部署指南
- SDSC 2017 Day 4 T3 Lift
- 树的Prufer 编码和最小生成树计数
- mysql 字段类型探究
- LAMP之PHP编译安装
- 如何使用UGUI创建制作不规则按钮
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)
- 一些朋友的话
- Qt开发总结 -- 【持续更新】
- C-Free 5.0之C99标准支持问题