问题 A: 比赛

时间限制: 2 秒 内存限制: 256 MB | 提交: 393 解决: 98
提交 状态

题目描述

学校要派6名同学组成两个队(一个队3个人)去参加比赛,每个同学有一个分数,学校希望两个队的分数相等,每个队的分数为该队所有队员的分数的总和。

你的任务是判断是否可能组成两个队使两个队的分数相等。

输入

第一行:整数T,测试实例个数。

对于每组测试实例:

输入一行:包含6个整数a1, ..., a6 (0 ≤ ai ≤ 1000) ,代表每个同学的分数

输出

每组测试实例输出一行:如果可能组成两个队使两个队的分数相等,则输出"YES";否则输出"NO"。

样例输入

2
1 3 2 1 2 1
1 1 1 1 1 99

样例输出

YES
NO

//我的思路就是直接暴力for循环打表生成所有的有顺序的组合数列,其实这也可以作为一道深
搜入门基础题目!《啊哈算法》上有原题及形象的代码!

#include<stdio.h>     //A
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
#define ll long long
#define N 200
int a[800][10];
int main()
{int i,T,i1,i2,i3,i4,i5,i6;int m,n,cnt,flag;scanf("%d",&T);while(T--){cnt=0;flag=0;for(i=1;i<=6;i++)scanf("%d",&a[0][i]);for(i1=1;i1<=6;i1++){for(i2=1;i2<=6;i2++){if(i2==i1)continue;for(i3=1;i3<=6;i3++){if(i3==i1||i3==i2)continue;for(i4=1;i4<=6;i4++){if(i4==i1||i4==i2||i4==i3)continue;for(i5=1;i5<=6;i5++){if(i5==i1||i5==i2||i5==i3||i5==i4)continue;for(i6=1;i6<=6;i6++){if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;else{++cnt;a[cnt][1]=a[0][i1];a[cnt][2]=a[0][i2];a[cnt][3]=a[0][i3];a[cnt][4]=a[0][i4];a[cnt][5]=a[0][i5];a[cnt][6]=a[0][i6];}}}}}}}for(i=1;i<=cnt;i++){if(a[i][1]+a[i][2]+a[i][3]==a[i][4]+a[i][5]+a[i][6]){flag=1;break;}}if(flag)printf("YES\n");elseprintf("NO\n");}return 0;
}

View Code

//其实不然

#include<stdio.h>   //A题
#define N 10
int main()
{int n,a[N],i;scanf("%d",&n);while(n--){for(i=1;i<=6;i++)scanf("%d",&a[i]);if(a[1]+a[2]+a[3]==a[4]+a[5]+a[6]||a[1]+a[2]+a[4]==a[3]+a[5]+a[6]||a[1]+a[2]+a[5]==a[4]+a[3]+a[6]||a[1]+a[2]+a[6]==a[4]+a[5]+a[3]||a[1]+a[4]+a[3]==a[2]+a[5]+a[6]||a[1]+a[5]+a[3]==a[4]+a[2]+a[6]||a[1]+a[6]+a[3]==a[4]+a[5]+a[2]||a[1]+a[4]+a[5]==a[6]+a[2]+a[3]||a[1]+a[4]+a[6]==a[5]+a[2]+a[3]||a[1]+a[5]+a[6]==a[4]+a[2]+a[3])printf("YES\n");elseprintf("NO\n");}return  0;
}

View Code

//没错上面的代码也可以,一共10种情况;分成的两组数中每组数不要求顺序,故
每次枚举一半就可以了!(自己动手画画)

---------------------------------------------------------

问题 B: 消灭怪物

时间限制: 2 秒 内存限制: 256 MB | 提交: 125 解决: 36
提交 状态

题目描述

有水平放置的编号从1到n的n个格子,每个格子中有一个或者多个怪物。你可以在任何一个格子里投下炸弹,这个格子里的怪物都将受到伤害,当每个怪物第一次受到伤害,它会立即移动到相邻的格子(格子n内的怪物只能移动到格子n-1,格子1内的怪物只能移动到格子2),当一个怪物受到两次伤害时,他将彻底被消灭。怪物只有在第一次受到伤害时才一移动,它们自己不会移动。

你要找出消灭所有怪物所需要的最小炸弹数。

输入

第一行:整数T,表示测试实例个数。

对于每组测试实例:

输入一个整数n (2 ≤ n ≤ 100 000) ——表示有n个格子。

输出

每组测试实例输出一行:包括一个整数——消灭所有怪物所需要的最小炸弹数。

样例输入

2
2
3

样例输出

3
4

#include<stdio.h>
#include<iostream>    //问题 E: QAQ
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
#define ll long long
#define N 200
char a[108];int main()
{int T,i,j,k,len,cnt;scanf("%d",&T);while(T--){cnt=0;scanf("%s",a);len=strlen(a);for(i=0; i<len; i++){for(j=i+1; j<len; j++){for(k=j+1; k<len; k++){if(a[i]=='Q'&&a[j]=='A'&&a[k]=='Q'){cnt++;}}}}printf("%d\n",cnt);}return 0;
}

