比赛链接

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 场周赛相关推荐

  1. Acwing第 38 场周赛【完结】

    目录 4299. 删点[签到] 4300. 两种操作[BFS] 4301. 截断数列[枚举] 4299. 删点[签到] https://www.acwing.com/problem/content/4 ...

  2. Acwing 第 95 场周赛

    Powered by:NEFU AB-IN Link 文章目录 Acwing 第 95 场周赛 A AcWing 4873. 简单计算 题意 思路 代码 B AcWing 4874. 约数 题意 思路 ...

  3. Acwing第72场周赛+Leetcode第314场周赛

    Acwing第72场周赛 第一题:AcWing 4624. 最小值 分析:向下取整可以用到math.h头文件中的floor()函数,最后输出时套用两个min()函数求三个数的最小值即可. 代码: #i ...

  4. AcWing——第55场周赛

    AcWing--第55场周赛 竞赛 - AcWing 4479. 最长子序列 - AcWing题库 给定一个长度为 n 的序列 a1,a2,-,an 和一个长度为 m 的序列 b1,b2,-,bm. ...

  5. Acwing 第 91 场周赛

    Powered by:NEFU AB-IN B站直播录像! Link 文章目录 Acwing 第 91 场周赛 A AcWing 4861. 构造数列 题意 思路 代码 B AcWing 4862. ...

  6. Acwing 第 89 场周赛

    Powered by:NEFU AB-IN B站直播录像! Link 文章目录 Acwing 第 89 场周赛 A AcWing 4803. 满足的数 题意 思路 代码 B AcWing 4804. ...

  7. Acwing第 29 场周赛【完结】

    TLE场 目录 4194. Pow[签到] 4195. 线段覆盖[离散化+差分] 4196. 最短路径[最短路] 4194. Pow[签到] https://www.acwing.com/proble ...

  8. Acwing第 21 场周赛【完结】

    这场比赛是有史以来,最拉的一场.开始太慌了,第一题没看数据范围直接开始写.wa了四发后,才发现可以暴力. 第二题超时的模拟,规律一直没有找出来.总之,状态及其不好掉了大分.无语. 目录 3997. 整 ...

  9. 【AcWing周赛】AcWing第85场周赛

    目录 <一>Acwing 4791. 死或生 一.题目 1.原题链接 2.题目描述 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 <二>Acwing 4792. 最 ...

最新文章

  1. [CSS]复选框单选框与文字对齐问题的研究与解决.
  2. Linux文件的权限[srwxr-xr-x]
  3. 线程/协程/异步的编程模型(CPU利用率为核心)
  4. 什么是分布式任务调度
  5. C#开发微信门户及应用(32)--微信支付接入和API封装使用
  6. 使用tomcat+eclipse搭建javaweb基础开发环境
  7. linux校园网设计方案,linux在校园网的应用方案.doc
  8. HTTP代理怎样使用
  9. 基于SSM实现的网上书城系统【附源码】(毕设)
  10. centos8安装docker使用smartdns+adguardhome,完美高效加速dns和去广告
  11. Team building | 什么?团建还能这么玩?
  12. SQL 限定返回行数
  13. 构建自定义安全令牌服务
  14. 文件路径名太长导致IAR编译报错:Fatal Error[Pe1696]: cannot open source file
  15. matlab quiver函数添加图例(比例尺、参考矢量)
  16. 【UEFI基础】EFI_HANDLE
  17. 实现页面头的选择效果(自用)
  18. 使用正则表达式 匹配 HTML 标签内的内容
  19. MATLAB 迷宫游戏
  20. canvas多维空间文本粒子js特效

热门文章

  1. Python使用XGBoost
  2. Latex 图像总是出现在目标页的下一页置顶
  3. ubuntu 16.04 远程挂载硬盘
  4. 第三周课程总结&实验报告一
  5. C#Const与static readonly的区别
  6. SQL*Plus 系统变量之32 - NEWP[AGE]
  7. python篇第10天【While 循环语句】
  8. 程序猿能力矩阵 — 敢測吗?看自己在哪个档次
  9. WordPress社会化评论插件多说、有言、灯鹭、评论啦
  10. 深圳卫视 - 饭没了秀