Codeforces #440.Div.2
A - Search for Pretty Integers
题目大意:
给两组数。给一个叫“pretty integer”的定义。
如果这个数至少有一位来自第一个数组,又有一位来自第二个数组,那么这个数就是 pretty integer。
要求找出最小 pretty integer。
输入一行两个整数:n,m。分别代表接下来的两个数组大小(n,m ∈ [1,9])。
输入一行n 个整数:代表第一个数组(n[i] ∈ [1,9])。
输入一行m 个整数:代表第二个数组(m[i] ∈ [1,9])。
输出一行一个整数:代表所得出的最小 pretty integer。
样例输入:2 3 8 8
4 2 1 2 3 4 5 6 7 8
5 7 6 8 7 6 5 4 3 2 1
样例输出:25 1
解题思路:
暴力查询组合所有符合题意的数,不断更新最小值,如果组合出11的倍数,最小值更新成1,2,3...等等。
A C 代码:
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 int n = sc.nextInt(); 8 int m = sc.nextInt(); 9 int a[] = new int[n]; 10 int b[] = new int[m]; 11 for(int i = 0;i < n;i ++){ 12 a[i] = sc.nextInt(); 13 } 14 for(int i = 0;i < m;i ++){ 15 b[i] = sc.nextInt(); 16 } 17 Arrays.sort(a); 18 Arrays.sort(b); 19 int ans = 10000000; 20 for(int i = 0;i < n;i ++){ 21 for(int j = 0;j < m;j ++){ 22 if(a[i] == b[j]){ans = Math.min(ans,a[i]); } 23 ans = Math.min(ans,Math.min(a[i],b[j]) * 10 + Math.max(a[i],b[j])); 24 } 25 } 26 System.out.println(ans); 27 } 28 } 29 }
View Code
B - Maximum of Maximums of Minimums
题目大意:
给出一组数,将这组数分割成若干个集合。
求出每个集合中的最小值的最大值的最大可能值。
输入一行两个整数:n,k。n代表接下来有n个数,k代表恰好分成若干个区间(1 <= k <= n <= 1e5)。
输入一行n 个整数:代表被分割的集合(每个数字 ∈ [-1e9,1e9])。
输出一行一个整数:代表得出的最大值。
样例输入:5 2 5 1
1 2 3 4 5 -4 -5 -3 -2 -1
样例输出:5 -5
解释样例:
第一个集合被拆分成两个有如下可能:
可以被拆分成{1}{2,3,4,5},最大值是2;
可以被拆分成{1,2}{3,4,5},最大值是3;
可以被拆分成{1,2,3}{4,5},最大值是4;
可以被拆分成{1,2,3,4}{5},最大值是5;
所以输出5。
解题思路:
本题稍作思考,即可发现规律。
正好被分成一个集合,最大值就是这组数据的最小值。
大于等于3个集合,最大值就是这组数据的最大值。
只需将最大值独立出来,剩下的集合分成两个集合,就能得到这个答案。
若恰好分成两个集合,从解释样例一可以看出,只需要比较这组数据的第一个值与最后一个值,然后输出这两个中的较大值即可。
A C 代码:
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 int n = sc.nextInt(); 8 int k = sc.nextInt(); 9 int m[] = new int[n]; 10 int max = -1000000002; 11 int min = 1000000002; 12 for(int i = 0;i < n;i ++){ 13 m[i] = sc.nextInt(); 14 if(m[i] > max){max = m[i];} 15 if(m[i] < min){min = m[i];} 16 } 17 if(k == 1){System.out.println(min);} 18 else if(k == 2){System.out.println(Math.max(m[0],m[n - 1]));} 19 else{System.out.println(max);} 20 } 21 } 22 }
View Code
C - Maximum splitting
题目大意:
求任意一个数能否被分成若干个合数的和(合数,即非素数,不包括1和0)。若能,输出最多能分割的数量,若不能输出 -1。
输入一行一个整数:q,代表共有多少个数被判断(q ∈ [1,1e5])。
输入q 行q 个整数:每个数都进行上述计算(q[i] ∈ [1,1e9])。
输出q 行q 个整数:代表得出的结果。
样例输入:1 2 3
12 6 1
8 2
3
样例输出:3 1 -1
2 -1
-1
解题思路:
根据样例,1,2,3都输出 -1。
要想拆分的最多,应该保证每个合数都尽可能小。
因为最小的合数是4,最小的奇数和数是9,但是不是所有偶数都能被4整除,所以需要引进第二个合数6。
然后思路十分明确,奇数先减9,然后一直减6直到剩下的数能被4整除。偶数则不需要减9,直接进行后面的计算。
A C 代码:
1 import java.util.*; 2 3 public class Main{ 4 5 public static void main(String[] args){ 6 Scanner sc = new Scanner(System.in); 7 while(sc.hasNext()){ 8 int n = sc.nextInt(); 9 for(int I = 0;I < n;I ++){ 10 int ans = 0; 11 int t = sc.nextInt(); 12 if(t <= 3){System.out.println("-1");} 13 else if(t == 5 || t == 7 || t == 11){System.out.println("-1");} 14 else{ 15 if(t % 2 == 1){t = t - 9;ans ++;} 16 while(t % 4 != 0){ 17 t = t - 6; 18 ans ++; 19 } 20 ans = ans + t / 4; 21 System.out.println(ans); 22 } 23 } 24 } 25 } 26 }
View Code
转载于:https://www.cnblogs.com/love-fromAtoZ/p/7736147.html
Codeforces #440.Div.2相关推荐
- Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
一场挺简单的CF,但是我打炸了啊 A. Search for Pretty Integers time limit per test 1 second memory limit per test 25 ...
- 【codeforces】【比赛题解】#872 CF Round #440 (Div.2)
链接. [A]寻找漂亮数字 题意: 给定了两列非零数字. 我们说一个数是漂亮的,当它的十进制表达中有至少一个数从数列一中取出,至少有一个数从数列二中取出. 最小的漂亮数字是多少? 输入: 第一行两个数 ...
- [Codeforces] #603 (Div. 2) A-E题解
[Codeforces]1263A Sweet Problem [Codeforces]1263B PIN Code [Codeforces]1263C Everyone is a Winner! [ ...
- Codeforces #539 (Div. 1) A. Sasha and a Bit of Relax (异或 前缀和)
题目连接: https://codeforces.com/problemset/problem/1109/A 题目大意: 给定n个数 问有多少个偶数长度的区间l,r 使得mid=(l+r-1)/2,l ...
- Codeforces CodeCraft-20 (Div. 2) C. Primitive Primes
链接:http://codeforces.com/contest/1316/problem/C 题意: 给出两个方程: f(x)=a0+a1x+a2x2+...+an−1xn−1g(x)=b0+b1x ...
- Codeforces #594 (Div. 1) A. Ivan the Fool and the Probability Theory(DP)
原题链接:https://codeforces.com/contest/1239/problem/A 大佬用来热身的小题 而我却迟迟想不出来 当n和m都为1的时候显然只有两种情况 当n为1,m不为1的 ...
- Codeforces #264 (Div. 2) D. Gargari and Permutations
Gargari got bored to play with the bishops and now, after solving the problem about them, he is tryi ...
- codeforces #222 div 1 D Developing Game
很神奇的线段树 #include<iostream> #include<cstdio> #include<algorithm> #include<cstrin ...
- (Incomplete) Codeforces #395 (Div 1 + Div 2)
A. Taymyr is calling you 数据比较小,可以枚举每一次call的时间i*n, 然后检查 (i*n) % m 是否为0.如果为0,则答案加一.这种方法不需要想太多也不需要写太多. ...
最新文章
- 实现费用管理 mysql_移动电费房租管理系统的设计与实现(IDEA,MySQL)
- c语言中说取消标识符是,2019年全国计算机二级C语言考试考点解析(3)
- 完美世界手游不显示新服务器,完美世界手游手Q互通-黑曜开服时间表_完美世界手游新区开服预告_第一手游网手游开服表...
- collapse mode 严重_从泛化性到Mode Collapse:关于GAN的一些思考
- 项目奖金一般有多少_全年一次性奖金如何进行纳税筹划?
- 电大 计算机应用基础 专科 教材,2016年电大计算机应用基础(专科).doc
- php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...
- python md5解密_python 生成文件MD5码
- unity怎么bake地形上的植被_“烧烤”是quot;barbecuequot;,那“烤串”的英语怎么说?一定要看看!...
- html页面如何接受提示参数,html页面如何象asp一样接受参数_javascript教程
- python phpstudy_phpStudy后门分析及复现
- 训练BERT,我只花了一半的时间
- 全新激光雕刻机切割机打标机写字机三轴步进电机运动控制板 控制板硬件软件全部是自己开发的
- 【机器人学习】机器人轨迹规划A※算法代码
- 华为鸿蒙麒麟玉兔_鸿蒙、麒麟、鲲鹏……这是属于中华的浪漫
- AltiumDesigner 如何快速查看任意两个元器件或者芯片的布线网络线长!
- python发送cmd命令_python 执行终端/控制台命令的例子 如何使用python在同一个控制台发送cmd命令...
- 加州房价预测数据预处理
- Bmob后端云——Android再也不担心没有后台了
- 实验四+070+胡阳洋
热门文章
- foreach形式的for语句
- Keil Debug(printf) Viewer的使用
- 程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26
- 第一个程序---汇编学习笔记
- CPU处理器架构和工作原理浅析
- [以太坊源代码分析]III. 挖矿和共识算法的奥秘
- Android Linker学习笔记
- Hyperledger Fabric 排序服务核心原理和工作过程
- python打架动态图_20个GIF动图解释令程序员崩溃的瞬间 - 里维斯社
- python数据分析第七章实训3_《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结...