#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 105; int n, visx[N], visy[N]; int main() { scanf("%d", &n); int x, y, xn = 0, yn = 0; while (n--) { scanf("%d%d", &x, &y); if (!visx[x]) { xn++; visx[x] = 1; } if (!visy[y]) { yn++; visy[y] = 1; } } int ans = (xn < yn ? xn : yn); printf("%d\n", ans); return 0; }
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 100005; __int64 a[N], b[N]; int n, i; int main() { scanf("%d", &n); for (i = 0; i < n; i++) scanf("%I64d", &a[i]); for (i = 0; i < n; i++) scanf("%I64d", &b[i]); __int64 ans = 0; for (i = 0; i < n; i++) { if (a[i] * 2 < b[i]) ans--; else if (b[i] == 1) ans--; else ans += (b[i] / 2) * (b[i] - b[i] / 2); } printf("%I64d\n", ans); return 0; }
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 100005; int n, k, w, i, sum[15][N], s[N];//sum其实开1维就可以了,写得搓又长,其实可以写得更简略 char str[N]; int main() { scanf("%d%d%d", &n, &k, &w); scanf("%s", str + 1); for (i = 1; i <= n; i++) { s[i] = s[i - 1] + str[i] - ‘0‘; } for (i = 1; i <= k; i++) { for (int j = i - 1 + k; j <= n; j += k) { if (str[j] == ‘1‘) { sum[i][j] = sum[i][j - k] + 1; } else sum[i][j] = sum[i][j - k]; } } int l,r; while (w--) { scanf("%d%d", &l, &r); int ll = l; l %= k; if (l == 0) l = k; int ss = sum[l][r] - sum[l][ll - 1]; int sss = s[r] - s[ll - 1]; int h = (r - ll + 1) / k; int ans = h - ss + (sss - ss); printf("%d\n", ans); } return 0; }
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 55; int n, m, k, i, j; struct G { int x, y; } g[N * N]; bool cmp(G a, G b) { return a.x + a.y < b.x + b.y; } int main() { scanf("%d%d%d", &n, &m, &k); int gn = 0; for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) { g[gn].x = i; g[gn++].y = j; } sort(g, g + gn, cmp); int ans = 0; for (i = 0; i < k; i++) ans += g[i].x + g[i].y - 1; printf("%d\n", ans); for (i = k - 1; i >= 0; i--) { for (j = 1; j <= g[i].y; j++) printf("(1,%d) ", j); for (j = 2; j <= g[i].x; j++) printf("(%d,%d) ", j, g[i].y); printf("\n"); } return 0; }
#include <stdio.h> #include <string.h> const int MAXN = 4 * 1000005; __int64 bit1[2][MAXN], bit2[2][MAXN]; void insert(__int64 *bit, int x, __int64 value) { while (x < MAXN) { bit[x] += value; x += x&(-x); } } __int64 get(__int64 *bit, int x) { __int64 ans = 0; while (x > 0) { ans += bit[x]; x -= x&(-x); } return ans; } void Insert(int id, int l, int r, __int64 value) { insert(bit1[id], l, value); insert(bit1[id], r + 1, -value); insert(bit2[id], l, -value * (l - 1)); insert(bit2[id], r + 1, value * r); } __int64 Get(int id, int x) { return get(bit1[id], x) * x + get(bit2[id], x); } int n, m, w; int main() { scanf("%d%d%d", &n, &m, &w); int v, x1, y1, x2, y2; __int64 value; while (w--) { scanf("%d%d%d%d%d", &v, &x1, &y1, &x2, &y2); if (v) { __int64 ans = Get(1, y2) - Get(1, y1 - 1) - (Get(0, n) - Get(0, x2) + Get(0, x1 - 1)); printf("%I64d\n", ans); } else { scanf("%I64d", &value); Insert(0, x1, x2, value * (y2 - y1 + 1)); Insert(1, y1, y2, value * (x2 - x1 + 1)); } } return 0; }
Codeforces Round #229 (Div. 2)
原文:http://blog.csdn.net/accelerator_/article/details/19111021