大暴搜 chess

這里寫圖片描述
這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

仔細讀題,會發現吃掉敵人點對方案數的貢獻很神奇。如果走的空格相同,而走的敵人點不同,對答案無貢獻,而對于走的空格相同,但一種走了敵人點,另一種沒走,算兩個方案。。。。sb出題人語文簡直是和我學的。。。。
可見對于能相互到達的敵人點我們該縮點。也就是說,我們對與這一坨敵人點相連的空格互相連上雙向邊。(可以互相到達),并把每兩個互相到達的空格連上邊。
然后跑spfa,加一個當dis[i]==dis[j]+1時,ans[i]+=ans[j],就行了。
注意,邊不要建多。
ans不用開ll

#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<queue>
#define ll long long
using namespace std;
inline int read()
{int sum=0;char x=getchar();while(x<'0'||x>'9')x=getchar();while(x>='0'&&x<='9'){sum=(sum<<1)+(sum<<3)+x-'0';x=getchar();}return sum;
}
struct node{int x,y;}S,T;
struct road{int v,next;}lu[10000*8];
queue<node> q;queue<int> Q;
int n,m,tot,cnt,e;
int dis[55*55],v[55*55],adj[55*55],al[55*55][55*55];
int vis[55][55],a[55][55],id[55][55],hh[55][55];
ll ans[55*55];
int wz[10][2]={2,1,2,-1,-2,1,-2,-1,1,2,1,-2,-1,2,-1,-2};
inline bool check(int x,int y){if(x<=0||y<=0||x>n||y>m||a[x][y]==2)return 0;return 1;}
inline void add(int u,int v){lu[++e]=(road){v,adj[u]};adj[u]=e;}
void get(node aaa)
{q.push(aaa);cnt=0;memset(hh,0,sizeof(hh));while(!q.empty()){node x=q.front();q.pop();for(int i=0;i<8;i++){node to;to.x=x.x+wz[i][0],to.y=x.y+wz[i][1];if(!check(to.x,to.y))continue;if(a[to.x][to.y]==1&&!vis[to.x][to.y]){q.push(to);vis[to.x][to.y]=1;}if(a[to.x][to.y]==0&&!hh[to.x][to.y]){v[++cnt]=id[to.x][to.y];hh[to.x][to.y]=1;}}}for(int i=1;i<=cnt;i++)for(int j=i+1;j<=cnt;j++)if(!al[v[i]][v[j]])add(v[i],v[j]),add(v[j],v[i]),al[v[i]][v[j]]=al[v[j]][v[i]]=1;
}
void init()
{for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)id[i][j]=++tot;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(!a[i][j])for(int k=0;k<8;k++){int x=i+wz[k][0],y=j+wz[k][1];if(!check(x,y)||a[x][y]!=0)continue;add(id[i][j],id[x][y]);//add(id[x][y],id[i][j]);}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(a[i][j]==1&&!vis[i][j]){vis[i][j]=1;node x;x.x=i,x.y=j;get(x);}
}
bool spfa()
{int vis[55*55];memset(vis,0,sizeof(vis));memset(dis,40,sizeof(dis));Q.push(id[S.x][S.y]);dis[id[S.x][S.y]]=0;ans[id[S.x][S.y]]=vis[id[S.x][S.y]]=1;while(!Q.empty()){int x=Q.front();Q.pop();vis[x]=0;for(int i=adj[x];i;i=lu[i].next){int to=lu[i].v;if(dis[to]>dis[x]+1){dis[to]=dis[x]+1;ans[to]=ans[x];if(!vis[to]){vis[to]=1;Q.push(to);}}else if(dis[to]==dis[x]+1){ans[to]+=ans[x];if(!vis[to]){vis[to]=1;Q.push(to);}}}}return dis[id[T.x][T.y]]<100000;
}
int main()
{n=read();m=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){a[i][j]=read();if(a[i][j]==3)S.x=i,S.y=j,a[i][j]=0;if(a[i][j]==4)T.x=i,T.y=j,a[i][j]=0;}init();if(!spfa()){cout<<-1;return 0;}cout<<dis[id[T.x][T.y]]-1<<endl<<ans[id[T.x][T.y]];
}

轉載于:https://www.cnblogs.com/QTY2001/p/7632669.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454460.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454460.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454460.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網站的SEO以及它和站長工具的之間秘密

