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.mzph.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"…