Acwing第 38 场周赛
比赛链接
https://www.acwing.com/activity/content/introduction/96/
A.删点(暴力)
思路
我们用两个个变量记录y轴左边和右边的值的个数就好了,如果有一边数量小于等于1的话,那么说明是存在的
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fint dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
int t,n,m,q,a[N],b[N];
void slove(){cin>>n;int l = 0,r = 0;for(int i = 1;i <= n; ++i) {cin>>a[i]>>b[i];if(a[i] < 0) l ++;else r++;}if(l <= 1 || r <= 1) cout<<"Yes"<<endl;else cout<<"No"<<endl;}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);t = 1 ;while(t--){slove();}return 0;
}
B.两种操作(BFS)
思路
因为只有俩种操作,一个是乘二,一个是减一,我们可以直接BFS然后寻找第一个操作为n的步数,不过这样可能会超时,所以我们做一点小小的优化,如果n是大于m的,那么直接输出n−mn-mn−m就好了,因为我们只有一个减1的操作能变小我们的值,否则我们就进行BFS,还有要注意的是,我们搜的值最大为2×max(n,m)2\times max(n,m)2×max(n,m),最小为1,所以这些也要加入我们的判断,最后再加一个vis数组作标记去除重复的步骤
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fint dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
int t,n,m,q,a[N];
map<int,bool> vis;void slove(){cin>>n>>m;int len = 2 * m;queue<PII> que;que.push({n,0});if(m < n){cout<<(n-m)<<endl;return;}while(!que.empty()){PII t = que.front();que.pop();if(vis[t.first]) continue;vis[t.first] = true;if(t.first == m) {cout<<t.second<<endl;return;}int tt = t.first * 2;if(tt < len && !vis[tt]){que.push({tt,t.second+1});}tt = t.first - 1;if(tt > 0 && !vis[tt]){que.push({tt,t.second+1});}}}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);t = 1;while(t--){slove();}return 0;
}
C. 截断数列(暴力+枚举)
思路
因为数据范围很小,所以我们直接枚举一下可能分割成的值,然后再check一下,我们能发现能分割的值的范围为[0,450)[0,450)[0,450)也可以认为是[0,sum/2][0,sum/2][0,sum/2],因为至少要分割成两部分嘛,然后我们check要判断是否能分割成大于1块数列,并且最后刚好为一整块,详情请看代码
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fint dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
int t,n,m,q,a[N],pre[N];
map<int,bool> vis;
map<int,bool> maybe;bool check(int k){int res = 0,cnt = 0;for(int i = 1;i <= n; ++i) {res += a[i];if(res == k) res = 0,cnt++;else if(res > k) return false;}if(res == 0 && cnt > 1)return true;elsereturn false;
}void slove(){string s;cin>>n>>s;for(int i = 1;i <= n; ++i) a[i] = s[i-1] - '0';string ans = "NO";for(int i = 0;i < 900; ++i) {if(check(i)){ans = "YES";break;}}cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);t = 1;while(t--){slove();}return 0;
}
Acwing第 38 场周赛相关推荐
- Acwing第 38 场周赛【完结】
目录 4299. 删点[签到] 4300. 两种操作[BFS] 4301. 截断数列[枚举] 4299. 删点[签到] https://www.acwing.com/problem/content/4 ...
- Acwing 第 95 场周赛
Powered by:NEFU AB-IN Link 文章目录 Acwing 第 95 场周赛 A AcWing 4873. 简单计算 题意 思路 代码 B AcWing 4874. 约数 题意 思路 ...
- Acwing第72场周赛+Leetcode第314场周赛
Acwing第72场周赛 第一题:AcWing 4624. 最小值 分析:向下取整可以用到math.h头文件中的floor()函数,最后输出时套用两个min()函数求三个数的最小值即可. 代码: #i ...
- AcWing——第55场周赛
AcWing--第55场周赛 竞赛 - AcWing 4479. 最长子序列 - AcWing题库 给定一个长度为 n 的序列 a1,a2,-,an 和一个长度为 m 的序列 b1,b2,-,bm. ...
- Acwing 第 91 场周赛
Powered by:NEFU AB-IN B站直播录像! Link 文章目录 Acwing 第 91 场周赛 A AcWing 4861. 构造数列 题意 思路 代码 B AcWing 4862. ...
- Acwing 第 89 场周赛
Powered by:NEFU AB-IN B站直播录像! Link 文章目录 Acwing 第 89 场周赛 A AcWing 4803. 满足的数 题意 思路 代码 B AcWing 4804. ...
- Acwing第 29 场周赛【完结】
TLE场 目录 4194. Pow[签到] 4195. 线段覆盖[离散化+差分] 4196. 最短路径[最短路] 4194. Pow[签到] https://www.acwing.com/proble ...
- Acwing第 21 场周赛【完结】
这场比赛是有史以来,最拉的一场.开始太慌了,第一题没看数据范围直接开始写.wa了四发后,才发现可以暴力. 第二题超时的模拟,规律一直没有找出来.总之,状态及其不好掉了大分.无语. 目录 3997. 整 ...
- 【AcWing周赛】AcWing第85场周赛
目录 <一>Acwing 4791. 死或生 一.题目 1.原题链接 2.题目描述 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 <二>Acwing 4792. 最 ...
最新文章
- [CSS]复选框单选框与文字对齐问题的研究与解决.
- Linux文件的权限[srwxr-xr-x]
- 线程/协程/异步的编程模型(CPU利用率为核心)
- 什么是分布式任务调度
- C#开发微信门户及应用(32)--微信支付接入和API封装使用
- 使用tomcat+eclipse搭建javaweb基础开发环境
- linux校园网设计方案,linux在校园网的应用方案.doc
- HTTP代理怎样使用
- 基于SSM实现的网上书城系统【附源码】(毕设)
- centos8安装docker使用smartdns+adguardhome,完美高效加速dns和去广告
- Team building | 什么?团建还能这么玩?
- SQL 限定返回行数
- 构建自定义安全令牌服务
- 文件路径名太长导致IAR编译报错:Fatal Error[Pe1696]: cannot open source file
- matlab quiver函数添加图例(比例尺、参考矢量)
- 【UEFI基础】EFI_HANDLE
- 实现页面头的选择效果(自用)
- 使用正则表达式 匹配 HTML 标签内的内容
- MATLAB 迷宫游戏
- canvas多维空间文本粒子js特效