博客遷移沒有注意 URL 地址的變化&#xff0c;導致百度和 google 這兩只爬蟲引擎短時間內找不到路。近段時間研究了下國內最大搜索引擎百度和國際最大搜索引擎google的站長工具&#xff0c;說下感受。 百度的站長工具地址&#xff1a;http://zhanzhang.baidu.com/dashboard/ind…

html 縮略圖點擊預覽,[每天進步一點點~] uni-app 點擊圖片實現預覽圖片列表

點擊圖片&#xff0c;實現預覽圖片功能&#xff0c;并且可循環預覽圖片列表&#xff01;image.png一、多張圖片預覽html代碼js代碼data(){return {photos:[{ src: 圖片路徑1},{ src: 圖片路徑2},{ src: 圖片路徑3},……]}},methods: {// 預覽圖片previewImage(index) {let phot…

git ssh拉取代碼_阿里云搭建git服務器

一.搭建步驟&#xff0c;分為兩步搭建中心倉庫自動同步代碼到站點目錄二.詳細步驟如下1.先檢查一下服務器上有沒有安裝gitgit --version如果出現版本號&#xff0c;說明服務器已經安裝git&#xff0c;如圖所示&#xff1a;2.如果沒有版本信息&#xff0c;則先安裝git&#xff1…

Django REST framework 序列化

創建一個序列化類 使用序列化有四種方式 使用json模塊&#xff0c;完全手寫使用django自帶的序列化模塊 1&#xff0c;# from django.core import serializers 2&#xff0c;# dataserializers.serialize(“json”,book_list)使用REST framework 帶的序列化方法&#xff0c…

基于SIMD的AVS整數反變換算法設計與優化

基于SIMD 的AVS 整數反變換算法設計與優化王玲娟&#xff0c;張剛**作者簡介&#xff1a;王玲娟&#xff0c;&#xff08;1987-&#xff09;&#xff0c;女&#xff0c;在讀碩士&#xff0c;主要研究方向&#xff1a;視頻解碼算法通信聯系人&#xff1a;張剛&#xff0c;&#…

Word -- 列表重新編號

Word -- 列表重新編號office一言&#xff1a;我小心翼翼地灌溉&#xff0c;一日復一日地期待&#xff0c;那么費力&#xff0c;植成參天的喬木&#xff0c;豈愿見你終有一日從容赴死&#xff1f;問題 word 文檔早就想解決的一個問題&#xff0c;這次遇到了就上網找解決掉了&…

非持久連接和持久連接

非持久連接和持久連接 HTTP既可以使用非持久連接(nonpersistent connection)&#xff0c;也可以使用持久連接(persistent connection)。HTTP/1.0使用非持久連接&#xff0c;HTTP/1.1默認使用持久連接。 非持久連接 讓我們查看一下非持久連接情況下從服務器到客戶傳送一個Web頁面…

計算機開機鍵鼠無法識別,我得電腦一開機就檢測不到鍵盤和鼠標

2005-10-18 16:06:131、開機后當出現dos界面時&#xff0c;按一下pause鍵(這個鍵在四個方向鍵的上邊&#xff0c;仔細找就能找到)&#xff0c;如果計算機啟動停止&#xff0c;說明你的鍵盤起作用&#xff0c;主板在開機時就已經檢測到了鼠標鍵盤。啟動后不能使用鼠標鍵盤&#…

vs2003 局部友元訪問私有不可訪問_C++ 類:重載運算符與友元

18.類中重載運算符與友元上次節中學習了如何在類中重新定義賦值()運算符&#xff0c;實際上在一個自定義類中除了賦值()運算符外&#xff0c;類的對象是不可以直接使用運算符的&#xff0c;比如你在main函數中寫這樣的代碼會報錯&#xff1a;如果想解決這些報錯問題&#xff0c…

oracle sqlldr (一) 最基本語法

-- Create table create table DEPT2 (DEPTNO NUMBER(2) not null,DNAME VARCHAR2(14),LOC VARCHAR2(1000) ); alter table DEPT2add constraint DEPT_PK primary key (DEPTNO);------demo.ctl LOAD DATA INFILE * --數據在控制文件中 INTO TABLE DEPT2 INSERT ---默認加…

