<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      START:

      2021-08-06

      16:34:44

      題目鏈接:

      https://www.luogu.com.cn/problem/P2105

      題目詳情:

      小 Z 最近撿到了一個棋盤,他想在棋盤上擺放 K 個皇后。他想知道在他擺完這 K 個皇后之后,棋盤上還有多少個格子是不會被攻擊到的。

      注意:一個皇后會攻擊到這個皇后所在的那一行,那一列,以及兩條對角線。

      輸入格式

      第一行三個正整數 n,m,K,表示棋盤的行列,以及小 Z 擺放的皇后的個數。

      接下來 K 行,每行兩個正整數 x,y,表示這個皇后被擺在了第 x行,第 y 列,數據保證任何兩個皇后都不會被擺在同一個格子里。

      輸出格式

      僅一個整數,表示棋盤上還有多少個格子是不會被攻擊到的。

      輸入輸出樣例

      輸入 #1
      12 13 6
      10 4
      12 10
      1 1
      2 3
      3 2
      2 6
      輸出 #1
      25

      說明/提示

      • 對于 30% 的數據,1n,m5×10^3,1K500;
      • 對于另外 10% 的數據  K=1;
      • 對于 100% 的數據,1n,m2×10^4,1K500。

       

      分析:

      題目數據有那么億點點大,所以正經的暴力是不行了,我們每放置一個皇后,用四個數組x[N],y[N],dig[N],udig[N],來儲存該皇后

      所在的行,列,對角線以及反對角線的狀態,我們在圖上畫一個坐標系,給出任意幾個點放置皇后,如下圖:

       

       

       我們可以清楚的看到,點1的橫縱坐標為(2,4),當點1放置一個皇后之后,第4行就被全被攻擊了,第2列全被攻擊,并且x+y=6上的點全被攻擊了,以及x-y=-2上的點全被攻擊了,所以在點(x,y)出放置一個皇后之后,我們更新所有的數組狀態:

      x[i]=1,y[j]=1,dig[x+y]=1,udig[x-y+C]=1

      這里的udig[x-y+C]中,下標x-y加上常數C的原因是放置數組下標溢出,這就是我們的核心函數了。

      在寫核心函數之前,我們先寫一個初始化函數,將所有的輸入處理了

      void init(){
          for(int i=1;i<=k;i++)
      	{
              int a,b;
      		scanf("%d%d",&a,&b);
      		x[a]=1;
      		y[b]=1;
      		dig[a+b]=1;
      		udig[a-b+C]=1;
      	}
      }
      

        

      接著寫核心函數fac()

      int fac(){
          int res=0;
          for(int i=1;i<=n;i++){
              if(x[i])continue;
              for(int j=1;j<=m;j++){
                  if(y[j]||dig[i+j]||udig[i-j+C])continue;
                  else res++;
              }
          }
          return res;
      }
      

        

      最后這幾個函數和程序基本框架結合起來

      完整代碼如下:

       (PS:需要開啟氧氣優化O2優化)

      #include<iostream>
      #include<cstdio>
      using namespace std;
      const int N=5e5+10;
      const int C=2e4+10;
      int n,m,k;
      bool x[N],y[N],dig[N],udig[N];
      
      int fac(){
          int res=0;
          for(int i=1;i<=n;i++){
              if(x[i])continue;
              for(int j=1;j<=m;j++){
                  if(y[j]||dig[i+j]||udig[i-j+C])
                continue; else res++; } } return res; } void init(){ for(int i=1;i<=k;i++) { int a,b; scanf("%d%d",&a,&b); x[a]=1; y[b]=1; dig[a+b]=1; udig[a-b+C]=1; } } int main() { cin>>n>>m>>k; init(); cout<<fac()<<endl; return 0; }

        

      end:

      2021-08-06

      16:59:16

      posted on 2021-08-06 17:00  Dragon昴  閱讀(308)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 亚洲成av人片无码不卡播放器 | 激情亚洲内射一区二区三区| 亚洲一区二区三区啪啪| 亚洲aⅴ男人的天堂在线观看| 国产精品VA尤物在线观看| 婷婷色爱区综合五月激情韩国| 99亚洲男女激情在线观看| 久久婷婷大香萑太香蕉av人 | 色www视频永久免费| 阿拉尔市| 韩国美女福利视频一区二区| 国产精品人妻久久无码不卡| 国产老熟女无套内射不卡| 亚洲精品欧美综合二区| 天干天干夜天干天天爽| 中文字幕日韩精品有码| 曲阳县| 久久综合精品成人一本| 十八禁国产精品一区二区| 亚洲欧美人成人综合在线播放 | 精品免费看国产一区二区| 亚洲成年av天堂动漫网站| 国产成人久久综合第一区| 中文字幕日韩有码国产| 黄网站色视频免费观看| 在线高清免费不卡全码| 成人免费无码大片A毛片抽搐色欲| 久久精品无码专区免费东京热| 亚洲精品一区二区三区综合| 色婷婷久久综合中文久久一本| 亚洲国产大胸一区二区三区| 久久夜色精品国产噜噜亚洲sv| 国产涩涩视频在线观看 | 国产片av在线观看国语| 亚洲国产超清无码专区| 国产成人午夜福利精品| 亚洲高清日韩专区精品| 免费无遮挡毛片中文字幕| 国产一区二区三区在线观看免费| 老色批国产在线观看精品| 开心激情站开心激情网六月婷婷|