Codeforces Round 745 (Div. 2)(C:前綴和+滑動窗口,E:位運算加分塊)

Dashboard - Codeforces Round 745 (Div. 2) - Codeforces

A:

答案就是2n!/2,

對于當前滿足有k個合法下標的排列,就是一個n-k個不合法的下標的排列,

所以每一個合法排列都相反的存在一個

對稱性

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m;
int f[N];
void solve()
{cin>>n;int res=1;for(int i=1;i<=2*n;i++){if(i==2) continue;res=res*i%mod;}cout<<res%mod<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

B:

可以先手完一下,

對于一個n

如果m<n-1,那么這個圖直接就不連通了,直接false

如果m==(n-1)*n/2,那么這個圖就是完全無向連通圖,直徑最長是1

在這個中間,直徑最長是2,直接在1點用n-1條邊連其他點

然后特判啥的就行

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m,k;
int f[N];
void solve()
{cin>>n>>m>>k;if(k<=1||m>n*(n-1)/2||m<n-1){cout<<"NO\n";return ;}if(n==1&&m==0){cout<<"YES\n";return ;} if(k==2||k==3&&m!=n*(n-1)/2){cout<<"NO\n";return ;}cout<<"YES\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C:

這個題好像藍橋杯之前寫過,枚舉三條線,然后滑動窗口來著

這個題基本一模一樣

然后想上下兩條線

先想一個問題

因為枚舉的是D,那么D那條線答案是不用管的(因為我們枚舉的第三條就是這個嘛),

然后想U,如果某個U到D和U+x到D,相同答案,那么選誰呢,其實都一樣,如果D往下移,那么他們要加的公共部分都是一樣的就是g[D][L],g[D][R],和D那條線,這個都是要加的,

如果要求某個[1,D-4]的線到D最小就行

快速統計矩陣的0,1用二維前綴和即可

#include<bits/stdc++.h>
using namespace std;
const int N = 410+10,mod=1e9+7;
#define int long long
int n,m,k;
char g[N][N];
int b[N][N];;
int s[N][N];
int row[N][N];
int col[N][N];
int val(int x1,int y1,int x2,int y2){//cin>>x1>>y1>>x2>>y2;return s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];
}
int getrow(int i,int x,int y){return row[i][y]-row[i][x-1];
}
int getcol(int i,int x,int y){return col[i][y]-col[i][x-1];
}void solve()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+(g[i][j]-'0');row[i][j]=row[i][j-1]+(g[i][j]-'0');col[j][i]=col[j][i-1]+(g[i][j]-'0');b[i][j]=g[i][j]-'0';}}int res=n*m;for(int L=1;L<=m;L++){for(int R=L+3;R<=m;R++){int tmp=n*m;for(int D=5;D<=n;D++){if(b[D-1][L]==0) tmp++;if(b[D-1][R]==0) tmp++;tmp+=val(D-1,L+1,D-1,R-1);
int now=(R-L-1)-val(D-4,L+1,D-4,R-1)+3-val(D-3,L,D-1,L)+3-val(D-3,R,D-1,R)+val(D-3,L+1,D-1,R-1);tmp=min(tmp,now);res=min(res,tmp+R-L-1-val(D,L+1,D,R-1));}}}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

E:

如果一個車車進來了

那么

工作區間有:[st,st+x-1],[st+x+y,st+x+y+x]....

休息區間有:[st+x,st+x+y-1],[st+x+y+x,st+x+y+x+y-1]....

所以在%(x+y)這個區間在休息區間那么就加一

差分,如果x+y>500,那么只需要400次就可以遍歷完所以需要修改的點,

如果x+y<500,那么維護一個區間大小(x+y)去增加這個i%(x+y)點,

即維護一個 x+y【0,500】里面每個余數相同的點

