Codeforces Round #618
Non-zero
题目链接 http://codeforces.com/contest/1300/problem/A
代码
#include <cstdio>
using namespace std;
#define Nmax 103
int N;
int A[Nmax];
void work()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &A[i]);
}
int ans = 0;
for (int i = 0; i < N; i++)
{
if (A[i] == 0)
{
A[i] = 1;
ans++;
}
}
int sm = 0;
for (int i = 0; i < N; i++)
{
sm += A[i];
}
if (sm == 0)
ans++;
printf("%d\n", ans);
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
work();
}
return 0;
}
Assigning to Classes
题目链接 http://codeforces.com/contest/1300/problem/B
代码
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 200010
int N;
int ls[Nmax];
void work()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &ls[i]);
}
for (int i = 0; i < N; i++)
{
scanf("%d", &ls[N+i]);
}
sort(ls, ls+N*2);
printf("%d\n", ls[N] - ls[N-1]);
}
int main()
{
int T;
scanf("%d", &T);
while (T--) {
work();
}
return 0;
}
Anu Has a Function
题目链接 http://codeforces.com/contest/1300/problem/C
代码
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 100010
int N;
int ls[Nmax];
int cnt[40];
int main()
{
scanf("%d", &N);
int x;
for (int i = 0; i < N; i++)
{
scanf("%d", &ls[i]);
x = ls[i];
for (int j = 0; j <= 30; j++)
{
if ((1<<j)&x)
cnt[j]++;
}
}
int ans = -1;
int id;
int tmp;
for (int i = 0; i < N; i++)
{
x = ls[i];
tmp = 0;
for (int j = 0; j <= 30; j++)
{
if (((1<<j) & x) && cnt[j] == 1) {
tmp |= 1<<j;
}
}
if (tmp > ans)
{
ans = tmp;
id = i;
}
}
tmp = ls[0];
ls[0] = ls[id];
ls[id] = tmp;
for (int i = 0; i < N; i++)
{
printf("%d ", ls[i]);
}
return 0;
}
Aerodynamic
题目链接 http://codeforces.com/contest/1300/problem/D
代码
#include <cstdio>
#include <map>
using namespace std;
#define Nmax 100010
int N;
int ls[Nmax][2];
long long smx, smy;
map<pair<int, int>, int> mp;
int main()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d %d", &ls[i][0], &ls[i][1]);
smx += ls[i][0];
smy += ls[i][1];
}
smx *= 2;
smy *= 2;
if (N/2 == 1)
{
printf("NO\n");
return 0;
}
for (int i = 0; i < N; i++)
{
mp[make_pair(ls[i][0]*(long long)N, ls[i][1]*(long long)N)] = 1;
}
for (int i = 0; i < N; i++)
{
if (!mp.count(make_pair(smx - ls[i][0] * (long long)N, smy - ls[i][1] * (long long)N)))
{
printf("NO\n");
return 0;
}
}
printf("YES\n");
return 0;
}
Water Balance
题目链接 http://codeforces.com/contest/1300/problem/E
代码
#include <cstdio>
using namespace std;
#define Nmax 1000010
int N;
int A[Nmax];
long long sm[Nmax];
long double ls[Nmax];
int id[Nmax];
int len[Nmax];
int tl;
int main()
{
scanf("%d", &N);
for (int i = 1; i <= N; i++)
{
scanf("%d", &A[i]);
sm[i] = sm[i-1] + A[i];
}
ls[0] = A[N];
id[0] = N;
len[0] = 1;
tl = 1;
int lenlen;
long double ld;
for (int i = N-1; i >= 1; i--)
{
lenlen = 1;
ld = A[i];
while (tl) {
if (ls[tl-1] < ld) {
tl--;
lenlen += len[tl];
ld = (long double)(sm[i+lenlen-1] - sm[i-1]) / (long double)(lenlen);
}
else
break;
}
ls[tl] = ld;
id[tl] = i;
len[tl] = lenlen;
tl++;
}
for (int i = tl-1; i >= 0; i--)
{
for (int j = 0; j < len[i]; j++)
{
printf("%.9lf\n", (double)ls[i]);
}
}
return 0;
}

浙公网安备 33010602011771号