# 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;
} 

• 本文已收录于以下专栏：

## Codeforces Round #369 (Div. 2) D. Directed Roads （dfs+组合数学 图论）

• guhaiteng
• 2016年08月30日 19:06
• 374

## Educational Codeforces Round 27

A 题意：把2 * n个人分成两组，使得无论两组的人怎么进行比赛 第一组的人始终都要保持全赢，如果两个人能力值相等两人都可以赢 思路：排序后只要保证n + 1个人的能力值大于第n个人的能力值即可 #i...
• sasuke__
• 2017年08月23日 10:35
• 202

## Codeforces Round #395 (Div. 2)(ABCD)

ps:打完这场cf才知道自己真的很菜，还是停留在AB题的水平，有时候CD其实很简单，但就是想不到，别人一眼看出而我就是想不到，有时候想到了点子上但就是突破不了 题目链接：  Codeforc...
• qq_34731703
• 2017年02月03日 12:50
• 501

## Codeforces Round #258 (Div. 2)-(A,B,C,D,E)

A:Game With Sticks 水题。。。每次操作，都会拿走一个横行，一个竖行。 所以一共会操作min（横行，竖行）次。 #include #include #include #include ...
• rowanhaoa
• 2014年07月25日 14:39
• 1484

## 【解题报告】Codeforces Round #401 (Div. 2)

• TRiddle
• 2017年02月25日 17:55
• 415

## Codeforces Round #374 (Div. 2) 终场翻盘记

• lych_cys
• 2016年10月01日 09:48
• 734

## Codeforces Round #460 (Div. 2)题目题解

A.Supermarket (水题) #include #include #include #include #include using namespace std; int mai...
• wyxeainn
• 2018年01月31日 23:17
• 81

## Codeforces Round #444 (Div. 2)-贪心&尺取-Ratings and Reality Shows

http://codeforces.com/contest/887/problem/D 一个模特有两种活动。 ① 拍照片，挣钱 a。 ②开演唱会，花费b 给定模特这两种工作的时间表。 模特可以...
• qq_35781950
• 2017年11月11日 20:11
• 130

## Codeforces Round #427 (Div. 2) A B C D

A. Key races time limit per test 1 second memory limit per test 256 megabytes input standard i...
• sinat_35406909
• 2017年08月01日 02:03
• 699

## Codeforces Round #455 (Div. 2)-A，B，C，D，E

http://codeforces.com/contest/909 差F题了，有机会再补吧。F是思维题。 断断续续补了好久。。 比赛就做了A，B 。 A 给你两个名字，要求一个名字由这两个的...
• qq_35781950
• 2018年01月08日 18:42
• 47

举报原因： 您举报文章：Codeforces Round #369 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)