分塊即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,mod=1e9+7;
int n,m,k;
int x[N],y[N];
int a[N];
int s[N];
int thre,ans;
int cnt[510][510];
void update(int st,int k,int v){int aa=x[k]+y[k];int *c=cnt[aa];int l=(st+x[k])%aa;int r=(st-1)%aa;if(l<=r){for(int i=l;i<=r;i++) c[i]+=v;}else{for(int i=0;i<=r;i++) c[i]+=v;for(int i=l;i<aa;i++) c[i]+=v;}
}
int query(int x){int res=0;for(int i=2;i<=thre;i++){res+=cnt[i][x%i];}return res;
}
void solve()
{cin>>n>>m;thre=sqrt(m);for(int i=1;i<=n;i++) cin>>x[i]>>y[i];for(int i=1;i<=m;i++){int op,k;cin>>op>>k;if(op==1){int aa=x[k]+y[k];if(aa>thre){for(int j=i+x[k];j<=m;j+=aa){a[j]++;if(j+y[k]<=m) a[j+y[k]]--;}}else update(i,k,1);s[k]=i;}else{int aa=x[k]+y[k];if(aa>thre){for(int j=s[k]+x[k];j<=m;j+=aa){a[j]--;if(j<=i-1) ans--;if(j+y[k]<=i-1) ans++;if(j+y[k]<=m) a[j+y[k]]++;}}else update(s[k],k,-1);}ans+=a[i];cout<<ans+query(i)<<"\n";}
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;//cin>>t;while(t--) solve();
}

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

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

相關文章

【Redisson】基于自定義注解的Redisson分布式鎖實現

前言 在項目中&#xff0c;經常需要使用Redisson分布式鎖來保證并發操作的安全性。在未引入基于注解的分布式鎖之前&#xff0c;我們需要手動編寫獲取鎖、判斷鎖、釋放鎖的邏輯&#xff0c;導致代碼重復且冗長。為了簡化這一過程&#xff0c;我們引入了基于注解的分布式鎖&…

JS獲取時間戳的五種方法

一、JavasCRIPT時間轉時間戳 JavaScript獲得時間戳的方法有五種&#xff0c;后四種都是通過實例化時間對象new Date() 來進一步獲取當前的時間戳&#xff0c;JavaScript處理時間主要使用時間對象Date。 方法一&#xff1a;Date.now() Date.now()可以獲得當前的時間戳&#x…

思維模型 等待效應

本系列文章 主要是 分享 思維模型 &#xff0c;涉及各個領域&#xff0c;重在提升認知。越是等待&#xff0c;越是焦慮。 1 等待效應的應用 1.1 等待效應在管理中的應用 西南航空公司是一家美國的航空公司&#xff0c;它在管理中運用了等待效應。西南航空公司鼓勵員工在工作中…

快速學會使用Python3.12的新特性

一、 PEP 695: 類型形參語法的革新 PEP 695 在 Python 3.12 中引入了一種新穎且更為清晰的方式來定義泛型類和函數&#xff0c;旨在提升類型參數的明確性和簡潔性。這個提案不僅改善了類型系統的可讀性&#xff0c;還增強了其功能性。以下是這些變化的詳細概述&#xff1a; 1…

(四)C語言之符號常量概述

&#xff08;四&#xff09;C語言之符號常量概述 一、符號常量概述 一、符號常量概述 在程序中使用像300,20等這樣的等類似的“幻數”不是一個好的習慣&#xff0c;它們無法向閱讀該程序的人提供更多有用的信息&#xff0c;從而使得修改程序變得困難。處理這種幻數的一種方法是…

unreal 指定windows SDK

路徑 &#xff1a; “C:\Users\Administrator\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml” 在Configuration中添加 <WindowsPlatform><WindowsSdkVersion>10.0.20348.0</WindowsSdkVersion></WindowsPlatform>示例&…

R數據分析:集成學習方法之隨機生存森林的原理和做法,實例解析

很久很久以前給大家寫過決策樹&#xff0c;非常簡單明了的算法。今天給大家寫隨機&#xff08;生存&#xff09;森林&#xff0c;隨機森林是集成了很多個決策數的集成模型。像隨機森林這樣將很多個基本學習器集合起來形成一個更加強大的學習器的這么一種集成思想還是非常好的。…

算法面試題:反轉一個整數

題目&#xff1a;反轉一個整數。例如&#xff0c;輸入123&#xff0c;輸出321&#xff1b;輸入-456&#xff0c;輸出-654。注意&#xff1a;反轉后的整數在32位帶符號整數范圍內。 編寫一個函數 reverseInteger(x: int) -> int 來實現這個功能。 答案&#xff1a; def re…

【前端】必學知識ES6 1小時學會

1.ES6概述 2.let和const的認識 3.let、const、var的區別 4.模板字符串 5.函數默認參數 6.箭頭函數【重點】 ?編輯7.對象初始化簡寫以及案例分析 【重點】 8.對象解構 8.對象傳播操作符 9.對象傳播操作符案例分析 ?編輯 10.數組Map 11.數組Reduce 12.NodeJS小結 …