Django REST framework 視圖

上一部分代碼在序列化部分 類繼承順序 ############### mixins.py ################ # 類中調用的方法均在 GenericAPIView 類中實現&#xff0c;所以下列類需要結合 GenericAPIView 使用 class ListModelMixin(object) # 查看繼承類def list(self, reque…

AVS軟件解碼器的優化

AVS軟件解碼器的優化 董斌 , 姜昱明 (西安 電子科技大學計算機學院,陜西 西安,710071)) 摘 要: 主要研究了AVS標準的視頻壓縮部分,指出了影響解碼速度的瓶頸并提出了一種優化方案.使用從程序結構入手結合使用SIMD指令集的方案來優化AVS軟件解碼器.實驗結果表明優化方案可行并且…

IOS7.1.1真的像網上流傳的那么好?沒有任何問題么??

IOS7.1.1推送更新之后到處看到網上說711好的~~ 那么IOS7.1.1真的像網上現在流傳的那么好么&#xff1f; 其實不然&#xff0c;IOS7.1.1目前眾多網友反映說升級ios7.1.1之后APPstore連接不上了&#xff0c;提示無法連接到APPstore。 這個問題也不難解決~還是之前的老辦法~ 那么今…

三校生計算機對口本科有哪些學校,寶山三校生五月對口高考報名

多次復習生活不可能像你想象得那么好&#xff0c;但也不會像你想象得那么糟。我覺得人的脆弱和堅強都超乎自己的想象。多種方式結合起來復習單一的復習方法&#xff0c;易產生消極情緒和疲勞&#xff0c;如果采用交談復習法、討論復習法、自我檢查復習法多樣化的復習方法&#…

localhost 已拒絕連接_【Python】MongoDB數據庫的連接和操作

安裝Python 要連接 MongoDB 需要 MongoDB 驅動。pip安裝&#xff1a;python3 -m pip3 install pymongo創建數據庫import pymongo myclient pymongo.MongoClient("mongodb://localhost:27017/")mydb myclient["loaderman"]注意: 在 MongoDB 中&#xff0c…

checkbox已設置為checked--true-但不勾選問題解決方法(只第一次勾選有效)

一、出現的問題及解決方法&#xff1a; 今天在寫一個table相關插件的時候無意中發現了這樣一個問題&#xff0c;記得以前在寫這種控制checkbox選中與非選中的代碼時并沒有這種bug&#xff0c;當時也是用的checked屬性&#xff0c;而現在卻行不通了。 于是乎做了以下測試&#x…

Python 錯誤和異常小結[轉]

原文鏈接 http://blog.csdn.net/sinchb/article/details/8392827 事先說明哦&#xff0c;這不是一篇關于Python異常的全面介紹的文章&#xff0c;這只是在學習Python異常后的一篇筆記式的記錄和小結性質的文章。什么&#xff1f;你還不知道什么是異常&#xff0c;額... 1.Py…

Django REST framework 認證、權限和頻率組件

認證與權限頻率組件 身份驗證是將傳入請求與一組標識憑據&#xff08;例如請求來自的用戶或其簽名的令牌&#xff09;相關聯的機制。然后 權限 和 限制 組件決定是否拒絕這個請求。 簡單來說就是&#xff1a; 認證確定了你是誰權限確定你能不能訪問某個接口限制確定你訪問某…

高速率AVS整數變換的匯編實現與優化

1 引言 AVS標準Ⅲ采用的8x8整數變換在獲得較H&#xff0e;264更高的壓縮率和主觀圖像質量的同時&#xff0c;增加了算法的實現復雜性和時間開銷。本文重點研究AVS編解碼器的整數變換模塊&#xff0c;針對不同的算法實現模式&#xff0c;在原有Visual C6&#xff0e;0整數變換模…

計算機與廣播電視論文,淺談廣播電視中計算機技術的作用論文.pdf

1、計算機技術在廣播電視的媒體內容中有重要應用在以往的廣播電視中&#xff0c; 媒體內容主要分為音頻和視頻兩種信號&#xff0c; 在傳輸的過程中使用的是模擬信號&#xff0c; 但模擬信號受到的外界干擾因素較為明顯&#xff0c; 因此廣播電視傳播的媒體內容受到影響&#x…