ADesign Tutorial: Learn from Math
素数筛
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 100;
int a[N]={0};
int main(){
int n;
cin >> n;
a[1] = 1;
for(int i = 2; i*i <= n; i++){
if(a[i] == 0){
for(int j = i*i; j <= n; j += i){
a[j] = 1;
}
}
}
for(int i = 2; i <= n; i++){
if(a[i] && a[n-i]){
cout << i << " " << n - i <<"\n";
return 0;
}
}
return 0;
}
BDesign Tutorial: Learn from Life
贪心,从大到小,一次取k个,统计每次的楼层最高
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3;
int n, k;
int a[N];
int main(){
cin >> n >> k;
for(int i = 0; i < n; i++){
cin >> a[i];
}
sort(a, a + n);
int sum = 0;
for(int i = n-1; i >= 0 ; i-=k){
sum += (a[i] - 1) * 2;
}
cout << sum << "\n";
return 0;
}
CDesign Tutorial: Make It Nondeterministic
模拟
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
int n;
char s1[N][60];
char s2[N][60];
int a[N];
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> s1[i] >> s2[i];
}
for(int i = 0; i < n; i++){
cin >> a[i];
}
int p=3;//可以选任意一个为handle
for(int i = 0; i < n-1; i++){
bool b1=strcmp(s1[a[i]], s1[a[i+1]]) == -1;
bool b2=strcmp(s2[a[i]], s1[a[i+1]]) == -1;
bool b3=strcmp(s1[a[i]], s2[a[i+1]]) == -1;
bool b4=strcmp(s2[a[i]], s2[a[i+1]]) == -1;
if(p==3){
if((b1|| b2) && (b3 || b4));
else if(b1 || b2)
p=1;//只能选第一个为handle
else if(b3 || b4)
p=2;//只能选第二个为handle
else{
cout<< "NO\n";
return 0;
}
}
else if(p == 2){
if(b2 && b4)
p=3;
else if(b2)
p=1;
else if(b4)
p=2;
else{
cout<< "NO\n";
return 0;
}
}
else if( p== 1){
if(b1 && b3)
p=3;
else if(b1)
p=1;
else if(b3)
p=2;
else{
cout<< "NO\n";
return 0;
}
}
}
cout << "YES\n";
return 0;
}