代碼隨想錄算法訓練營第四十四天【動態規劃part06】 | 完全背包、518. 零錢兌換 II、377. 組合總和 Ⅳ

完全背包 有N件物品和一個最多能背重量為W的背包。第i件物品的重量是weight[i]&#xff0c;得到的價值是value[i] 。每件物品都有無限個&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解將哪些物品裝入背包里物品價值總和最大。 題目鏈接&#xff1a; 題目頁…

計算機畢業設計 基于Hadoop的物品租賃系統的設計與實現 Java實戰項目 附源碼+文檔+視頻講解

博主介紹&#xff1a;?從事軟件開發10年之余&#xff0c;專注于Java技術領域、Python人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精…

YOLO目標檢測——泄露檢測數據集下載分享【含對應voc、coco和yolo三種格式標簽】

實際項目應用&#xff1a;泄露檢測數據集說明&#xff1a;泄露檢測數據集&#xff0c;真實場景的高質量圖片數據&#xff0c;數據場景豐富&#xff0c;含多個類別標簽說明&#xff1a;使用lableimg標注軟件標注&#xff0c;標注框質量高&#xff0c;含voc(xml)、coco(json)和yo…

AES 加解密

AES 加解密 AES(Advanced Encryption Standard),又稱高級加密標準,是一種對稱加密算法,也是目前廣泛使用的加密技術之一。其主要特點是加密速度快、安全性高、可擴展性好等。 AES 算法采用對稱加密的方式,即加密和解密使用相同的密鑰進行操作。密鑰長度可以是 128、192…

【JavaSE】不允許你不會使用String類

&#x1f3a5; 個人主頁&#xff1a;深魚~&#x1f525;收錄專欄&#xff1a;JavaSE&#x1f304;歡迎 &#x1f44d;點贊?評論?收藏 目錄 前言&#xff1a; 一、常用方法 1.1 字符串構造 1.2 String對象的比較 &#xff08;1&#xff09;比較是否引用同一個對象 注意…

從零開始的C++(十九)

紅黑樹&#xff1a; 一種接近平衡的二叉樹&#xff0c;平衡程度低于搜索二叉樹。 特點&#xff1a; 1.根節點為黑 2.黑色結點的子結點可以是紅色結點或黑色結點。 3.紅色結點的子結點只能是黑色結點。 4.每個結點到其所有葉子結點的路徑的黑色結點個數相同。 5.指向空的…

OmniGraffle

安裝 在mac上安裝OmniGraffle&#xff0c;找一個正版或者啥的都行&#xff0c;安裝好后&#xff0c;可以直接在網上找一個激活碼&#xff0c;然后找到軟件的許可證&#xff0c;進行添加即可。 使用 新建空白頁 然后圖形啥的看一眼工具欄就知道了&#xff0c;顏色形狀還是挺…

音視頻項目—基于FFmpeg和SDL的音視頻播放器解析(二十一)

介紹 在本系列&#xff0c;我打算花大篇幅講解我的 gitee 項目音視頻播放器&#xff0c;在這個項目&#xff0c;您可以學到音視頻解封裝&#xff0c;解碼&#xff0c;SDL渲染相關的知識。您對源代碼感興趣的話&#xff0c;請查看基于FFmpeg和SDL的音視頻播放器 如果您不理解本…

【C++】拷貝構造函數,析構函數詳解!

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;個人主頁 &#xff1a;阿然成長日記 …

【LeetCode】挑戰100天 Day13(熱題+面試經典150題)

【LeetCode】挑戰100天 Day13&#xff08;熱題面試經典150題&#xff09; 一、LeetCode介紹二、LeetCode 熱題 HOT 100-152.1 題目2.2 題解 三、面試經典 150 題-153.1 題目3.2 題解 一、LeetCode介紹 LeetCode是一個在線編程網站&#xff0c;提供各種算法和數據結構的題目&…

Vue3 實現elementPlus的table列寬調整和拖拽

1、需要的包 // 除了Vue和element-plus外還需要以下的包 npm install sortablejs2、具體代碼如下&#xff0c;可直接粘貼運行 <template><div class"draggable-table"><el-table ref"tableRef":data"tableData.data":key"…