Codeforces Round #375 (Div. 2)【A,B【模拟】,D【DFS】】
PS_B:阿洗吧!B题卧槽数组开了250...
PS_D:D题主要挂在了50*50口算得了250,数组开小,然后一开始还错了。= =哎,以后对于数据范围还是注意一点;
卧槽,这场可真二百五了。。。
A题:
水~
#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=1010;
int sum;
int ans=N;
int a,b,c;
int n,m;
void solve()
{
for(int i=1;i<=100;i++)
ans=min(ans,abs(i-a)+abs(i-b)+abs(i-c));
}
int main()
{
scanf("%d%d%d",&a,&b,&c);
solve();
printf("%d\n",ans);
return 0;
}
B题:
就是外面的模拟一下,里面还是不排除重复,直接搞搞就好了;
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=300; struct asd{
char s[N];
};
asd out[N];
asd in[N];
int num1,num2; char s[N];
char tmp[N]; bool Judge(char c)
{
if(c>='a'&&c<='z')
return 1;
if(c>='A'&&c<='Z')
return 1;
return 0;
}
int main()
{
int n;
scanf("%d%s",&n,s);
int flag=0;
num1=num2=0;
int num=0;
for(int i=0;i<n;i++)
{
if(Judge(s[i]))
{
tmp[num++]=s[i];
}
else
{
if(num)
{
tmp[num]='\0';
if(flag)
strcpy(in[num1++].s,tmp);
else
strcpy(out[num2++].s,tmp);
num=0;
}
if(s[i]=='(')
flag=1;
if(s[i]==')')
flag=0;
}
}
if(num)
{
tmp[num]='\0';
if(flag)
strcpy(in[num1++].s,tmp);
else
strcpy(out[num2++].s,tmp);
}
int temp=strlen(out[0].s);
for(int i=1;i<num2;i++)
{
int x=strlen(out[i].s);
temp=max(x,temp);
}
printf("%d %d",temp,num1);
return 0;
}
D题:
题意:
给你一副图,“*”不能走,“.”称为水,水连通了被"*"围住就成了湖,水没有连通流向了边界就称为海,然后给你k,要求填满最少数量的水构造一个只有k个湖,
思路;
先四周搜一下,标记掉海;
然后搜里面,用个num标记所有的湖的名称,然后搞出个数,排个序
填了[num-k]个湖就好了;
#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=55;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
char s[N][N];
int ma[N][N];
int n,m,k; void dfs_hu(int x,int y,int num)
{
ma[x][y]=num;
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||yy<0||xx>=n||yy>=m)
continue;
if(s[xx][yy]=='.'&&ma[xx][yy]==0)
{
dfs_hu(xx,yy,num);
}
}
}
void dfs_hai(int x,int y)
{
ma[x][y]=-1;
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||yy<0||xx>=n||yy>=m)
continue;
if(s[xx][yy]=='.'&&ma[xx][yy]==0)
{
dfs_hai(xx,yy);
}
}
} void gaohai()
{
for(int i=0;i<n;i++)
{
if(s[i][0]=='.'&&ma[i][0]==0)
{
ma[i][0]==-1;
dfs_hai(i,0);
}
}
for(int i=0;i<n;i++)
{
if(s[i][m-1]=='.'&&ma[i][m-1]==0)
{
ma[i][m-1]==-1;
dfs_hai(i,m-1);
}
}
for(int i=0;i<m;i++)
{
if(s[0][i]=='.'&&ma[0][i]==0)
{
ma[0][i]=-1;
dfs_hai(0,i);
}
}
for(int i=0;i<m;i++)
{
if(s[n-1][i]=='.'&&ma[n-1][i]==0)
{
ma[n-1][i]=-1;
dfs_hai(n-1,i);
}
}
}
struct asd{
int id;
int w;
};
asd q[3000];
bool cmp(asd x,asd y)
{
return x.w<y.w;
} void debug()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf("%2d",ma[i][j]);
puts("");
}
} int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;i++)
scanf("%s",s[i]);
memset(ma,0,sizeof(ma));
gaohai(); int num=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]=='.'&&ma[i][j]==0)
{
num++;
ma[i][j]=num;
dfs_hu(i,j,num);
}
}
}
int pp[3000];
memset(pp,0,sizeof(pp));
int vis[3000];
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(ma[i][j]==-1||!ma[i][j])
continue;
pp[ma[i][j]]++;
}
}
for(int i=1;i<=num;i++)
{
q[i].w=pp[i];
q[i].id=i;
}
int ans=0;
sort(q+1,q+num+1,cmp);
for(int i=1;i<=num-k;i++)
{
ans+=q[i].w;
vis[q[i].id]=1;
}
printf("%d\n",ans);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(vis[ma[i][j]])
{
printf("*");
}
else
printf("%c",s[i][j]);
}
puts("");
}
return 0;
}
Codeforces Round #375 (Div. 2)【A,B【模拟】,D【DFS】】的更多相关文章
- Codeforces Round #375 (Div. 2) D. Lakes in Berland dfs
D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #610 (Div. 2)E(模拟,DFS)
先找到一条多边形的边,然后循环一圈输出多边形上的点.把每个三角形看作一个结点,以两个三角形之间公用边为边建立一张图,DFS输出叶子结点,则得到先切后切的顺序. #define HAVE_STRUCT_ ...
- Codeforces Round #375 (Div. 2) B. Text Document Analysis 模拟
B. Text Document Analysis 题目连接: http://codeforces.com/contest/723/problem/B Description Modern text ...
- Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心
A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces Round #375 (Div. 2) Polycarp at the Radio 优先队列模拟题 + 贪心
http://codeforces.com/contest/723/problem/C 题目是给出一个序列 a[i]表示第i个歌曲是第a[i]个人演唱,现在选出前m个人,记b[j]表示第j个人演唱歌曲 ...
- Codeforces Round #375 (Div. 2) - B
题目链接:http://codeforces.com/contest/723/problem/B 题意:给定一个字符串.只包含_,大小写字母,左右括号(保证不会出现括号里面套括号的情况),_分隔开单词 ...
- Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
A. Combination Lock time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...
- Codeforces Round #345 (Div. 2)【A.模拟,B,暴力,C,STL,容斥原理】
A. Joysticks time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...
- Codeforces Round #543 (Div. 2) D 双指针 + 模拟
https://codeforces.com/contest/1121/problem/D 题意 给你一个m(<=5e5)个数的序列,选择删除某些数,使得剩下的数按每组k个数以此分成n组(n*k ...
随机推荐
- python中if __name__ == '__main__': 的解析(转载)
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- static 静态域 类域 静态方法 工厂方法 he use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class 非访问修饰符
总结: 1.无论一个类实例化多少对象,它的静态变量只有一份拷贝: 静态域属于类,而非由类构造的实例化的对象,所有类的实例对象共享静态域. class Employee { private static ...
- Java Message Service
en.wikipedia.org/wiki/Java_Message_Service Messaging is a form of loosely coupled distributed commun ...
- bluebird-api简介及demo
var Promise = require("bluebird"); var fs = require("fs"); //方法Promise化 var read ...
- intelliJ IDEA springMVC 搭建配置
1.添加参数 archetypeCatalog=internal
- 分词系统简介:PHPAnalysis分词程序
分词系统简介:PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便. 由于PHPAnalysis是无组件的系统,因此速度 ...
- Android Studio 模拟器无法打开 emulator: ERROR: x86 emulation currently requires hardware
首先要打开SDK的下载位置,找到以下陌路: android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe ...
- git命令行删除远程分支
先查看远程分支 git branch -r 使用下面两条命令来删除远程分支 git branch -r -d origin/branch-name git push origin :branch-na ...
- Eclipse快捷键【转载】
分享一前辈的博客-Eclipse快捷键
- js正则表达式,密码长度要大于6位,由数字和字母组成
var pwd = $("#pwd").val(); var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$/; if(!reg ...