标签:style http color io os ar for sp 代码
A:暴力枚举一个数字,就能求出另一个数字,for一遍即可
B:博弈,判断前n - 1个开头连续1的奇偶性即可
C:先预处理出每个点对应哪几个点,每次查询计算一次即可
代码:
A:
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <algorithm>
#include <cmath>
using namespace std;
int t, a, b, c;
int main() {
scanf("%d", &t);
while (t--) {
int ans = 0;
scanf("%d%d%d", &a, &b, &c);
for (int i = 1; a * i < c; i++) {
int bs = c - a * i;
if (bs % b) continue;
int tmp = bs / b;
if (tmp <= 0) continue;
ans++;
}
printf("%d\n", ans);
}
return 0;
}
#include <cstdio>
#include <cstring>
const int N = 1005;
int n, a[N], t;
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
int ans = 0;
for (int i = 0; i < n - 1; i++) {
if (a[i] > 1) break;
ans++;
}
printf("%s\n", ans % 2 ? "No" : "Yes");
}
return 0;
}
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100005;
struct Point {
double v;
int x, l, r, id;
void read(int id) {
scanf("%d%lf", &x, &v);
this->id = id;
}
} p[N];
bool cmp(Point a, Point b) {
return a.x < b.x;
}
int t;
int n, m, k, to[N];
void build(int u) {
int l = u, r = u;
while (r - l != k) {
if (l == 1) {
r = k + 1;
break;
}
if (r == n) {
l = r - k;
break;
}
if (p[u].x - p[l - 1].x < p[r + 1].x - p[u].x) l--;
else if (p[u].x - p[l - 1].x > p[r + 1].x - p[u].x) r++;
else {
if (p[l - 1].id < p[r + 1].id) l--;
else r++;
}
}
p[u].l = l;
p[u].r = r;
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= n; i++)
p[i].read(i);
sort(p + 1, p + 1 + n, cmp);
for (int i = 1; i <= n; i++) {
to[p[i].id] = i;
build(i);
}
int q;
double ans = 0;
while (m--) {
scanf("%d", &q);
int u = to[q];
int l = p[u].l;
int r = p[u].r;
double sum = 0;
for (int i = l; i <= r; i++) {
if (u == i) continue;
sum += p[i].v;
}
double add = sum / k;
p[u].v = add;
ans += add;
}
printf("%.6lf\n", ans);
}
return 0;
}标签:style http color io os ar for sp 代码
原文地址:http://blog.csdn.net/accelerator_/article/details/39236903