codeforces 733E (数学)
来源:互联网 发布:澳洲人工智能专业排名 编辑:程序博客网 时间:2024/06/04 23:51
题目链接:点击这里
题意:n个台阶,每个台阶上有上或者下,每经过一次都会改变方向。求从每个台阶出发,从最下方或者最上方走出去的步数
对于每一个开始的台阶,只有他下方的U和他上方的D会影响最后的步数。如果要从下方出去就需要把下面都变成D,同样的,要从上面出去就要把上面都变成U。观察一下发现交换初始台阶上下方的D和U的步数花费就是两者距离的一半,最后加上开始台阶从下方或者上方走出的步数。
trick:结果会爆int
#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (int a = b; a >= c; a--)#define first fi#define second se#define pii pair<int, int>#define pli pair<long long, int>#define mp make_pair#define pb push_backusing namespace std;#define maxn 1000005char s[maxn];long long n, sum1, sum2;long long l[maxn], r[maxn];vector <long long> ans1, ans2, u, d;int main () { //freopen ("more.in", "r", stdin); cin >> n >> s+1; l[0] = r[n+1] = 0; u.clear (); d.clear (); FOR (i, 1, n) { l[i] = l[i-1]+(s[i] == 'U'); if (s[i] == 'U') u.pb (i); else d.pb (i); } REP (i, n, 1) { r[i] = r[i+1]+(s[i] == 'D'); } int cut = n+1; FOR (i, 1, n) { if (l[i-1] < r[i+1] || (l[i-1] == r[i+1] && s[i] == 'D')) continue; else { cut = i; break; } } sum1 = sum2 = 0; ans1.clear (); ans2.clear (); int i = u.size()-1, j = 0; FOR (pos, 1, cut-1) { if (s[pos] == 'U') sum1 += pos*2; else sum2 -= pos*2; sum2 += d[j++]*2; ans1.pb (sum2-sum1+pos); } sum1 = sum2 = 0; REP (pos, n, cut) { if (s[pos] == 'D') sum2 += pos*2; else if (s[pos] == 'U') sum1 -= pos*2; sum1 += u[i--]*2; ans2.pb (sum2-sum1+n-pos+1); } for (int i = 0; i < ans1.size (); i++) cout << ans1[i] << " "; REP (i, ans2.size()-1, 0) { cout << ans2[i] << " "; } cout << endl; return 0;}
0 0
- codeforces 733E (数学)
- codeforces 730E (数学)
- codeforces 676E 数学多项式
- CodeForces 616E(数学规律)
- Codeforces 493E Vasya and Polynomial(数学)
- Codeforces 520E. Pluses everywhere 数学
- codeforces 520E Pluses everywhere (数学)
- CodeForces - 630E A rectangle (数学规律)
- Codeforces E. Qwerty78 Trip 【组合数学】
- codeforces #630 E. A rectangle 【数学】
- codeforces 268E Playlist(数学期望)
- Codeforces-792E Colored Balls(贪心/数学)
- codeforces 893E Counting Arrays (组合数学)
- CodeForces 51 E.Pentagon(组合数学)
- codeforces 225E E. Unsolvable(梅森素数+数学)
- codeforces 733E
- Codeforces 733e
- Codeforces Round #265 (Div. 2)E. Substitutes in Number(数学)
- Pcl配置
- android wear那些事--打包穿戴式应用
- 异常处理
- 扑克牌的顺子
- 理解java 序列化
- codeforces 733E (数学)
- Android产品研发(十五)-->内存对象序列化
- 小心FOR IN遍历数组
- 数据库:数据的查询
- LightOJ-1071-dp,dfs
- BFS广搜题目【经典训练题】
- ss kcptun安装及开机启动
- 消息队列的发送与接收
- 网络基础---TCP连接