UVA
来源:互联网 发布:数据库整型 编辑:程序博客网 时间:2024/06/07 08:57
#include<cstdio>#include<cstring>using namespace std;int left[100005], right[100005]; void link(int l, int r) { left[r] = l; right[l] = r;} int main(){ int test = 0, op, x, y, temp, n, m; while (scanf ("%d %d", &n, &m) != EOF) { for (int i = 1; i <= n; ++i) { right[i] = i + 1;left[i] = i - 1;} right[n] = 0, left[0] = n, right[0] = 1; int reverse = 0; while (m--) { scanf ("%d", &op); if (op == 4) reverse = !reverse; else { scanf ("%d %d", &x, &y); if ( reverse && op != 3){op = 3 - op; //翻转之后操作一变为把x移到y后面,操作二变为把x移到y前面。 } if (right[y] == x && op == 3) {temp = x; x = y; y = temp; } if ( (op == 1 && left[y] == x) || (op == 2 && right[y] == x)) continue; if (op == 1) {link (left[x], right[x]);link (left[y], x);link (x, y); } else if (op == 2) {link (left[x], right[x]); link (x, right[y]); link (y, x);} else if (y == right[x]) {link (left[x], y);link (x, right[y]);link (y, x);} else { int ry = right[y], ly = left[y]; link (left[x], y); link (y, right[x]); link (ly, x); link (x, ry); } } } int t = 0; long long ans = 0; for (int i = 1; i <= n; ++i) { t = right[t]; if (i % 2) ans += t; } if (n % 2 == 0 && reverse) //偶数位的和 ans = (long long) n / 2 * (1 + n) - ans; printf ("Case %d: %lld\n", ++test, ans); } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 从1到n整数中1出现的次数:O(logn)算法
- 启动hive报SafeModeException的错误
- 利用FFmpeg将Jpeg图片转为任意视频容器格式
- 20.java语言基础-比较运算符
- 练习78
- UVA
- 022-Java-013
- 集算器如何将第一个sql语句中的结果作为第二个sql的参数值
- 5-6.枚举enum练习。
- 21.java语言基础-三元运算符
- JVM之垃圾回收
- 冒泡排序
- Android
- 报错The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path