牛客IOI周赛20-普及组

完全数

牛客的签到题,最暴力的做法就是把数每个因子罗列出来,但是这样只有60的暴力分,我们从题目的数据可以看到数据范围是1e7的,在学习素数的时候我们知道一个因子就能推出另一个因子,所以我们没必要从1判断到n-1直接i*i <= n就能找到所有的因子,但是注意像16这样的数,当我们的i为4的时候,这个4的因子只能算一次
Code:

#include<bits/stdc++.h>
using namespace std;
int main()
{long long  n;scanf("%lld",&n);long long  sum = 1;for(long long  i = 2; i * i <= n; ++i) {if(n % i == 0)sum += n/i == i? 0 : n/i + i ;//判断是否是重因子}if(sum > n) {puts("Late");} else if(sum == n) {puts("Pure");} else if(sum < n) {puts("Early");}return 0;
}

移动撤销

解题思路:这个题是一个模拟题,我们先记录牛牛的操作,然后在记录的时候每次遇到Z,就把上一个操作删掉最后直接按照没有Z的操作模拟,然后输出最终的坐标,注意这里的Z,可能Z的上一个位置没有任何操作,用栈的同学请注意空栈的情况
Code:

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;vector<char> V;char c;cin >> n;for(int i = 0; i < n; ++i) {cin>>c;if(c == 'Z') {if(V.size())//当V不为空的时候才进行撤销操作V.pop_back();} else {V.push_back(c);}}int x,y;x = y = 0;for(int i = 0; i < V.size(); ++i) {//直接模拟if(V[i] == 'W') {y++;} else if(V[i] == 'A') {x--;} else if(V[i] == 'S') {y--;} else if(V[i] == 'D') {x++;}}cout << x << " " << y << endl;//最后输出x和yreturn 0;
}

石头剪刀布

解题思路:牛牛要想分数拿的高,那么就要尽可能的不输,我们可以计算牛牛最多能赢的场数,然后再把赢的场数从游戏场数剪掉然后再计算平局可能的场数就是最高的分数,然后……然后就AC了呀
Code:

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int a1,b1,c1;int a2,b2,c2;cin>>a1>>b1>>c1;cin>>a2>>b2>>c2;int win1,win2,win3;//这是牛牛可能会赢的场数(分别对应着石头、剪刀、布)long long sum = 0;win1 = min(a1,b2);win2 = min(b1,c2);win3 = min(c1,a2);sum += win1 * 2;sum += win2 * 2;sum += win3 * 2;a1 -= win1;//这里分别减去牛牛赢的场数b2 -= win1;b1 -= win2;c2 -= win2;c1 -= win3;a2 -= win3;sum += min(a1,a2) + min(b1,b2) + min(c1,c2);//最后再把可能平局的场数加起来就好啦cout<<sum<<endl;return 0;
}

夹缝中求和

解题思路:我们要求范围在X和Y之间的不同数的两两组合,且i<j,很明显数的位置不重要,我们就可以队数组进行排序操作然后我们枚举i,找到满足条件的aj的范围,aj的范围是X到Y的,所以我们可以用二分查询找到j的范围(因为前面排过序了)
Code:

#include<bits/stdc++.h>
using namespace std;const int N = 100005;
int a[N];int find(int l,int r,int key)
{while(l+1<r){int mid=l+r>>1;if(a[mid]<=key)l=mid;elser=mid;}return r;
}int main()
{int n,x,y;scanf("%d%d%d",&n,&x,&y);for(int i = 0;i < n; ++i) {scanf("%d",&a[i]);}long long sum = 0;sort(a,a+n);for(int i = 0;i < n; ++i) {int k1 = x - a[i];int k2 = y - a[i];int loc1 = max(i+1,find(-1,n,k1 - 1));//找到满足条件的左边的位置int loc2 = max(loc1,find(-1,n,k2));//右边的位置sum += max(0,loc2 - loc1);}printf("%lld\n",sum);return 0;
}

当然这题还能用双指针做,但是不知道为什么我的双指针写出来炸了,然后写了个'单指针'?hh如果但看这个左边界或者有边界的话,我们可以直接写出一个0(N)的操作,然后我们会发现这样写的话会有值的重叠所以我们直接把考虑右边界的情况减去左边界的情况就OK啦,不懂的话可以手算一下哦
Code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int N = 100005;
int a[N];int main()
{int n,x,y;scanf("%d%d%d",&n,&x,&y);for(int i = 0;i < n; ++i) {scanf("%d",&a[i]);}sort(a,a+n);int l = 0, r = 0;long long sum = 0;for(int i = 0, j = n - 1 ;i < n; ++i) {//计算的是只考虑有边界的情况while(j > 0 && a[i] + a[j] > y) j--;if(j < i) break;sum += j - i;}for(int i = 0, j = n - 1 ;i < n; ++i) {//计算的是只考虑左边界的情况while(j > 0 && a[i] + a[j] >= x) j--;if(j < i) break;sum -= j - i;}printf("%lld\n",sum);}

第一次AK,++rp;

牛客IOI周赛20-普及组相关推荐

  1. 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解

    文章目录 逆序对 对序列 未曾设想的道路 牛客IOI周赛26-提高组 逆序对 这种套路之前已经见过几次了,肯定不是模拟操作数列 opt 1 对于i∈[1,l)⋃(r,n]i∈[1,l)\bigcup( ...

  2. 牛客IOI周赛27-普及组

    牛客IOI周赛27-普及组 A题(小H的小猫) (来源:nowcoder_牛客IOI周赛27-普及组_A题) 题目链接:https://ac.nowcoder.com/acm/contest/1915 ...

  3. 牛客IOI周赛22-提高组 华丽转身 C++

    牛客IOI周赛22-提高组 华丽转身 C++ 原题链接 在红星中学,一个年级一学年共有 n 场考试,每场考试都有 m 名同学参加,有一个巨佬叫李华 ,他已经不屑于通过AK考试来获得快感,于是他找到了一 ...

  4. 牛客IOI周赛22-普及组

    战争尾声 链接:https://ac.nowcoder.com/acm/contest/11038/A 来源:牛客网 当攻占主城成功的信号弹与敌人的子弹同时射出,信号弹照亮了民众对于和平的渴望与对于未 ...

  5. 牛客IOI周赛19-普及组 C.小y的旅行

    题目链接 题意 n个点m条边的无向图,最少需要删除多少条边,使得编号≤k\le k≤k的点不在一个环上. 思路 采用并查集将编号都大于K的边进行合并,这样相当于将一些无关的边进行缩点,然后再进行一次并 ...

  6. 牛客IOI周赛19-普及组 B.小y的序列

    题目链接 题意 长度为n的序列,最少需要修改多少个数字,满足a[i+1]=a[i]+i,i∈[2,n]a[i+1] = a[i] + i,\ i\in[2, n]a[i+1]=a[i]+i, i∈[2 ...

  7. 牛客IOI周赛16-普及组

    比赛链接 文章目录 求导 题目描述 题解: 猜数 题意: 题解: 方法一 贪心 方法二 暴力 答题卡 题意: 题解: 代码: 求导 链接: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

  8. 牛客IOI周赛22-普及组 路线规划 查并集

    路线规划 戳我找原题 成为热门手记人偶的薇尔莉特伊芙嘉登最近收到了非常多的委托,这些委托者分散在世界的各地,各个国家都有.但正值战争的尾声,穿行于各个国家之间是非常危险的,一路上会有许多的敌人,这些敌 ...

  9. 牛客IOI周赛17-普及组题解

    题目链接 A.夹娃娃 题意: 给定n个值ai给定n个值a_i给定n个值ai​ q次询问,每次给出l和rq次询问,每次给出l和rq次询问,每次给出l和r 求出区间l到r的和求出区间l到r的和求出区间l到 ...

  10. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他 ...

最新文章

  1. 同源策略Same-origin policy
  2. 101 Tips to MySQL Tuning and Optimization
  3. ExtJs ComboBox 在IE 下 自动完成功能无效的解决方案
  4. 完整机器学习项目的流程
  5. Codeforces Round #198 (Div. 1) B,C 动态规划
  6. JAVA蓝桥杯: 01字串
  7. maxcompute操作_MaxCompute问答整理之9月
  8. SQL Server 2005安装图解
  9. 安卓设备安全测试框架DTF
  10. 微软 android 输入法下载官网下载地址,微软五笔输入法官网下载_微软王码五笔输入法8689版官方下载-华军软件园...
  11. 国二java好过还是office好过,计算机二级考哪一个科目比较容易过,Ms office 较为简单实用...
  12. Arcgis中的空间插值
  13. 儿童车内滞留监测控制系统的设计
  14. asp实现注册登录界面_(01)ASP运行环境的搭建
  15. 计算机打开后任务栏有但桌面不显示不出来,任务栏不显示打开的窗口,教您打开的窗口在任务栏上显示不出来...
  16. 所罗门王的宝藏 思维
  17. mysql 伪表_伪表和伪列
  18. iOS直播:评论框与粒子系统点赞动画
  19. Acrobat 删除pdf页面
  20. 哪些数码好物值得在开学季入手,推荐几款数码好物

热门文章

  1. 管理学原理简答题和论述题
  2. windbg调试命令9(dt、d)
  3. 加扣扣群所有脚本免费使用
  4. Java之自定义异常类、常用类String、StringBuilder、StringBuffer、时间类和枚举类的学习
  5. vscode 是干什么用的_vscode这个软件有什么用
  6. read/write函数
  7. android.os.FileUriExposedException: file:///storage/emulated/0/1566547538954.jpg exposed beyond app
  8. “电脑族”保健六项注意
  9. 使用SQL查询物料最新采购价格的示例
  10. 计网-网络号、子网号、主机号以及子网网络地址,子网广播地址的算法