【NOIP2016A组模拟7.13】亚瑟王之宫
题目
分析
我们定义\(dis_{x,y,x1,y2}\)表示\((x,y)\)到\((x1,y1)\)的距离。这个用spfa求。
接着,枚举两个集合点\((x,y)、(x1,y1)\), 得出这两个集合点到骑士的距离,放入\(dis1\)和\(dis2\)。
然后考虑贪心,
假设全选\(dis1\),和为\(sum\)。把\(dis2-dis1\)从小到大排个序,把前\(\dfrac{n}{2}\)的值加到\(sum\),答案就是\(\min(sum)\)
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=205;
using namespace std;
int dis[21][21][21][21],a[N],n,m,r,c,ans=maxlongint,b[N][2],d[N*100][4],tot;
int z[8][2]=
{
{2,1},
{2,-1},
{-2,1},
{-2,-1},
{1,2},
{1,-2},
{-1,-2},
{-1,2}
};
bool bz[21][21];
int spfa(int x,int y)
{
int head=0,tail=1,xx,yy;
d[1][1]=x;
d[1][2]=y;
dis[x][y][x][y]=0;
while(head<tail)
{
xx=d[++head][1];
yy=d[head][2];
bz[xx][yy]=true;
for(int i=0;i<=7;i++)
{
if(dis[x][y][xx+z[i][0]][yy+z[i][1]]>dis[x][y][xx][yy]+1)
{
dis[x][y][xx+z[i][0]][yy+z[i][1]]=dis[x][y][xx][yy]+1;
if(bz[xx+z[i][0]][yy+z[i][1]])
{
bz[xx+z[i][0]][yy+z[i][1]]=false;
d[++tail][1]=xx+z[i][0];
d[tail][2]=yy+z[i][1];
}
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&r,&c);
for(int i=1;i<=n;i++)
for(int j=0;j<=1;j++)
scanf("%d",&b[i][j]);
memset(dis,43,sizeof(dis));
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
memset(bz,true,sizeof(bz));
spfa(i,j);
}
for(int x=1;x<=r;x++)
for(int y=1;y<=c;y++)
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=dis[x][y][b[i][0]][b[i][1]];
}
int o=sum;
for(int xx=1;xx<=r;xx++)
for(int yy=1;yy<=c;yy++)
if(x!=xx || y!=yy)
{
sum=o;
tot=0;
for(int i=1;i<=n;i++)
{
a[++tot]=dis[xx][yy][b[i][0]][b[i][1]]-dis[x][y][b[i][0]][b[i][1]];
}
sort(a+1,a+tot+1);
for(int i=1;i<=n/2;i++)
{
sum+=a[i];
}
if(sum<ans)
ans=sum;
}
}
printf("%d",ans);
}
【NOIP2016A组模拟7.13】亚瑟王之宫的更多相关文章
- NOIP2017提高组 模拟赛13(总结)
NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...
- [JZOJ100043] 【NOIP2017提高A组模拟7.13】第K小数
Description 有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少. Input 输入文件包含三行. 第一行为 ...
- JZOJ100045 【NOIP2017提高A组模拟7.13】好数
题目 题目大意 首先有一个定义: 对于一个数,如果和它互质的数可以组成一个等差数列,那么这个数叫"好数". 现在给你一个数列,有三种操作: 1.询问一段区间内的好数的个数. 2.将 ...
- Bzoj4008 [HNOI2015]亚瑟王
Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1009 Solved: 605[Submit][Status] ...
- 【BZOJ4008】[HNOI2015]亚瑟王 期望
[BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- BZOJ 4008: [HNOI2015]亚瑟王( dp )
dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...
- [HNOI 2015]亚瑟王
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
随机推荐
- Microsoft.Office.Interop.Excel Find 操作
public void SearchLoactions(string filepath, int start, int end ,string expectvalue) { if (end >= ...
- C# DES 加解密
using System; using System.Text; using System.Security.Cryptography; using System.Diagnostics; using ...
- win10安装Tensorflow1.9GPU版本
前言 看到DateWhale出了一篇安装教程(微信公众号DateWhale),决定体验一下Tensorflow1.9的GPU版本..其实一开始装的是2.0,但是tf.Session()就报错了,说是2 ...
- 【Linux开发】如何查看Linux kernel的内置模块驱动列表和进程ID
[Linux开发]如何查看Linux kernel的内置模块驱动列表和进程ID 标签:[Linux开发] 命令: cat /lib/modules/$(uname -r)/modules.builti ...
- [知乎]自己真是Know Nothing 历史上有哪些细思恐极的事件?
作者:敖让链接:https://www.zhihu.com/question/38374479/answer/652432284来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 关于E980
1. 浪商官网上面的内容貌似有点问题 来源: https://www.inspurpower.com/product/others.php?f=E980 但是wiki 里面的东西: 其实只有12cor ...
- 宏定义 #define CH_SENS(a,b) 0x##a##b
#define Bin(n) LongToBin(0x##n##L) " ## ",属于宏定义中的字符(串)连接符,即,将符号两端的字符(串)接为一个整体,如以上代码中,在调用Bi ...
- C++基础-类和对象
本文为 C++ 学习笔记,参考<Sams Teach Yourself C++ in One Hour a Day>第 8 版.<C++ Primer>第 5 版.<代码 ...
- 【Luogu P2201】【JZOJ 3922】数列编辑器
题面: Description 小Z是一个爱好数学的小学生.最近,他在研究一些关于整数数列的性质. 为了方便他的研究,小Z希望实现一个叫做"Open Continuous Lines Pro ...
- 连连看(简单搜索)bfs
连连看Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...