B Stealing Harry Potter's Precious

题目大意:给定一个n*m的地图,某些点可以走,某些点可以走某些点不可以走,给定一个起点,又给出了k个点k<=4,要求从起点经过K个点最短的长度是多少

思路:给每个点标定状态为[x][y][state],state是压缩状态的已经走过需要走过点的集合,然后bfs一下即可

 #include<cstdio>
#include<queue>
#include<cstring>
#define maxn 101
using namespace std;
const int dx[]={,,,,-};
const int dy[]={,,-,,};
int map[maxn][maxn],full,n,m,sx,sy,x,y,ma;
char ch[maxn];
struct T{int x;int y;int st;int dist;};
int cal(int x,int y){if(y<=)return x;return x|(<<(y-));}
bool visit[maxn][maxn][];
int bfs(int x,int y)
{
queue<T>q;T a;
a.x=x;a.y=y;a.st=cal(,map[x][y]);a.dist=;
visit[a.x][a.y][a.st]=;
q.push(a);
while(!q.empty())
{
T u=q.front();
q.pop();
for(int i=;i<=;i++)
{
int xx=u.x+dx[i],yy=u.y+dy[i];
if(xx<||xx>n||yy<||yy>m||map[xx][yy]==)continue;
T v;v.x=xx;v.y=yy;
v.st=cal(u.st,map[xx][yy]);
v.dist=u.dist+;
if(visit[v.x][v.y][v.st]==)continue;
visit[v.x][v.y][v.st]=;
if(v.st==full)
{
return v.dist;
}
q.push(v);
}
}
return -;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(visit,,sizeof(visit));
if(n== && m==)break;
for(int i=;i<=n;i++)
{
scanf("%s",ch+);
for(int j=;j<=m;j++)
{
if(ch[j]=='#')map[i][j]=;else map[i][j]=;
if(ch[j]=='@')sx=i,sy=j;
}
}
int k;
scanf("%d",&k);
full=(<<k)-;
for(int i=;i<=k;i++)
{
scanf("%d%d",&x,&y);
map[x][y]=i+;
}
printf("%d\n",bfs(sx,sy));
}
return ;
}

C - Zhuge Liang's Password

题目大意:给出两个矩阵,要求两个矩阵旋转之后的最大重合的数字个数

思路:直接模拟

 #include<cstdio>
#include<queue>
#include<cstring>
#define maxn 101
using namespace std;
int a[maxn][maxn],n,b[maxn][maxn];
void rot(){
int c[maxn][maxn]={{}};
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)c[i][j]=a[j][n-i+];
memcpy(a,c,sizeof(a));
}
int main()
{
while(scanf("%d",&n)!=EOF){
if(n==)break;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)scanf("%d",&a[i][j]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)scanf("%d",&b[i][j]);
int ans=;
for(int k=;k<=;k++){
int temp=;
rot();
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(a[i][j]==b[i][j])temp++;
ans=max(ans,temp);
}
printf("%d\n",ans);
}
return ;
}

2013 Asia acm Hangzhou Regional Contest 杭州现场赛的更多相关文章

  1. 2013杭州现场赛B题-Rabbit Kingdom

    杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...

  2. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  3. ACM总结——2017ACM-ICPC北京赛区现场赛总结

    现在距离比赛结束已经过了一个多星期了,也是终于有时间写下心得了.回来就是被压着做项目,也是够够的. 这次比赛一样是我和两个学弟(虽然是学弟,但我的实力才是最弱的T_T)一起参加的,成绩的话打铁,算是情 ...

  4. 2013 Asia Hangzhou Regional Contest

    Lights Against Dudely http://acm.hdu.edu.cn/showproblem.php?pid=4770 15个位置,所以可以暴力枚举那些放,对于放的再暴力枚举哪个转, ...

  5. HDU4771(2013 Asia Hangzhou Regional Contest )

    http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目大意: 给你一幅图(N*M)“@”是起点,"#"是墙,“.”是路,然后图上有K个珠 ...

  6. 2013 Asia Hangzhou Regional Contest hdu4780 Candy Factory

    参考:https://blog.csdn.net/sd_invol/article/details/15813671 要点 每个任务的结束时间是固定的,不受任何因素影响 机器只在最一开始有用,在那之后 ...

  7. 2012 Asia Hangzhou Regional Contest

    Friend Chains http://acm.hdu.edu.cn/showproblem.php?pid=4460 图的最远两点距离,任意选个点bfs,如果有不能到的点直接-1.然后对于所有距离 ...

  8. HDU 3685 Rotational Painting(多边形质心+凸包)(2010 Asia Hangzhou Regional Contest)

    Problem Description Josh Lyman is a gifted painter. One of his great works is a glass painting. He c ...

  9. HDU 3686 Traffic Real Time Query System(双连通分量缩点+LCA)(2010 Asia Hangzhou Regional Contest)

    Problem Description City C is really a nightmare of all drivers for its traffic jams. To solve the t ...

随机推荐

  1. 【NumPy学习指南】day4 多维数组的切片和索引

    ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1) 举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组 ...

  2. COGS 1710. [POJ2406]字符串的幂

    ★☆   输入文件:powerstrings.in   输出文件:powerstrings.out   简单对比时间限制:3 s   内存限制:256 MB [题目描述] 对于给定的两个字符串a,b, ...

  3. ubuntu 14.04 配置java 1.8环境变量

    从官网上下载jdk 源文件,并解压 root@hett-PowerEdge-T30:/usr/local/src# tar -xzvf jdk-8u151-linux-x64.tar.gz 解压完成之 ...

  4. PHP高端课程

    关于目后佐道IT教育 http://www.cnblogs.com/itpua/p/7710917.html 目后佐道IT教育的师资团队 http://www.cnblogs.com/itpua/p/ ...

  5. UVA1663 Purifying Machine (匈牙利算法,二分图最大匹配)

    模版集合个数减少是因为匹配串集合中没被匹配过的一对串匹配了.所以就是找一个二分图最大匹配. 因为集合X和Y是不好分开的,但是可以直接跑,两个集合都会跑一遍,所以一个匹配会被算两次,返回的时候除以2就行 ...

  6. UVA 11584 Partitioning by Palindromes 划分回文串 (Manacher算法)

    d[i]表示前面i个字符划分成的最小回文串个数, 转移:当第i字符加进来和前面区间j构成回文串,那么d[i] = d[j]+1. 要判断前面的字符j+1到i是不是回文串,可以用Manacher算法预处 ...

  7. 安装VC++6.0实验环境

    安装VC++6.0步骤:(1)下载一个压缩包进行解压(2)点击打开解压后的文件(3)找到文件里的程序进行安装(4)等待安装完成该程序后可以试着运行一下此程序,在此我们需要了解编写程序的步骤和注意事项. ...

  8. uaf-湖湘杯2016game_学习

    0x00 分析程序 根据分析,我们可以得到以下重要数据结构 0x01 发现漏洞 1.在武器使用次数耗光后,程序会把存储该武器的堆块free,在free的时候没有清空指针,造成悬挂指针 2.commen ...

  9. ueditor中FileUtils.getTempDirectory()找不到

    2014-6-27 14:22:25 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() fo ...

  10. MAC实现睡眠和休眠唤醒

    因为苹果默认为休眠文件加密,Clover 是无法解密的.所以需要经过一些设置才能破除这无节操的加密文件sleepimage.在这之前不得不提下EmuVariableUefi-64.efi 这个驱动.我 ...