Codeforces Round 891 (Div. 3)
给你一个由n个整数组成的数组。是否可以将其所有元素着色为两种颜色,使得两种颜色的元素之和具有相同的奇偶性,并且每种颜色至少有一个元素着色。
两组都是奇数或者偶数
奇数+奇数=偶数
偶数+偶数=偶数
奇数+偶数=奇数
只需判断数组中所有元素之和是否为奇数即可
void sovle()
{
ll i, n, t, cnt = 0;
cin >> n;
for(i = 0; i < n; i ++)
{
cin >> t;
if(t % 2)
cnt ++;
}
if(cnt % 2)
cout << "NO" << endl;
else
cout << "YES" << endl;
}
给定一个自然数x,进行四舍五入,输出最大的那个数,进位之后该位为0
3451 -> 3450 -> 3500 -> 4000 -> 0000
进位到第k位,k位后面的数都变为0
如果k为0,说明每位都能进位就全会变为0(如999 -> 000 -> 1000),首尾要+1, s = '1' + s
void sovle()
{
ll i, k, n, f = 0;
string s;
cin >> s;
n = s.size();
k = n;
for(i = n - 1; i >= 0; i --)
if(s[i] + f >= '5')
{
f = 1;
k = i;
}
else
{
s[i] += f;
f = 0;
}
for(i = k; i < n; i ++)
s[i] = '0';
if(f)
s = '1' + s;
cout << s << endl;
}
有 n 个整数 a1,a2,…,an现在用所有 ai,aj 的最小值构造出一个长度为的 b数组。
已知b数组求a数组
对b数组排序,b数组中有 n−1 个最小数,n−2 个第 二小数,……,1 个第二大数,0 个最大数。
void sovle()
{
ll i, n, m;
cin >> n;
m = n * (n - 1) / 2;
for(i = 1; i <= m; i ++)
cin >> a[i];
sort(a + 1, a + m + 1);
ll k = 1, j = n - 1;
for(i = 1; i < n; i ++)
{
cout << a[k] << ' ';
k += j;
j --;
}
cout << a[m] << endl;//重复输出一次最大的
}
给定a, b数组,当且仅当 au−av ≥ bu−bv 时 u,v 有连边。求出所有能到达所有点的点。
改写成 au−bu ≥ av−bv,找出ai - bi 的最大值的次数及在第几行出现
void sovle()
{
ll n, i;
cin >> n;
for(i = 1; i <= n; i ++)
cin >> a[i];
for(i = 1; i <= n; i ++)
{
cin >> b[i];
a[i] -= b[i];
b[i] = a[i];
}
sort(b + 1, b + n + 1);
ll maxx = b[n], cnt = 0;
for(i = 1; i <= n; i ++)
if(a[i] == maxx)
cnt ++;
cout << cnt << endl;
for(i = 1; i <= n; i ++)
if(a[i] == maxx)
cout << i << ' ';
cout << endl;
}