View Code

//三重FOR循环分别代表三个指针进行遍历,轻松解决问题!

问题 D: 最小的数

时间限制: 1 秒 内存限制: 256 MB | 提交: 192 解决: 29
提交 状态

题目描述

给你两个一维数组(都为大于等于1且小于等于9的数),从第一个数组中取至少一个数字,再从第二个数组中取至少一个数字,用你选取的数字组成一个整数,求能组成的最小整数。
如果从第一个数组中选取的数与从第二个数组中选取的数相等,只保留一个即可。

输入

第一行:一个整数T,表示测试实例个数
对于每组测试实例:

第一行:包含两个整数n 和 m (1 ≤ n, m ≤ 9) —— 分别表示两个数组的大小
第二行:包含n个整数a1, a2, ..., an (1 ≤ ai ≤ 9) ——第一个数组

第三行:包含m个整数 b1, b2, ..., bm (1 ≤ bi ≤ 9) 第二个数组

输出

每组测试实例输出一行:包含一个整数 —— 能组成的最小整数

样例输入

2
2 3
4 2
5 7 6
8 8
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1

样例输出

25
1

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define INT 0x7fffffff
#define INF 0x3f3f3f3fint main()
{int t, n, m, a[25], b[15];scanf("%d", &t);while(t--){scanf("%d%d", &n, &m);for(int i=0; i<n; i++)scanf("%d", &a[i]);for(int i=0; i<m; i++)scanf("%d", &b[i]);sort(a,a+n);sort(b, b+m);int s=999;for(int i=0; i<n; i++){for(int j=0; j<m; j++){if(a[i]==b[j])s=min(min(a[i], b[j]), s);}}if(s!=-1&&s!=999)printf("%d\n", s);else if(a[0]<b[0])printf("%d\n", a[0]*10+b[0]);elseprintf("%d\n", b[0]*10+a[0]);}return 0;
}

View Code

//这个程序用到了库函数sort排序,提供一组样例,数组a:1 2 9,数组b:3 4 9 ,按照题意该组数据的最小值为9,不应该为13!

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
#define ll long long
#define N 200
int a[15],b[15];int main()
{int T,n,m,i,j,minn1,minn2,ans;scanf("%d",&T);while(T--){minn1=minn2=100;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&a[i]);minn1=min(minn1,a[i]); //表示A数组的最小值
        }for(i=1;i<=m;i++){scanf("%d",&b[i]);minn2=min(minn2,b[i]);  //表示B数组的最小值
        }if(minn1==minn2)ans=minn1;elseans=min(minn1*10+minn2,minn1+minn2*10);for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(a[i]==b[j]) //如果出现重复值就拿重复值跟ans比较
                {if(ans>a[i])ans=a[i];}}}printf("%d\n",ans);}return 0;
}

View Code

//上面这个代码用的是一般排序,有一点需要注意的是a数组的数跟b数组的数进行组合,a数组的最小数可以放前面,也可以放到后面去!

问题 F: 括号配对

时间限制: 1 秒 内存限制: 256 MB | 提交: 31 解决: 17
提交 状态

题目描述

给出一串长度为n的括号序列(只包含小括号),计算出最少的交换(两两交换)次数,使整个括号序列匹配。
我们认为一个括号匹配,即对任意一个')',在其左侧都有一个'('与它匹配,且他们形成一一映射关系。

输入

第一行:一个整数T,表示测试实例个数
对于每组测试实例:

第一行:整数n(0≤n≤5×10^6 ),表示括号序列长度
第二行:一个字符串,表示括号

输出

每组测试实例输出一行:包含一个整数 ,表示最少的交换次数

样例输入

