A题  直接把问号全部变为陆地如果所有陆地连通    那么再逐个把刚才变成陆地的问号变为水如果依旧连通有多种解

为什么我的代码跑不过去,和网上的题解思路一模一样!!??

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#define MAX_N 55
using namespace std;
char map[MAX_N][MAX_N];
int n,m;
int cnt_s;
int cnt_p;
int cnt;
int dx[]={,,-,};
int dy[]={,,,-};
bool vis[MAX_N][MAX_N];
void dfs(int sx,int sy)
{
vis[sx][sy]=true;
for(int i=;i<;i++)
{
int tx=sx+dx[i];
int ty=sy+dy[i];
if(tx>=&&tx<n&&ty>=&&ty<m&&map[tx][ty]!='#'&&!vis[tx][ty])
{
cnt++;
if(map[tx][ty]=='?')
map[tx][ty]='*';//标记走过的?
vis[tx][ty]=true;
dfs(tx,ty);
}
}
return ;
}
int main(void)
{
while(scanf("%d%d",&n,&m)==)
{
cnt_p=;
int sx,sy;
for(int i=;i<n;i++)
scanf("%s",map[i]);
memset(vis,false,sizeof(vis));
int k=;//k块陆地
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(map[i][j]=='.'&&!vis[i][j])
{
k++;
cnt=;
dfs(i,j);
sx=i;
sy=j;
}
}
}
if(k>)
{
printf("Impossible\n");
continue;
}
cnt_s=cnt;
bool ok=false;
for(int i=;i<n&&!ok;i++)
{
for(int j=;j<m&&!ok;j++)
{
cnt=;
if(map[i][j]=='*')
{
memset(vis,false,sizeof(vis));
map[i][j]='#';
dfs(sx,sy);
if(cnt==cnt_s-)
ok=true;
map[i][j]='.';
}
}
}
if(ok)
printf("Ambiguous\n");
else
{
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(map[i][j]=='.')
printf(".");
else
printf("#");
}
printf("\n");
}
}
}
return ;
}

B题  判断有几个点在原位置上  偶数个直接两两互换,奇数个前三个互换 后面两两互换,特判只有一个的时候

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= ;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int a[maxn],b[maxn];
int n;
int main()
{
while(cin>>n)
{
int cnt=;
for(int i=;i<=n;i++)
{
cin>>a[i];
if(a[i]==i)
b[cnt++]=a[i];
}
if(cnt==)
cout<<<<endl;
else if(cnt==)
{
cout<<cnt<<endl;
if(b[]-==)
cout<<b[]<<" "<<b[]+<<endl;
else
cout<<b[]<<" "<<b[]-<<endl;
}
else
if(cnt%==)
{
cout<<cnt/<<endl;
for(int i=;i<cnt;i=i+)
cout<<b[i]<<" "<<b[i-]<<endl;
}
else
{
cout<<(cnt-)/+<<endl;
for(int i=;i<=;i++)
cout<<b[i]<<" "<<b[]<<endl;
for(int i=;i<cnt;i=i+)
{
cout<<b[i]<<" "<<b[i+]<<endl;
}
}
}
}

C题 大于最大差小于最小和

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= ;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int a[maxn],b[maxn];
int n;
int main()
{
while(cin>>n)
{
for(int i=;i<=n;i++)
cin>>a[i];
sort(a+,a+n+);
int x=a[]+a[];
int y=a[n]-a[];
if(x-y>=)
cout<<"YES"<<endl<<y+<<endl;
else
cout<<"NO"<<endl;
}
}

F题 直接列出方程来  解二元一次方程  精度问题真的头疼。。为什么我的代码就不对 贴一个大佬二分写的

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn = 2e5+;
const int maxm = 1e4+;
const int inf = 0x3f3f3f3f;
const double epx = 1e-;
typedef long long ll;
int n;
int xx1,yy1,xx2,yy2;
int vxx1,vyy1,vxx2,vyy2;
double solve(double t)
{
int A=xx1-xx2;
int A1=vxx1-vxx2;
int B=yy1-yy2;
int B1=vyy1-vyy2;
return (A+A1*t)*(A+A1*t)+(B+B1*t)*(B+B1*t);
}
int main()
{
while(scanf("%d %d %d %d",&xx1,&yy1,&xx2,&yy2)!=EOF)
{
scanf("%d %d %d %d",&vxx1,&vyy1,&vxx2,&vyy2);
double ans=;
double l=,r=1e6;
while(r-l>epx)
{
double mid=(l+r)/;
double midmid=(mid+r)/;
if(solve(mid)<=solve(midmid))
r=midmid;
else
l=mid;
}
ans=sqrt(solve((l+r)/));
printf("%.10f\n",ans);
}
}

