题目链接1 题目链接2
又是一场和库里布莱恩特的菜鸡互啄,这次还是三星gym,还是两个人一起做,比上次还惨,才6个题。
这场的题感觉很简单,就是有点坑,第二题是多组输入但题里并没有说,骰子那题也是大水题,就是题意难懂,机器人那题也是题目简单,但题意难懂。分块除法,新知识点。BR那题,转化,然后求最大子段和,没想到。还有就是二分,二分真的太好用了。
Gym - 101652Z Forbidden Zero
最简单的一道题,意外拿到了一血。while循环找下一个数,知道找到一个不各个位中不包含0的数,输出即可。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym - 101652N Odd Palindrome
这道题有点迷,感觉题里的描述和AC的代码不符合。直接判断字符串长度就行就AC了......可能是数据太水了吧,谁知道呢
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define mes(a, val) memset(a, val, sizeof a)
#define mec(b, a) memcpy(b, a, sizeof a)
string s;
int main()
{
cin>>s;
int n = s.length();
if(n & 1)cout<<"Odd."<
Gym 101652O Latin Squares
这题本来本简单,就是有一个大bug,就是这道题是多组输入,但是题目中并没有说......
用set或者用数组模拟都行,如果不是Latin Squares的话就输出No,如果是“Latin Squares的话,再判断第一行和第一列是不是升序,如果都是升序的话输出Reduced,否则输出Not Reduced。
贴一下库里布莱恩特的代码(代码风格不忍直视......一条语句还加括号)
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define mes(a, val) memset(a, val, sizeof a)
#define mec(b, a) memcpy(b, a, sizeof a)
const int maxn = 50;
int a[maxn][maxn];
int n;
int visr[maxn], visc[maxn];
sets;
int main()
{
char ch;
while(scanf("%d",&n)!=EOF){
for(int i = 1; i <= n; i ++){
for(int j = 1; j <= n; j ++){
cin>>ch;
if(ch >= '0' && ch <= '9'){
a[i][j] = ch-'0';
}
else if(ch >= 'A' && ch <= 'Z'){
a[i][j] = ch-'A'+10;
}
}
}
int flag = 0;
for(int i = 1; i <= n; i ++){
s.clear();
for(int j = 1; j <= n; j ++){
s.insert(a[i][j]);
}
if(s.size() < n){
// cout<
Gym - 101652Y Delayed Work
要找人装修房子,先要给每个人都支付x工资(与工作时间无关),这项工作一个人做的话需要k天,m个人就需要k/m天,在这k/m天中每人每天要支付p工资。给出k,p,x,问完成这项工作最少需要多少钱。假设找m个人完成这项工作,则需要支付费用m*x+k/m*p,然后由均值不等值的m*x+k/m*p>=2*sqrt(m*x*(k/m*p)),当且仅当m满足m*x==k/m*p时等号成立。所以这个题就是先算m,m必须取整是(因为m是人数),然后为了保险起见,让m+1,m-1都是一遍,看哪个费用少,还有一点,就是k/m可以不是整数,也就是说天数可以不是整数(我也是看了样例才知道的)。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym - 101652X Star Arrangements
给出n表示星号的数目,然后让你写出所有的排列方案。每个排列方案必须满足三个条件:1、每隔一排都有相同数量的星星。2、相邻的排之间的星星数目之差不能超过1。3、第一排不能比第二排少。所以while循环一下一个一个试就行了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym - 101652U Unloaded Die
哇,实际上这也是个大水题,题读懂了真的超简单。
给出6个数,表示骰子的6个面分别表示每个面朝上的概率,然后你可以改变一个面的值(可以是不是整数,甚至可以是负数),使得抛这个骰子,骰子的值的期望值是3.5,问改变之后的值和变之前的值的差的绝对值最小数多少。所以for循环一个一个试一下就行了......
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym - 101652Q Halfway
二分,还是二分。题意我懒得说了......
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym 101652R Straight Shot
哎,题意难懂,读懂了挺简单的,简直就是高一物理题,但还是有一个地方没想起来,vy不会求,哎。
看这个:https://blog.csdn.net/Healer66/article/details/82423757 一看就懂。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym 101652S Purple Rain
转化一下,求最大字段和,哎,我当时想到转化了,但我以为求最大字段和要n方复杂度,所以就没搞,哎,太菜了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Gym 101652P Fear Factoring
题意好懂,不说了。这个用到了分块除法,长知识了。
有篇博客写的不错,可以看一下。https://blog.csdn.net/qq_39599067/article/details/81807580
不过这题有个坑点,就是结果要用unsigned long long来存,因为最终结果可能爆long long。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
太菜了,还是得多刷题啊!