关于517编程的11月月赛—Nov.29 by Jasonxu

我是传送门


T1:umin之和

1.1题目

小海狸定义 umin为最小的没有在子集中出现过的非负整数。 小海狸有一组非负整数,他希望将这组数分为两个子集A和B,使得两个子集的 umin值之和最大。 请你告诉小海狸他可以得到的最大 umin之和是多少。
输入
第一行包含一个整数n(1≤n≤1001 )-非负整数的个数。
第二行包含n个整数a1,a2,…a n(0≤a i≤1000)。
输出:出一个整数,表示 umin(A)+umin(B)的最大值。


1.2解题思路

此题还算简单,根据题意我们可以用一个的思想完成


1.3样例

输入:
6
0 2 1 5 0 1
输出:
5

输入:
3
0 1 2
输出:
3

输入:
6
1 2 3 4 5 6
输出:0


tips:
子任务一:30分,满足1≤n≤101;
子任务二:30分,满足1≤n≤501 ;
子任务三:40分,满足1≤n≤1001。
在第一个测试用例中,A = {0,1,2},B = {0,1,5}是一个可能的选择,umin(A)+umin(B)=3+2=5。
在第二个测试用例中,A = {0,1,2},B =∅是一个可能的选择,umin(A)+umin(B)=3+0=3。
在第三个测试用例中,A = {1,3,5},B = {2,4,6}是一个可能的选择,umin(A)+umin(B)=0+0=0。


1.4 CODE(桶思想)

#include<bits/stdc++.h>//万能头文件
using namespace std;
int cnt[110];
int main()
{int n;cin>>n;int x; for(int i=1;i<=n;i++){cin>>x;cnt[x]++;}int a=0;while(cnt[a]>=1){a++;}//前半段中的最小int b=0;while(cnt[b]>=2){b++;}//后半段里的最小 cout<<a+b;//相加return 0;//每天一个好习惯
}

T2:最大乘积

2.1:题目

小海狸有 n 个整数,他想从中选出五个数,使得这五个数的乘积最大。 请你告诉小海狸他可以得到的最大乘积是多少。


输入:
第一行是一个整数n(5≤n≤105),表示整数个数。
第二行包含 n个整数a1,a2,…,a n(−3×10^3≤a [i]≤3×10^3)
输出:输出一个数表示可能的最大乘积。

2.2:解题思路

首先考虑绝对值大小(排序),在满足绝对值相对大的同时,列举所有可能性(循环),选出最大值。


2.3:样例

输入:
5
-1 -2 -3 -4 -5
输出:
-120

输入:
6
-1 0 0 0 -1 -1
输出:
0

输入:
6
-9 -7 -5 -3 -2 1
输出:
945


tips:
子任务一:30分,满足5≤n≤10;
子任务二:30分,满足5≤n≤10的三次方;
子任务三:40分,满足5≤n≤10的五次方。
在第一个测试用例中,最佳选择:
(-1)⋅(-2)⋅(-3)⋅(-4)⋅(-5)=-120。
在第二个测试用例中,最佳选择:
(-1)⋅0⋅0⋅0⋅(−1)= 0。
在第三个测试用例中,最佳选择:
(−9)⋅(−7)⋅(−5)⋅(−3)⋅1= 945。


2.4CODE