G题 八种情况直接暴力模拟

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= ;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int a[maxn],b[maxn];
int n,m;
int main()
{
while(cin>>n>>m)
{
int x,y;
int x1,y1;
cin>>x>>y>>x1>>y1;
int flag=;
if((x>n&&x>m)||(y>n&&y>m)||(x1>n&&x1>m)||(y1>n&&y1>m))
flag=;
else if((x+x1<=n&&max(y,y1)<=m)||(x+y1<=n&&max(x1,y)<=m)||(y+x1<=n&&max(x,y1)<=m)||(y+y1<=n&&max(x,x1)<=m)||(x+x1<=m&&max(y,y1)<=n)||(x+y1<=m&&max(x1,y)<=n)||(y+x1<=m&&max(x,y1)<=n)||(y+y1<=m&&max(x,x1)<=n))
flag=;
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}

K题 回文串 两种情况两边开始比较第一次遇到不同的  删右边或者删左边  删完之后若还有不同行不通   一边成立就YES 两边都不成立NO

我想的有点多写麻烦了 贴的队友的代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e6+;
char a[N];
int main()
{
while(~scanf("%s",a))
{
int len=strlen(a);
int flag1=,flag2=;
int num=,num1=,num2=;
for(int i=; i<len/; i++)
{
if(a[i]==a[len--i])num++;
else
{
flag1=i;
flag2=len--i;
break;
}
}
//cout<<flag1<<" "<<flag2<<endl;
for(int i=flag1+; i<=len/; i++)
{
if(a[i]!=a[len--i+])
{
num1++;
break;
}
}
for(int i=flag1; i<len/; i++)
{
if(a[i]!=a[len--i-])
{
num2++;
break;
}
}
//cout<<num<<" "<<num1<<" "<<num2<<endl;
if(num==len/)
{
printf("YES\n%d\n",len/+);
}
else if(num1==)
{
printf("YES\n");
printf("%d\n",flag1+);
}
else if(num2==)
{
printf("YES\n");
printf("%d\n",flag2+);
}
else printf("NO\n");
}
return ;
}

L题   分别算出两支队在比赛中最多赢得场次 从而判断能不能获胜(大于n/2)

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= 2e5+;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int n;
int a[maxn],b[maxn];
int main()
{
while(cin>>n)
{
for(int i=;i<=n;i++)
cin>>a[i];
for(int i=;i<=n;i++)
cin>>b[i];
sort(a+,a+n+);
sort(b+,b+n+);
int maxa=,maxb=,mina,minb,p=;
for(int i=,j=;i<=n;)
{
if(a[i]>b[j])
{
maxa++;
i++;
j++;
}
else
{
i++;
}
}
minb=n-maxa;
for(int i=,j=;i<=n;)
{
if(b[i]>a[j])
{
maxb++;
i++;
j++;
}
else
{
i++;
}
}
mina=n-maxb;
// cout<<maxa<<" "<<mina<<endl;
// cout<<maxb<<" "<<minb<<endl;
if(maxa>n/)
{
if(maxb>n/)
printf("Both\n");
else
printf("First\n");
}
else
{
if(maxb>n/)
printf("Second\n");
else
printf("None\n");
}
}
}

codeforces Gym 100971 A、B、C、F、G、K、L的更多相关文章

  1. codeforces gym 100971 K Palindromization 思路

    题目链接:http://codeforces.com/gym/100971/problem/K K. Palindromization time limit per test 2.0 s memory ...

  2. Codeforces gym 100971 D. Laying Cables 单调栈

    D. Laying Cables time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  3. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

  4. CodeForces Gym 100213F Counterfeit Money

    CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...

  5. Codeforces GYM 100876 J - Buying roads 题解

    Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...

  6. iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇

    完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MV ...

  7. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文

    综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...

  8. 编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]

    前言 自从.NET出现后,关于CLR异常机制的讨论就几乎从未停止过.迄今为止,CLR异常机制让人关注最多的一点就是“效率”问题.其实,这里存在认识上的误区,因为正常控制流程下的代码运行并不会出现问题, ...

  9. 评估指标:准确率(Precision)、召回率(Recall)以及F值(F-Measure)

    为了能够更好的评价IR系统的性能,IR有一套完整的评价体系,通过评价体系可以了解不同信息系统的优劣,不同检索模型的特点,不同因素对信息检索的影响,从而对信息检索进一步优化. 由于IR的目标是在较短时间 ...

随机推荐

  1. TC609 DIV1 (500)

    Problem Statement      We have balls of K different colors. The colors are numbered 0 through K-1, a ...

  2. AngularJS ng-repeat下使用ng-model

    1 2 3 blue:<input type="radio" value="1" ng-model="selectValue"/> ...

  3. [转]无废话SharePoint入门教程一[SharePoint概述]

    本文转自:http://www.cnblogs.com/iamlilinfeng/p/3026332.html 一.前言 听说SharePoint也有一段时间了,可一直处在门外.最近被调到ShareP ...

  4. JDBC基础学习

    1.概念:java数据库连接技术 2.JDBC:是一个规范,提供接口(面向接口编程) 3.JDBC API:提供程序员调用的接口和类,集成在java.sql 和javax.sql包中.如:Driver ...

  5. WinForm 对话框,流

    private void button1_Click(object sender, EventArgs e) { //显示颜色选择器 colorDialog1.ShowDialog(); //把取到的 ...

  6. mvc框架 与vuex的介绍

    应用级的状态集中放在store中: 改变状态的方式是提交mutations,这是个同步的事物: 异步逻辑应该封装在action中. const vuex_store = new Vuex.store( ...

  7. C++模版完全解析

    模版 模版在C++中是一个很重要的概练,生活中的模版也是随处可见,比如制造工程师会 哪一个模子去构造出一个一个的工件,C++程序员能够用模版去实例化y有相同操作 不同类型的函数或者数据结构.简单的理解 ...

  8. (转)淘淘商城系列——使用maven tomcat插件启动web工程

    http://blog.csdn.net/yerenyuan_pku/article/details/72672138 上文我们一起学习了怎样搭建maven工程,这篇文章我就来教大家一起学习怎样用to ...

  9. linux 配置Java、Mysql、Tomcat、Redis开发环境

    1.安装四个依赖 以下四个依赖必须按顺序联网安装:yum install glibc.i686yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so ...

  10. 机器学习_决策树Python代码详解

    决策树优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据: 决策树缺点:可能会产生过度匹配问题. 决策树的一般步骤: (1)代码中def 1,计算给定数据集的香农熵: ...