点击查看题目
A
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstring>
#include <stack>
#include <set>
#include <map>
#include <vector>
using namespace std;
#define INF 0x4fffffff
#define LL long long
#define MAX(a,b) ((a)>(b))?(a):(b)
#define MIN(a,b) ((a)<(b))?(a):(b)
int n;
int a[10000];
int main(){
cin >> n;
int ma = 0;
for(int i = 0;i < n;i++){
scanf("%d",&a[i]);
}
int ans = a[0];
for(;1;ans ++){
int cc = 0;
for(int i = 1;i < n;i++){
if(a[i] >= ans){
cc += a[i] - ans + 1;
}
}
if(a[0] + cc <= ans){
cout << ans - a[0] << endl;
break;
}
}
return 0;
}
B
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstring>
#include <stack>
#include <set>
#include <map>
#include <vector>
using namespace std;
#define INF 0x4fffffff
#define LL long long
#define MAX(a,b) ((a)>(b))?(a):(b)
#define MIN(a,b) ((a)<(b))?(a):(b)
int ma[4005][4005];
int d[4005];
int ed[4005][2];
int main(){
int t;
int n,m;
cin >>n >> m;
for(int i = 0;i < m;i++){
int x,y;
scanf("%d%d",&x,&y);
ma[x][y] = 1;
ma[y][x] = 1;
d[x]++;
d[y]++;
if(x < y){
ed[i][0] = x;
ed[i][1] = y;
}
else{
ed[i][0] = y;
ed[i][1] = x;
}
}
int ans = INF;
for(int i = 0;i < m;i++){
for(int j = 0;j < m;j++){
if(i!=j){
if(ed[i][0] == ed[j][0]){
if(ma[ed[i][1]][ed[j][1]]){
ans = min(ans,d[ed[i][0]]+d[ed[i][1]]+d[ed[j][1]] - 6);
}
}
if(ed[i][1] == ed[j][1]){
if(ma[ed[i][0]][ed[j][0]]){
ans = min(ans,d[ed[i][0]]+d[ed[j][0]]+d[ed[i][1]]-6);
}
}
}
}
}
if(ans == INF){
printf("-1\n");
}
else{
printf("%d\n",ans);
}
return 0;
}
C
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstring>
#include <stack>
#include <set>
#include <map>
#include <vector>
using namespace std;
#define INF 0x4fffffff
#define LL long long
#define MAX(a,b) ((a)>(b))?(a):(b)
#define MIN(a,b) ((a)<(b))?(a):(b)
int a;
int fun(int t){
while(t%2 == 0){
t /= 2;
}
while(t%3 == 0){
t/=3;
}
return t;
}
int main(){
int n;
cin >> n;
int di;
int flag = 1;
for(int i = 0;i < n;i++){
scanf("%d",&a);
if(i == 0)
di = fun(a);
else{
if(di != fun(a)){
flag = 0;
}
}
}
if(flag){
printf("Yes\n");
}
else{
printf("No\n");
}
return 0;
}
D
#include <cstdio>
#include <iostream>
using namespace std;
int a[100005];
int l[100005];
int r[100005];
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++){
scanf("%d",&a[i]);
}
for(int i = 1;i <= n;i++){
l[i] = min(l[i-1]+1,a[i]);
}
for(int i = n;i >= 1;i--){
r[i] = min(r[i+1]+1,a[i]);
}
int ma = 0;
for(int i = 1;i <= n;i++){
ma = max(ma,min(l[i],r[i]));
}
cout << ma << endl;
}