#include<bits/stdc++.h>//万能头文件
using namespace std;
int main()
{int n; cin>>n; int a[100001];for(int i=1;i<=n;i++){cin>>a[i];//输入}sort(a+1,a+1+n); //sort排序long long ret=-1e18;for(int i=0;i<=5;i++){long long num=1;for(int j=1;j<=i;j++){num*=a[j];}//正数for(int j=0;j<5-i;j++){num*=a[n-j];}//负数if(num>ret) ret=num;//最大值比大小} cout<<ret;//输出最大值return 0;
}

T3:优美对

3.1题目:

小海狸有一个长度为 n 的数组,他将序列中满足i<j且 ai & aj​≥ai​⊕aj的 (i,j) 称为优美对​,其中 & 为按位与操作,⊕为按位异或操作。 请你告诉小海狸他的序列中存在多少个优美对。


输入:
第一行:包含一个正整数 n(1≤n≤10^5)-数组的长度。
第二行:包含 n个正整数 a i(1≤a i≤10^9)-数组的元素。
输出:输出一个整数表示优美对的数量。


3.2解题思路:

些许的暴力枚举+或与与运算的基础知识=AC代码!
但先让我们复习一下或/与运算:
与运算:同为1才是1
异或运算:不同才为1
(以上的运算指两数在二进制下)
剩下的都交给暴力和RP了


3.3样例

输入:
5
1 4 3 7 10
输出:
1

输入:
3
1 1 1
输出:
3

输入:
2
2 4
输出:
0


tips:
子任务一:30分,满足1≤n≤10;
子任务二:30分,满足1≤n≤10^3;
子任务三:40分,满足1≤n≤10^5。
在第一个测试用例中,只有一个优美对:
(4,7):4&7 = 4,4⊕7= 3。
在第二个测试用例中,所有都是优美对。
在第三个测试用例中,没有优美对。


3.4CODE

#include<bits/stdc++.h>
using namespace std;
int cnt[33];
int main()
{int n,x;cin>>n;long long ret=0;for(int i=0;i<n;i++){cin>>x;int pos=-1;//先确认x的最高位for(int j=30;j>=0;j--){if(x&(1<<j)){pos=j;break;}}//pos表示当前x的最高位ret+=cnt[pos];cnt[pos]++;}cout<<ret;//输出完美对个数return 0;
}

T4:小海狸的传染病

4.1题目

小海狸班里有 n+1个同学,每个同学都有一个号码。小海狸不幸感染了新冠,之后若干天小海狸的同学们可以改变他们的号码,但是所有同学号码的数字之和不变。初始时和每天改变号码后所有患新冠的人都会传染给所有跟他号码相同的人。问至少几天后小海狸可以感染所有人。


输入:
第一行:
包含两个整数 n 和 x(2≤n≤10^5,−4000≤x≤4000)-小海狸的同学数以及小海狸的号码。
第二行:
包含 n 个整数a1,a2,…,an(−4000≤a i≤4000)-初始时小海狸的同学们的号码。
输出:
输出小海狸感染班级所有人的最少天数。


4.2解题思路:

一道有点难度的暴力题(至少对想我一样阅读理解渣渣非常不友好)
通过阅读题目我们发现无论数据如何变化,最多两天全班都能传染
综上所述可以将情况分为4种:
1.若小海狸的同学初始号码全部与小海狸的号码相同,
则0天就能传染全班。
2.若有同学号码与小海狸相同,要一天才能传染全班
3.若在没有同学号码与小海狸相同的情况下,且全班同学号码相同,则要一天时间传染全班
4.若以上请款均未满足,就至少要两天才能传染全班


有了这四种分类,暴力枚举岂不是手到擒来?

4.3样例

输入:
2 69
68 70
输出:
1

输入:
6 4
4 4 4 4 4 4
输出:
0

输入:
9 38
-21 83 50 -59 -77 15 -71 -78 20
输出:
2


tips:
子任务一:30分,满足2≤n≤10;
子任务二:30分,满足2≤n≤10^2;
子任务三:40分,满足2≤n≤10^3;
在第一个测试用例中:
可以使所有同学号码改为69。第一个同学的号码增加1,第二个同学的号码减少1,因此所有更改的总和不变。

在第二个测试用例中:
所有同学(包括小海狸)的号码都为4,因此所有同学都将立即被感染。


4.4CODE

#include<bits/stdc++.h>//万能头文件
using namespace std;
int a[10001];
int main()
{int m,n;cin>>n>>m;//分别输入小海狸的同学数以及小海狸的号码for(int i=1;i<=n;i++){cin>>a[i];//输入数据}int sum=0;for(int i=1;i<=n;i++){sum+=a[i];//计算号码的总和}int k=0;for(int i=1;i<=n;i++){if(a[i]==m) k++;//计算有几个人的号码与小海狸的相同} if(k==n){cout<<0;//情况一}else if(k>0){cout<<1;//情况二}else if(sum==n*m){cout<<1;//情况三}else cout<<2;//情况四//四种情况对应条件可以查看前题意理解部分
}

Happy end!!! ——作者:Jasonxu
有疑问请留言谢谢!

关于517编程的11月月赛相关推荐

  1. 安恒赛php_安恒11月月赛周周练writeup

    前言 11月月赛 完美错过时间,正好有周周练,基本都是一样月赛的web,记录下write up 手速要快 这题是10月月赛中的一题,直接看我上次的writeup:安恒月赛(十)web-2题writeu ...

  2. csu-2018年11月月赛Round2-div1题解

    csu-2018年11月月赛Round2-div1题解 A(2191):Wells的积木游戏 Description Wells有一堆N个积木,标号1~N,每个标号只出现一次 由于Wells是手残党, ...

  3. 上海11月月赛乙组解题报告

    上海11月月赛乙组解题报告 1.数对统计 题目描述 给定 n 个数字 a1,a2,--,an,请从中挑选两个数字,并按原顺序组成一个数对.请问能选出多少种不完全相等的数对? 输入格式 第一行,单个整数 ...

  4. 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心

    题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi​,地面的高度是 h_0 = 0 ...

  5. 上海2022年11月月赛丙组

    上海2022年11月月赛丙组 T1~T4略 T5 出栈序列 题目描述 给定一个长度为 n n n的.仅由小写字母组成的字符串,将其按序依次放入栈中. 请问在所有可能的出栈序列中,字典序最小的出栈序列是 ...

  6. 【FOJ2207 11月月赛C】【DFS栈性质应用 离线处理】以撒的结合 从x到y路径上的第k个点 询问众多

     Problem 2207 以撒的结合 Accept: 30    Submit: 98 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Probl ...

  7. 华硕编程竞赛11月JAVA专场 A题自由弹簧 题解

    作者主页:Designer 小郑 作者简介:软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue.SpringBoot和微信小程序).系统定制.远程技术指导.CSDN学院 ...

  8. 洛咕11月月赛部分题解 By cellur925

    听说是你谷史上最水月赛?我不听我最菜 T1:终于结束的起点 月天歌名好评 给你一个模数 \(M\),请你求出最小的 \(n > 0\),使得\(fib(n)\) \(mod\) \(m=0\), ...

  9. 2021年第11月月赛题解akoj

    A.4和7? B.棋盘!! C.分数!!! D.小J和他的复习计划 E. 进度条 F 车牌号匹配 G.Happy Number H.给你一个签到题 I.砝码问题 J.阵前第一功 问题A解题思路 贪心, ...

最新文章

  1. PL/SQL Developer远程访问Oracle数据库
  2. 代码的印象派:写点好代码吧
  3. 编程python爬取网页数据教程_实例讲解Python爬取网页数据
  4. Python实训day03pm【列表生成式、非文本文件的读写与复制、文本文件读写练习】
  5. LeetCode 2057. 值相等的最小索引
  6. mysql case默认_MySQL知识整理10.1—存储过程和函数
  7. 拓端tecdat|R语言用回归构建配对交易(Pairs Trading)策略量化模型分析股票收益和价格
  8. html5 加上魔法,简单易懂的React魔法(28):是时候添加一些CSS样式了
  9. 图神经网络-图与图学习笔记-中
  10. 联想A590刷机方法
  11. 控制网平差(C++实现)
  12. MSN账号被盗,成功找回记
  13. VS间接寻址级别不同
  14. C语言—各种数据类型间的混合运算
  15. linux ntfs 安装教程,Linux NTFS文件系统安装教程
  16. 【渝粤教育】广东开放大学 动画运动规律 形成性考核 (25)
  17. 如何轻松搭建Java安卓开发环境
  18. 2021年中国百强区总体发展概况分析:深圳南山区、广州天河区、深圳福田区等城区高质量发展水平领跑全国[图]
  19. 湖南大学的计算机网络,林亚平-湖大信息科学与工程学院
  20. isp,iap,sw-jtag

热门文章

  1. 不规格图片等比例展示---上下/左右留白
  2. PLC无线通讯方案,支持西门子,三菱,欧姆龙,台达等各品牌PLC
  3. Centos搭建服务
  4. 最贴近京东首页体验的嵌套滑动吸顶效果
  5. FuntouchOS跟鸿蒙系统,FuntouchOS10.5安装包
  6. 零基础大数据应该学什么
  7. 阿里云ACP云计算错题集71-100
  8. 2022电大国家开放大学网上形考任务-人力资源管理非免费(非答案)
  9. excel 交互式图表_创建一个交互式Excel图表
  10. python matplotlib坐标轴刻度设置