114人阅读 评论(0)

# A题

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,ans;
string s[1001];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
cin>>s[i];
}
for(int i=1;i<=n;i++){
if(s[i][0]=='O'&&s[i][1]=='O'){
cout<<"YES"<<endl;
s[i][0]='+';
s[i][1]='+';
for(int i=1;i<=n;i++){
cout<<s[i]<<endl;
}
return 0;
}
if(s[i][3]=='O'&&s[i][4]=='O'){
cout<<"YES"<<endl;
s[i][3]='+';
s[i][4]='+';
for(int i=1;i<=n;i++){
cout<<s[i]<<endl;
}
return 0;
}
}
cout<<"NO";
return 0;
} 

# B题

#include <cstdio>
#include <cmath>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <climits>

#ifdef DEBUG
#include <cassert>
#include <cstdarg>
#endif

#include <iostream>
#include <algorithm>
#include <utility>

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>

#include <ext/pb_ds/priority_queue.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/algorithm>
#include <ext/rope>

#define REP(i,n) for(i=0;i<(n);i++)
#define REP_B(i,n) for(i=1;i<=(n);i++)
#define CUS_REP(i,a,b) for(i=(a);i<(b);i++)
#define CUS_REP_B(i,a,b) for(i=(a);i<=(b);i++)
#define GRAPH_REP(i,u) for(i=first[u];i;i=next[i])
#ifdef DEBUG
#define PNT_DEBUG(...) fprintf(stderr,__VA_ARGS__)
#endif
const int maxn=501;
long long A[maxn][maxn];
inline bool check(int n){
long long sum,last_sum;
last_sum=0;
register int i,j;
for(i=1;i<=n;i++)
last_sum+=A[1][i];
for(i=2;i<=n;i++){
sum=0;
for(j=1;j<=n;j++)
sum+=A[i][j];
if(sum!=last_sum)
return false;
last_sum=sum;
}
for(i=1;i<=n;i++){
sum=0;
for(j=1;j<=n;j++)
sum+=A[j][i];
if(sum!=last_sum)
return false;
last_sum=sum;
}
sum=0;
for(i=1;i<=n;i++){
sum+=A[i][i];
}
if(sum!=last_sum)
return false;
sum=0;
for(i=n;i>=1;i--)
sum+=A[i][n-i+1];
if(sum!=last_sum)
return false;
return true;
}
int main(){
int n;
register int i,j,a,b;
long long t1,t2;
scanf("%d",&n);
REP_B(i,n){
REP_B(j,n){
scanf("%I64d",&A[i][j]);
if(A[i][j]==0){
a=i;
b=j;
}
}
}
long long x;
t1=0;t2=0;
if(n==1){
puts("1");
return 0;
}
if(a==1){
for(i=1;i<=n;i++){
t1+=A[2][i];
t2+=A[1][i];
}
x=t1-t2;
A[a][b]=x;
if(check(n) && x>=1){
printf("%I64d\n",x);
}else{
puts("-1");
}
}else{
for(i=1;i<=n;i++){
t1+=A[a-1][i];
t2+=A[a][i];
}
x=t1-t2;
A[a][b]=x;
if(check(n) && x>=1){
printf("%I64d\n",x);
}else{
puts("-1");
}
}
return 0;
}

# C题

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define inf 999999999999
using namespace std;
int n,m,k,a[101];
long long ans=0;
long long cl[101][101],f[105][105][105];
int x,y;
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%I64d",&cl[i][j]);
}
}
if(n==1){
if(k==1){
if(a[1]==0){
long long sx=inf;
for(int i=1;i<=m;i++){
sx=min(sx,cl[1][i]);
}
printf("%I64d",sx);
return 0;
}else{
printf("0");
return 0;
}
}else{
printf("-1");
return 0;
}
}
int l=88888;
for(int i=1;i<=n;i++){
if(a[i]==0){
l=i;
break;
}
}
if(l==88888){
ans=1;
for(int i=2;i<=n;i++){
if(a[i]!=a[i-1])ans++;
}
if(ans==k){
printf("0");
return 0;
}
printf("-1");
return 0;
}
for(int i=0;i<=102;i++){
for(int j=0;j<=102;j++){
for(int k=0;k<=102;k++){
f[i][j][k]=inf;
}
}
}
if(a[1]==0){
for(int i=1;i<=m;i++){
f[1][i][1]=cl[1][i];
}
}else{
f[1][a[1]][1]=0;
}
for(int i=2;i<=n;i++){
if(a[i]==0){
for(int j=1;j<=m;j++){
for(int k=1;k<=i;k++){
long long cur=inf;
for(int l=1;l<=m;l++){
if(l!=j)
cur=min(cur,f[i-1][l][k-1]);
}
f[i][j][k]=min(f[i][j][k],cur+cl[i][j]);
f[i][j][k]=min(f[i][j][k],f[i-1][j][k]+cl[i][j]);

}
}
}else{
for(int k=1;k<=i;k++){
long long cur=inf;
for(int l=1;l<=m;l++){
if(l!=a[i])
cur=min(cur,f[i-1][l][k-1]);
}
f[i][a[i]][k]=min(f[i][a[i]][k],cur);
f[i][a[i]][k]=min(f[i][a[i]][k],f[i-1][a[i]][k]);
}

}
}
ans=inf;
for(int i=1;i<=m;i++){
ans=min(ans,f[n][i][k]);
}
if(ans==inf){
printf("-1");
return 0;
}
printf("%I64d",ans);
return 0;
} 
0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：4308次
• 积分：403
• 等级：
• 排名：千里之外
• 原创：38篇
• 转载：0篇
• 译文：0篇
• 评论：6条
文章分类
神犇的blog
阅读排行