2017-09-29校训练题题解
来源:互联网 发布:fifa隐藏属性数据库 编辑:程序博客网 时间:2024/06/05 03:44
t1
傻逼dfs,大暴搜,不贴代码。
t2
#include<set>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;inline int read() { int x = 0, flag = 1; char ch = getchar(); while (ch > '9' || ch < '0') { if (ch == '-') flag = -1; ch = getchar(); } while (ch <= '9' && ch >= '0') { x = x * 10 + ch - '0'; ch = getchar(); } return x * flag;}inline bool get() { char ch = getchar(); while (ch != '1' && ch != '0') ch = getchar(); return ch == '1';}#define rep(ii, aa, bb) for (int ii = aa; ii <= bb; ii++)#define ll long long#define N 2001bool a[N][N];int sum[N][N], upe[N][N], lfe[N][N];int main() { int n, m, q; scanf("%d%d%d", &n, &m, &q); rep(i, 1, n) rep(j, 1, m) a[i][j] = get(); rep(i, 1, n) rep(j, 1, m) { upe[i][j] = upe[i - 1][j] + (a[i][j] & a[i][j - 1]); lfe[i][j] = lfe[i][j - 1] + (a[i][j] & a[i - 1][j]); sum[i][j] = a[i][j] - (a[i][j] & a[i][j - 1]) - (a[i][j] & a[i - 1][j]) + sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1]; } while (q--) { int x1 = read(), y1 = read(), x2 = read(), y2 = read(); int ans = 0; ans += sum[x2][y2] - sum[x2][y1 - 1] - sum[x1 - 1][y2] + sum[x1 - 1][y1 - 1]; ans -= upe[x1 - 1][y1] - upe[x2][y1]; ans -= lfe[x1][y1 - 1] - lfe[x1][y2]; printf("%d\n", ans); } return 0;}
t3
卡空间的逆序对,玄学颓公式。
#include<set>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;inline int read() { int x = 0, flag = 1; char ch = getchar(); while (ch > '9' || ch < '0') { if (ch == '-') flag = -1; ch = getchar(); } while (ch <= '9' && ch >= '0') { x = x * 10 + ch - '0'; ch = getchar(); } return x * flag;}#define rep(ii, aa, bb) for (int ii = aa; ii <= bb; ii++)#define ll long long#define N 100001int n, x, a, mod, cnt = 0;struct period { int base, cnt; ll operator * (const period &t) { int st = (base - t.base + a) / a; int tn = t.cnt - st + 1; if (tn >= cnt) return (ll)cnt * ((st << 1) + cnt - 1) >> 1; return ((ll)tn * (st + t.cnt) >> 1) + (ll)t.cnt * (cnt - tn); }} p[N];int main() { scanf("%d%d%d%d", &n, &x, &a, &mod); while (true) { int tmp = (mod - x + a - 1) / a; if (tmp >= n) { p[cnt].base = x, p[cnt].cnt = n; break; } p[cnt].base = x, p[cnt++].cnt = tmp; x += tmp*a - mod; n -= tmp; } ll ans = 0; rep(i, 0, cnt - 1) rep(j, i + 1, cnt) ans += p[i] * p[j]; printf("%lld\n", ans); return 0;}
阅读全文
0 0
- 2017-09-29校训练题题解
- 2017-09-23校训练题题解
- 2017-09-25校训练题题解
- 2017-10-12校训练题题解
- 多校训练赛题解 第四场 2017 Multi-University Training Contest 4 solutions BY 陈松杨
- HDU-2017 多校训练赛1-补题
- HDU-2017 多校训练赛2-补题
- HDU-2017 多校训练赛3-补题
- HDU-2017 多校训练赛4-补题
- HDU-2017 多校训练赛5-补题
- HDU-2017 多校训练赛6-补题
- HDU-2017 多校训练赛7-补题
- HDU-2017 多校训练赛8-补题
- HDU-2017 多校训练赛9-补题
- HDU-2017 多校训练赛10-补题
- 2015多校训练5题解与代码
- (2017多校训练第一场)HDU
- (2017多校训练第一场)HDU
- [LeetCode]8. String to Integer(atoi)
- 面向对象
- [bzoj 3240--Noi2013]矩阵游戏
- Swift
- Java后台框架篇--Springsecurity(二)
- 2017-09-29校训练题题解
- Java学习之基础训练一
- BZOJ2301 Problemb
- 浅谈数字逻辑代数的基本定理和规矩(一)
- 机器学习
- Linux 下打开 Core Dump
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 关于表单的重复提交(3种)
- Java设计模式——备忘录模式(Memento Pattern)