当前位置: 首页 > news >正文

萌新联赛第(三)场

C题

这道题用暴力去写想都不要想,一定超时,于是我们需要优化,下面是思路过程:

如图,本题只需找到x的因数个数和(n-x)的因数个数,这两个相乘,得到的就是对于这个x来说组合的个数,且x的取值为1~n,由题n取不到。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int num[N];//记录各个数字的因数个数
int main(){int n,ans=0;//ans方案种数cin>>n;for(int i=1;i<n;i++){  //遍历1~n的数字for(int j=1;j*j<=i;j++){  //求其因数个数if(i%j==0){num[i]++;  //由题知,A,B,C,D这四个数是有序的,因此每次判断都会有两个因数if(j*j!=i)num[i]++; //所以下面要+1,除非这两个数相等只需加1次}}}for(int i=1;i<n;i++){  //遍历和为n,加数所有可能的取值ans+=num[i]*num[n-i];//因数个数相乘即得对应的组合数}cout<<ans;return 0;
}

H题

本题乍一看很简单,就是求出每一个子集的和即可,但如何不重不漏的求出每一个集合我是真的不会,好的,换思路,利用贪心思想,将原集合排序,从第一个最小的数开始,逐步扩展可以表示的子集和范围,同时找到第一个无法表示的整数。因为已经排好序了,所以对于元素个数相同的集合来说,总是最前面的最小,而且代码的判断条件是a[i]>sum+1,那么sum + 1 就无法被表示,因为当前的子集和范围无法覆盖到 sum + 1,直接输出sum+1,相反,如果a[i]<=sum+1,说明当前子集很可能已经覆盖了sum+1,让a[i]与sum+1比较是否可以覆盖,同时也可以避免出现不同子集因元素个数的不同造成对应的子集和大小不同问题,因为如果a[i]>sum+1说明a[i]一定很大,那么毫无疑问元素多的集合的和一定比元素少的集合的和大,这样我们就可以实现由小到大逐步扩展子集和范围。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
long long a[N];
int main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n); //由小到大逐步排序long long sum=a[0]; //记录当前子集和的最大值for(int i=1;i<n;i++){if(sum+1<a[i]){   //比较当前子集和+1是否可以被下一个集合元素表示出来cout<<sum+1; //如果可以,输出,结束return 0;}else sum+=a[i]; //否则,继续累加}cout<<sum+1; //如果一直没在上面结束的话,此时sum代表全集的和,+1即是答案return 0;
}

D题

对于这道题需要知道一个知识点:

x+y=(x&y)+(x|y)

根据位运算性质,x&y和x|y满足:(x&y)&(x|y)=x&y

本题思路:

由于x&y=a;说明x>=a,y>=a,则x+y>=2a,即s>=2a——第一个判断条件

又由x&y=a,x+y=s和上述知识点知x|y=s-a。因此,a&(s-a)=a——第二个判断条件

如果第一个不满足的话,直接输出NO,程序结束,否则,继续判断第二个条件。

这样做的好处是不用一一枚举出来x,y的值

#include<bits/stdc++.h>
using namespace std;
int main(){int t;long long a,s;cin>>t;while(t--){cin>>a>>s;if(s<2*a){  //首先判断cout<<"No"<<endl;}else{  //继续深入判断if((a&(s-a))==a) cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;
}

比赛地址:https://www.nowcoder.com/acm/contest/110544。【邀请码:666666】

相关文章:

  • 电子制造企业智能制造升级:MES系统应用深度解析
  • 79、modelsim单独仿真altera带IP核的文件
  • 初识Linux · 数据链路层
  • 大模型应用开发“扫盲”——基于市场某款智能问数产品的技术架构进行解析与学习
  • 【图像大模型】Kolors:基于自监督学习的通用视觉色彩增强系统深度解析
  • C++ 读取英伟达显卡名称、架构及算力
  • Raft算法学习(1)博士论文大纲
  • Java并发进阶系列:jdk1.8的HashMap红黑树设计原理及其源代码深入解析(不含balanceDetection方法)
  • AI作曲革新:ACE-Step如何推动音乐创作走向大众
  • 直流无刷水泵方案之无感FOC控制---【其利天下技术】
  • 绿色免安装 批量重命名软件 标签管理,文件整理提升效率
  • Paillier加密方案的原理、实现与应用(vs)
  • 自定义geojson生成物体的样式
  • 前端流行框架Vue3教程:20. 插槽slot(2)
  • 数据库----软考中级软件设计师(自用学习笔记)
  • python训练营打卡第29天
  • 代码随想录算法训练营第60期第四十二天打卡
  • 第6天-Python操控摄像头:从入门到实战
  • 2156. 查找给定哈希值的子串
  • 8天Python从入门到精通【itheima】-20~22
  • 一箭六星!力箭一号遥七运载火箭发射成功
  • 以色列“全面接管”加沙“雷声大雨点小”:援助政策引内讧,美欧失去耐心
  • 东航C919航线上新!正式投入上海虹桥—深圳航线运营
  • 上海这场有温度的“人才集市”,为更多人才搭建“暖心桥”
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电