Codeforces 461C Appleman and a Sheet of Paper(模拟)
2014-08-31 11:52
369 查看
题目链接:Codeforces 461C Appleman and a Sheet of Paper
题目大意:就是一个叠被子的过程,穿插着询问一段区间上被子的单位厚度。
解题思路:用前缀和数组模拟即可。因为对于折超过一半的处理为将令一半叠上来,所以需要变量记录当前被子的正反状态。处理好下标关系即可。
题目大意:就是一个叠被子的过程,穿插着询问一段区间上被子的单位厚度。
解题思路:用前缀和数组模拟即可。因为对于折超过一半的处理为将令一半叠上来,所以需要变量记录当前被子的正反状态。处理好下标关系即可。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1e6+5; int N, Q, W[maxn]; int main () { scanf("%d%d", &N, &Q); for (int i = 1; i <= N; i++) W[i] = i; bool flag = false; int k, l, r; int n = N, bw = 0; while (Q--) { scanf("%d%d", &k, &l); if (k == 1) { if (l > n - l) { flag = !flag; l = n - l; } if (flag) { for (int i = 0; i < l; i++) W[bw + n - l - i] += N - W[bw + n - l + i]; } else { bw += l; for (int i = 0; i < l; i++) W[bw + i] -= W[bw - i]; } n -= l; } else { scanf("%d", &r); if (flag) { int tmp = n - r; r = n - l; l = tmp; } printf("%d\n", W[bw + r] - W[bw + l]); } } return 0; }
相关文章推荐
- Codeforces 600A Extract Numbers 【模拟】
- CodeForces 412E - E-mail Addresses (模拟)
- Codeforces--658C--Bear and Forgotten Tree 3(模拟&&技巧)(好题)
- codeforces 600 A. Extract Numbers(字符串模拟)
- codeforces 143B Help Kingdom of Far Far Away 2(模拟)
- CodeForces 557A-Ilya and Diplomas【模拟】
- CodeForces 144C Anagram Search(暴力模拟)
- Codeforces - 831B. Keyboard Layouts - 字符串、模拟
- CodeForces - 825B Five-In-a-Row (暴力模拟)
- CodeForces - 370B 模拟 思维
- Codeforces 246B-Increase and Decrease【模拟】
- codeforces 864D 模拟 + 贪心
- CodeForces - 864C Bus 水模拟
- 树状数组模拟3个元素的排序 Codeforces 12D Ball
- Codeforces 761C Dasha and Password 【模拟】
- CodeForces 697 B. Barnicle(简单模拟)
- CodeForces - 260C Balls and Boxes(模拟)
- CodeForces 731B Coupons and Discounts (水题模拟)
- CodeForces 448B 小模拟
- codeforces 732D 模拟暴力