2
6
(()))(
6
)))(((

样例输出

1
2

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define INT 0x7fffffff
#define INF 0x3f3f3f3fchar ch[5000006];
int main()
{int t, n, m;scanf("%d", &t);while(t--){int s=0;scanf("%d", &n);scanf("%s", ch);for(int i=0; i<n; i++){if(ch[i]=='(')s++;else{if(s>0)s--;}}printf("%d\n", (s+1)/2);}return 0;
}

View Code

//找规律题


转载于:https://www.cnblogs.com/zhazhaacmer/p/7911178.html

【Low版】HAUT - OJ - Contest1035 - 2017届新生周赛(六)题解相关推荐

  1. 舅妈的计算机课1-9,山东省济南市历下区2017届九年级教学三模语文试题(word版含答案)...

    山东省济南市历下区2017届九年级教学三模语文试题(word版含答案) 绝密★启用前 2017 九年级模拟考试 语 文 试 题(2017.6) 本试题共 6 页,满分为 120 分,考试时间为 120 ...

  2. 上海大学计算机专硕与学硕,计算机学院2017届留沪研究生学习成绩综合评定工作通知...

    根据<上海大学毕业研究生学习成绩综合排名办法>(2017年)的原则,计算机学院2017届留沪研究生学习成绩综合评定工作,通知如下: 一.学院评定工作日程 1.5月17日前完成学院成绩综合排 ...

  3. HNUCM信息科学与工程学院第二届新生赛——热身赛

    HNUCM信息科学与工程学院第二届新生赛--热身赛 题目比较坑点较多,注意避坑,特别是数据范围和题意,因为是新生赛,所以还是选择使用了c语言书写,基本没有调用内置函数库,排序统一使用了冒泡排序,没有使 ...

  4. 2021龙小丽高考成绩查询,2021届新生成为重庆高考改革第一批大军

    原标题:2021届新生成为重庆高考改革第一批大军 高考,已经迈向一个新时代. 客观而言,新高考,将会给我们打开一个新的大门. 对于新高一的学生.家长乃至老师们而言,一定要了解新高考的"新&q ...

  5. 淮阴工学院研究生计算机,先鸣论坛第六期/考研加油站(五)|2017届淮阴工学院计算机学院考研最高分王杰和你一起分享他的考研经验...

    原标题:先鸣论坛第六期/考研加油站(五)|2017届淮阴工学院计算机学院考研最高分王杰和你一起分享他的考研经验 若有恒 何须三更眠五更起 最无益 莫过一日曝十日寒 吾尽吾心,终亦不悔: 天道酬勤,何事 ...

  6. 解决socket粘包的两种low版模式 os.popen()和struct模块

    无注释版 os.popen()模式 server端 import socket import osphone = socket.socket() phone.bind(("localhost ...

  7. 清华大学2017届本科毕业典礼演讲——做有思想的行者

    清华大学2017届本科毕业典礼演讲--做有思想的行者. 小编是在YouTube上浏览一些关于国学的视频时,在"推荐视频"里看到了这个视频.当时觉得演讲的主题--做有思想的行者,挺有 ...

  8. 国际图形学大会(SIGGRAPH)2017届主席竞选答辩是如此场景

    国际图形学大会(SIGGRAPH)2017届主席竞选答辩是如此场景. 视频链接:https://www.youtube.com/watch?v=txmMXHiN9ho 截图如下: 左边六位是这届主席的 ...

  9. 计算机信息学院运动会入场式,厦门大学信息学院第一届新生运动会成功举办

    10月13日,厦门大学信息学院第一届新生运动会在翔安校区一期操场举行.学院党委副书记李承华.杨蔷,智能系副主任江敏.团委书记唐腾凤,团委副书记李绍玉.黄艺明.刘茜和全体在校辅导员老师出席了运动会.开幕 ...

  10. 武 学院2017级计算机专业,关注 | 计算机学院2017级新生见面会暨军训动员会顺利举行...

    原标题:关注 | 计算机学院2017级新生见面会暨军训动员会顺利举行 计算机学院记者团讯(通讯员 林雅南 编辑 要娅楠)9月1日晚7点,计算机学院2017级新生见面会暨军训动员会在大学生活动中心5楼举 ...

最新文章

  1. java double转换符_java中字符串怎么转换成double类型
  2. Matlab频域高/低通滤波
  3. 有监督学习和无监督学习举例_对比自监督学习
  4. [C语言]为什么要有include?——从Hello World说起
  5. 对51CTO的初步看法
  6. cmake安装配置及入门指南
  7. 由于找不到appvisvsubsystems32.dll_终于熬到孩子上幼儿园,宝妈却找不到工作了,背后原因让人心酸...
  8. quartus+modelsim仿真教程
  9. Navicat12.0 激活
  10. 计算机网络概论简单题,第一章计算机网络概述练习题
  11. VS2019完全卸载教程
  12. selenium chromedriver 无头浏览器检测
  13. 语音识别中的鸡尾酒会问题
  14. OSChina 新年乱弹 ——爱你们,新年快乐
  15. Python实训day08am【网络爬虫selenium、图像处理入门】
  16. 微信域名防封跳转系统-微信拦截检测技术
  17. java丐帮_Java多线程学习笔记(一)
  18. WEB阶段7:综合练习-联系人管理系统-增删改查查询分页
  19. 图片组件(Image)
  20. 计算机组成原理XXH是什么,计算机组成原理第二次实验报告.doc

热门文章

  1. 阿里巴巴技术总监全解中台架构
  2. 为极致的视频体验而设计:facebook新一代存储平台Bryce Canyon架构
  3. IT人的春节对联集锦
  4. 好好工作,别想不开去创业。
  5. ssh java_java中的SSH的各自作用是什么-百度经验
  6. Linux进阶之bond链路聚合
  7. Material使用05 MdListModule模块 MdButtonToggleModule模块
  8. 如何用Python实现杨辉三角和心
  9. 802.11 对于multicast 和 broadcast的处理
  10. How to study Watir?