A Display Size
求差最小的两个因数即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N;
cin >> N;
int i;
for (i = sqrt(N) ;i >= 1;i--) {
if (N % i == 0) break;
}
cout << i << " " << N / i << endl;
return 0;
}
B Mammoth’s Genome Decoding CodeForces
在给定序列中,问是否存在可能使得是否存在序列使得ACGT个数相同
思路 1. 判断长度是否为4的倍数 不是不可能 2. 记录各个基因的个数,若个数大于总长/4则不可能 3. 模拟填基因
#include <bits/stdc++.h>
using namespace std;
string gem;
int cnt[5];
char aph[10] = "?ACGT";
int main()
{
int N;
cin >> N >> gem;
memset ( cnt, 0, sizeof cnt );
if ( gem.size() % 4 != 0 ) {
cout << "===" << endl;
} else {
for ( int i = 0; i < gem.size() ; i++ ) {
if ( gem[i] == '?' ) {
cnt[0]++;
} else if ( gem[i] == 'A' ) {
cnt[1]++;
} else if ( gem[i] == 'C' ) {
cnt[2]++;
} else if ( gem[i] == 'G' ) {
cnt[3]++;
} else if ( gem[i] == 'T' ) {
cnt[4]++;
}
}
int ave = gem.size() / 4;
if ( cnt[1] > ave || cnt[2] > ave || cnt[3] > ave | cnt[4] > ave ) {
cout << "===" << endl;
} else {
string ans = gem;
for ( int i = 0; i < ans.size(); i++ ) {
if ( ans[i] == '?' ) {
for ( int k = 1; k <= 4; k++ ) {
if ( cnt[k] < ave ) {
ans[i] = aph[k];
cnt[k]++;
break;
}
}
}
}
cout << ans << endl;
}
}
return 0;
}
Servers CodeForces - 747C
模拟暴力题 贪心
instsk 记录工人可以开始工作的时间
每次判多少个工人有空
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100010;
struct Task { int t, k, d; };
Task tasks[MAX_N];
int N, q;
int intask[111];
int main() {
scanf ( "%d%d", &N, &q );
memset ( intask, 0, sizeof intask );
int left = N;
for ( int i = 0; i < q; i++ )
{
scanf ( "%d%d%d", &tasks[i].t, &tasks[i].k, &tasks[i].d );
}
for ( int i = 0; i < q; i++ ) {
int cnt = 0;
int sum = 0;
for ( int j = 1; j <= N; j++ ) {
if ( cnt >= tasks[i].k ) {
break;
}
if ( intask[j] < tasks[i].t ) {
cnt++; }
}
if ( cnt >= tasks[i].k ) {
cnt = 0;
for ( int j = 1; j <= N; j++ ) {
if ( cnt >= tasks[i].k ) {
break;
}
if ( intask[j] < tasks[i].t ) {
cnt++;
intask[j] = tasks[i].t + tasks[i].d - 1;
sum += j; } } printf ( "%d\n", sum );
} else {
printf ( "-1\n" );
}
}
return 0;
}