银河之星(galaxy)

author author     2022-08-22     669

关键词:

技术分享

技术分享

技术分享

技术分享

当时没来的及做,应该是一道不是太难的搜索题。

首先,可以想到可行解的数量一定远远少于不可行解的数量;

与其我们直接搜索,倒不如我们根据(x,y)构造可行解,然后判断。

代码实现:

 1 #include<map>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 typedef long long LL;
 6 const int dx[8] = {0,1,0,-1,1,-1,1,-1};
 7 const int dy[8] = {1,0,-1,0,1,-1,-1,1};
 8 const int ch[9][9] = {{0,2,1,6,8,7,3,5,4},{2,1,0,8,7,6,5,4,3},{1,0,2,7,6,8,4,3,5},
 9                       {6,8,7,3,5,4,0,2,1},{8,7,6,5,4,3,2,1,0},{7,6,8,4,3,5,1,0,2},
10                       {3,5,4,0,2,1,6,8,7},{5,4,3,2,1,0,8,7,6},{4,3,5,1,0,2,7,6,8}};
11 map <LL,int> ma;
12 int n,m,k,X,Y,p[10][10],x[10],y[10];
13 LL now,goal,fac[10],che[10];
14 inline int ABS(int x) {return x < 0?-x:x;}
15 void Add(int X1,int Y1,int X2,int Y2){
16     int A=3*(X1%3)+Y1%3;
17     int B=3*(X2%3)+Y2%3;
18     p[A][B]=p[B][A]=1;
19 }
20 void Work(int a,int b){
21     for (int l=0;l<8;l++){
22         int xa=a+dx[l]*3;
23         int yb=b+dy[l]*3;
24         if(xa<1||xa>n||yb<1||yb>m) continue;
25         for(int i=0;i<8;i++){
26             int xx=xa+dx[i];
27             int yy=yb+dy[i];
28             if(xx<1||xx>n||yy<1||yy>m) continue;
29             Add(a,b,xx,yy);
30         }
31     }
32     for (int i=0;i<8;i++){
33         int xx=a+dx[i],yy=b+dy[i];
34            if(xx<1||xx>n||yy<1||yy>m) continue;
35            Add(a,b,xx,yy);
36     }
37 }
38 bool dfs(LL now,int tot){
39     if (now == goal) return 1;
40     if (ma[now]) return 0;
41     else ma[now] = 1;
42     if (tot == 1) return 0;
43     for (int i = 0; i < 9; i++)
44         for (int j = i + 1; j < 9; j++)
45             if (p[i][j] && che[i] && che[j]) {
46                 --che[i]; --che[j]; ++che[ch[i][j]];
47                 LL nex = 0;
48                 for (int l = 0; l < 9; l++) nex += fac[l]*che[l];
49                 if (dfs(nex,tot-1)) return 1;
50                 ++che[i]; ++che[j]; --che[ch[i][j]];
51             }
52     return 0;
53 }
54 int main(){
55     #ifdef YZY
56            freopen("galaxy4.in","r",stdin);
57     #endif
58     fac[0] = 1;
59     for (int i = 1; i < 10; i++) fac[i] = fac[i-1]*11LL;
60     while (scanf("%d%d%d%d%d",&k,&n,&m,&X,&Y) != EOF) {
61         memset(p,0,sizeof(p)); memset(che,0,sizeof(che)); ma.clear();
62         goal = fac[3*(X%3) + Y%3];
63         for (int i = 0; i < k; i++) {
64             scanf("%d%d",&x[i],&y[i]);
65             ++che[3*(x[i]%3) + y[i]%3];
66         }
67         for (int i = 1; i <= n; i++)
68             for (int j = 1; j <= m; j++)
69                 Work(i,j);
70         LL st = 0;
71         for (int i = 0; i < 9; i++) st += che[i]*fac[i];
72         if (dfs(st,k)) printf("Yes
");
73         else printf("No
");
74     }
75     return 0;
76 }

题目来源:Pku 3490 

银河之星(乱搞+记忆化搜索)

 TimeLimit:1000ms  MemoryLimit:256MBDescription      题解  乍一看真的无从下手,规则一脸懵逼。  首先看到第3个规则,每个棋子往任意方向都只能走3格。可以联想一下国际象棋四个象,2个永远在黑格,2个永远... 查看详情

在 Galaxy Tab 中获取当前位置

...在androidEmulator中正常工作。但是当我将此代码集成到我的银河选项卡中时,我无法获得当前的纬度和经度......所以任何人都有设备解决方案,而不是请帮助我.... 查看详情

电话链接android不工作(银河S5)

】电话链接android不工作(银河S5)【英文标题】:tellinkandroidnotworking(GalaxyS5)【发布时间】:2014-10-1719:46:42【问题描述】:我是移动混合应用开发的新手。我有一个用Angular和Ionic开发的HTML5混合应用程序,在应用程序的一部分中,... 查看详情

我们如何将三星银河皮肤添加到安卓模拟器中?

】我们如何将三星银河皮肤添加到安卓模拟器中?【英文标题】:HowcanweaddSamsunggalaxyskinintoandroidemulator?【发布时间】:2020-09-2117:53:44【问题描述】:我是android开发新手,我想知道如何将三星Galaxy设备/皮肤添加到我的模拟器中?... 查看详情

英语我要宇宙所有的单词,例如地球、火星、外星、银河系

...小行星aerolite陨石satellite卫星constellation星座nebula星云galaxy银河ringofSaturn土星环MilkyWay银河orbit轨道apsis拱点equator赤道zenith天顶epicycle本轮apogee远地点perigee近地点node交点limb边缘solarsystem太阳系sun太阳photosphere光球chromosphere色球solarcor... 查看详情

博客之星,你最行

五星互评:https://bbs.csdn.net/topics/603956779博客之星。 查看详情

Galaxy S10、S10+ 全屏模式

】GalaxyS10、S10+全屏模式【英文标题】:GalaxyS10,S10+FullScreenMode【发布时间】:2019-08-0311:36:42【问题描述】:如何用三星GalaxyS10和S10+实现全屏模式,以下代码对我不起作用:getWindow().getDecorView().setSystemUiVisibility(//Setthecontenttoappearund... 查看详情

hdu5073galaxy

DescriptionGoodnewsforus:toreleasethefinancialpressure,thegovernmentstartedsellinggalaxiesandwecanbuythemfromnowon!ThefirstonewhoboughtagalaxywasTianmingYunandhegaveittoXinChengasapresent. Tobefa 查看详情

Galaxy S4 Android 自定义相机问题

】GalaxyS4Android自定义相机问题【英文标题】:GalaxyS4AndroidCustomCameraIssue【发布时间】:2015-04-0223:54:07【问题描述】:我正在开发一个带有自定义相机的应用。摩托罗拉MotoG一切正常,但是当我尝试保存GalaxyS4拍摄的照片时,它需要... 查看详情

相机意图不适用于三星 Galaxy S3

】相机意图不适用于三星GalaxyS3【英文标题】:CameraintentnotworkingwithSamsungGalaxyS3【发布时间】:2013-02-2107:09:19【问题描述】:我有一个活动,我让用户可以选择单击相机中的图像,然后将此图像存储在字节数组和数据库中。但是... 查看详情

Android Websocket 连接失败(Galaxy s4)

】AndroidWebsocket连接失败(Galaxys4)【英文标题】:AndroidWebsocketconnectionfailed(Galaxys4)【发布时间】:2016-09-2217:54:24【问题描述】:我遇到了奇怪的错误。我们有一个使用javawebsockets1.3.0的Android应用程序。websocket在任何设备或模拟器... 查看详情

wps2019银河麒麟版本怎

参考技术A题主是否想询问“wps2019银河麒麟版本怎么下载吗”?去wps官网下载。wps2019银河麒麟版本去wps官网下载。银河麒麟是总部在天津的企业有国防科大还有ubuntu的母公司一起在维护。 查看详情

银河麒麟ssh工具连接被拒绝

参考技术A刚安装好的银河麒麟无法远程ssh登录。在银河麒麟终端上用root用户 查看详情

galaxy2d游戏引擎常见问题解答

◆Galaxy2D游戏引擎开源吗?   Galaxy2D游戏引擎不开源。 ◆Galaxy2D相对HGE有何优点?   Galaxy2D相对HGE有以下优点:    (1)自带音频播放功能,HGE需要通过bass.dll播放音频文件,而bass.dll是要收费... 查看详情

为啥 Galaxy S21 没有自定义通知声音

】为啥GalaxyS21没有自定义通知声音【英文标题】:WhyisGalaxyS21notdoingcustomnotificationsounds为什么GalaxyS21没有自定义通知声音【发布时间】:2022-01-0316:17:17【问题描述】:我有一个应用程序可以发出由日历事件触发的自定义通知声音... 查看详情

带有 Galaxy S3 的 Android 蓝牙 SPP

】带有GalaxyS3的Android蓝牙SPP【英文标题】:AndroidBluetoothSPPwithGalaxyS3【发布时间】:2012-08-2917:54:39【问题描述】:我正在尝试在运行Android4.0.3的三星GalaxyS3和RN42蓝牙芯片之间建立蓝牙连接,here是型号:我使用了很多不同的代码来... 查看详情

并查集银河英雄传说

[codevs1540]银河英雄传说 2002年NOI全国竞赛 时间限制:1s 空间限制:256000KB 题目等级:大师Master 题目描述 Description公元五八○一年,地球居民迁移至金牛座&alpha;第二行星,在那里发表银河联邦创立宣言,同年... 查看详情

Android BLE 扫描屏幕关闭(使用 Galaxy)

】AndroidBLE扫描屏幕关闭(使用Galaxy)【英文标题】:AndroidBLEscanwithscreenoff(withGalaxy)【发布时间】:2020-08-0612:11:35【问题描述】:我正在使用GalaxyS10,android10。来自here,三星设备的BLE扫描需要非空扫描过滤器才能在屏幕关闭状态... 查看详情