当前位置: 首页 > 编程日记 > 正文

SUST_ACM_2019届暑期ACM集训热身赛题解

问题A:Hello SUST!

知识点:基本输入输出

C/C++:

 1 #include <stdio.h>2 3 int main() {4     int n;5     scanf("%d", &n);6     while(n --) {7         printf("Hello SUST!\n");8     }9     return 0;
10 }
View Code

问题B:计算A+B

知识点:基本输入输出

C/C++:

1 #include <cstdio>
2 
3 int main() {
4     int a, b;
5     while(~scanf("%d %d", &a, &b)) {
6         printf("%d\n", a + b);
7     }
8     return 0;
9 }
View Code

问题C:

知识点:基本输入输出

C/C++:

1 #include <cstdio>
2 
3 int main() {
4     int n;
5     while(scanf("%d", &n) && n) {
6         printf("%d\n", n * (n + 1) / 2);
7     }
8     return 0;
9 }
View Code

问题D:

知识点:递推

C/C++:

 1 #include <cstdio>
 2 using namespace std;
 3 
 4 const int maxn = 20 + 5;
 5 typedef long long ll;
 6 ll ans[maxn];
 7 int t, n;
 8 
 9 int main() {
10     ans[0] = ans[1] = 1;
11     for(int i = 2; i < maxn; i ++) {
12         ans[i] = ans[i - 1] + ans[i - 2];
13     }
14     scanf("%d", &t);
15     while(t --) {
16         scanf("%d", &n);
17         printf("%lld\n", ans[n]);
18     }
19     return 0;
20 }
View Code

问题E:

知识点:排序

C/C++:

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int maxn = 10 + 5;
 6 double score[maxn];
 7 
 8 bool cmp(const double &a, const double &b) {
 9     return a > b;
10 }
11 
12 int main() {
13     int t, n, m;
14     scanf("%d", &t);
15     while(t --) {
16         scanf("%d %d", &n, &m);
17         for(int i = 0; i < n; i ++) scanf("%lf", &score[i]);
18         // sort(score, score + n, cmp);//可用冒泡排序代替
19         // /*
20             for(int i = 0; i < n - 1; i ++) {
21                 for(int j = 0; j < n - 1 - i; j ++) {
22                     if(score[j + 1] > score[j]) {
23                         double temp = score[j];
24                         score[j] = score[j + 1];
25                         score[j + 1] = temp;
26                     }
27                 }
28             }
29         // */
30         double ans = 0.0;
31         for(int i = 0; i < m; i ++) {
32             ans += score[i];
33         }
34         printf("%.2f\n", ans / m * 1.0);
35     }
36     return 0;
37 }
View Code

问题F:

知识点:循环语句和判断语句

C/C++:

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 char G[3][3];
 6 bool ans;
 7 
 8 int main() {
 9     int t, flag;
10     scanf("%d", &t);
11     while(t --) {
12         ans = false;
13         for(int i = 0; i < 3; i ++) {
14             scanf("%s", G[i]);
15         }
16         if((G[0][0] == '0' && G[1][1] == '0' && G[2][2] == '0') || (G[0][2] == '0' && G[1][1] == '0' && G[2][0] == '0'))
17             ans = true;//检查斜向true
18         if(!ans) {
19             for(int i = 0; i < 3; i ++) {
20                 flag = 0;
21                 for(int j = 0; j < 3; j ++) {
22                     if(G[i][j] == '0') flag ++;
23                 }
24                 if(flag == 3) {
25                     ans = true;
26                     break;
27                 }//检查横向
28                 flag = 0;
29                 for(int j = 0; j < 3; j ++) {
30                     if(G[j][i] == '0') flag ++;
31                 }//检查纵向
32                 if(flag == 3) {
33                     ans = true;
34                     break;
35                 }
36             }
37         }
38         if(ans) printf("Yes\n");
39         else printf("No\n");
40     }
41     return 0;
42 }
View Code

问题G:

知识点:字符串存储

C/C++:

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 char str[8][20] = {
 6     "Monday",
 7     "Tuesday",
 8     "Wednesday",
 9     "Thursday",
10     "Friday",
11     "Saturday",
12     "Sunday"
13 };
14 
15 int main() {
16     int n;
17     while(scanf("%d", &n) && n) {
18         if(n <= 7)
19             printf("%s\n", str[n - 1]);
20     }
21     return 0;
22 }
View Code

问题H:

知识点:循环语句

C/C++:

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 const int maxn = 100;
 6 int value[4] = {2, 3, 5, 10};
 7 bool vis[maxn];
 8 
 9 int main() {
10     int n;
11     for(int i = 0; i <= 2; i ++) {
12         for(int j = 0; j <= 2; j ++) {
13             for(int k = 0; k <= 2; k ++) {
14                 for(int p = 0; p <= 2; p ++) {
15                     vis[i * value[0] + j * value[1] + k * value[2] + p * value[3]] = true;
16                 }
17             }
18         }
19     }
20     while(scanf("%d", &n) && n) {
21         if(vis[n]) printf("Y\n");
22         else printf("N\n");
23     }
24     return 0;
25 }
View Code

问题I:

知识点:题目要判断三维空间内四个点是否共面,则只需知道由四个点组成的三个向量是否共面即可知道答案。

我们知道两个向量a, b, 的向量积等于垂直于他们所在平面的空间向量c,如果c与另一个向量d垂直,那我们就可以证明a,b,c三向量共面。

我们可以利用矩阵(行列式)计算出c向量,再与d进行点乘,判定结果是否为零即可(两向量平行,内积为零)。

C/C++:

 1 #include <cstdio>
 2 #include <cstdlib>
 3 using namespace std;
 4 
 5 struct node{
 6     int x, y, z;
 7 } a[4], b[3];
 8 
 9 bool plane() {
10     bool ret = false;
11     if(b[0].x * (b[1].y * b[2].z - b[1].z * b[2].y) - b[1].x * (b[0].y * b[2].z - b[0].z * b[2].y) + b[2].x * (b[0].y * b[1].z - b[0].z * b[1].y) == 0)
12         ret = true;
13     return ret;
14 }
15 
16 int main()
17 {
18     int T, day = 1;
19     scanf("%d", &T);
20     while(T--) {
21         for(int i = 0; i < 4; i ++) {
22             scanf("%d %d %d", &a[i].x, &a[i].y, &a[i].z);
23         }
24         for(int i = 0; i < 3; i ++) {
25             b[i].x = a[i + 1].x - a[i].x;
26             b[i].y = a[i + 1].y - a[i].y;
27             b[i].z = a[i + 1].z - a[i].z;
28         }
29         if(plane())
30             printf("Day #%d: Yes\n", day);
31         else
32             printf("Day #%d: No\n", day);
33         day ++;
34     }
35     return 0;
36 }
View Code

问题J:

题意:

从L走到C的最短路dist是否小于k?小于k的话从L到C路径长度等于dist的不全重复的路径有几条?

思路:

由于DFS求解最短路之缓慢,所以我们可以先用BFS算出最短路,判断可行之后再用DFS求出满足条件的条数即可。在执行DFS时,我们先从起点出发,任意选择其中一条路并且一直走到不满足题解的状态时我们回退到上一个可以继续往前走的状态继续往前走,往前走的时候记得标记走过的路,往回走的时候记得取消标记,这样可以保证所有路都被找到并且没有重复,实现起来也比较简便。

C/C++:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <queue>
 4 #include <cmath>
 5 using namespace std;
 6 
 7 typedef pair<int, int> pii;
 8 const int maxn = 1e3 + 5;
 9 int n, m, k, step, ans, Dist;
10 char G[maxn][maxn];
11 int dist[maxn][maxn];
12 bool vis[maxn][maxn];
13 pii B, E, now, Next;
14 /*
15     这里的pair完全可以用结构体代替
16 
17     pair<int, int> 可以看作是一个类似于结构体的寄存器
18     比如 struct P {
19         int first, second;
20     }now;
21     可以用now.first, now.second访问这个变量的两个值。
22     也可以申明pair<int, int>类型的数组,也就相当于struct P array[size];
23  */
24 int bfs(int x, int y) {
25     memset(vis, false, sizeof vis);
26     memset(dist, 0, sizeof dist);
27     queue <pii> Q;
28     Q.push(make_pair(x, y));
29     dist[x][y] = 0;
30     while(!Q.empty()) {
31         pii now = Q.front();
32         Q.pop();
33         if(now.first == E.first && now.second == E.second) return dist[now.first][now.second];
34         for(int dx = -1; dx <= 1; dx ++) {
35             for(int dy = -1; dy <= 1; dy ++) {
36                 if(abs(dx - dy) == 1) {
37                     Next.first = now.first + dx;
38                     Next.second = now.second + dy;
39                     if(!vis[Next.first][Next.second] && Next.first >= 0 && Next.first < n && Next.second >= 0 && Next.second < m && G[Next.first][Next.second] != '#') {
40                         dist[Next.first][Next.second] = dist[now.first][now.second] + 1;
41                         Q.push(make_pair(Next.first, Next.second));
42                         vis[Next.first][Next.second] = true;
43                     }
44                 }
45             }
46         }
47     }
48     return -1;
49 }
50 
51 void dfs(pii B, pii E, int D) {
52     if(B.first == E.first && B.second == E.second) {
53         if(D == ans) step ++;//如果当前访问的结点为终点且到起点的距离为最短路则step++
54     }
55     if(D > ans) return;//如果当前路径在D步内不能到达终点则回退,换下一条路
56     for(int i = -1; i <= 1; i ++) {
57         for(int j = -1; j <= 1; j ++) {
58             if(abs(i - j) == 1) {//由于只能从上下左右四个方向走,所以可以找出这样的关系式,读者可以自行在草稿纸上进行验证
59                 if(B.first + i >= 0 && B.first + i < n && B.second + j >= 0 && B.second + j < m) {//不越界
60                     if(G[B.first + i][B.second + j] != '#' && !vis[B.first + i][B.second + j]) {//判断是否没有访问过且不为石头
61                         vis[B.first + i][B.second + j] = true;
62                         dfs(make_pair(B.first + i, B.second + j), E, D + 1);//递归走下一步
63                         vis[B.first + i][B.second + j] = false;//记得修复状态
64                     }
65                 }
66             }
67         }
68     }
69 }
70 
71 int main() {
72     int t, Case = 0;
73     scanf("%d", &t);
74     while(t --) {
75         step = 0;
76         Dist = 0x3f3f3f3f;
77         scanf("%d %d %d", &n, &m, &k);
78         for(int i = 0; i < n; i ++) scanf("%s", G[i]);
79         for(int i = 0; i < n; i ++) {
80             for(int j = 0; j < m; j ++) {
81                 if(G[i][j] == 'L') B = make_pair(i, j);
82                 if(G[i][j] == 'C') E = make_pair(i, j);
83             }
84         }
85         ans = bfs(B.first, B.second);
86         if(ans > k) ans = -1;
87         printf("Case #%d: %d ", ++Case, ans);
88         if(ans != -1) {
89             memset(vis, false, sizeof vis);
90             dfs(B, E, 0);
91             printf("%d", step);
92         }
93         printf("\n");
94     }
95     return 0;
96 }
View Code

转载于:https://www.cnblogs.com/bianjunting/p/11164316.html

相关文章:

修改默认的个人站点

1、将模板页加入到里面 在地址C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\MySiteLayouts中找到 LayoutFiles.xml 然后将master复制到这个文件夹下 最后在LayoutFiles.xml加入如下代码&#xff1a; <Module Name"Mast…

【java】暑期需要复习的操作

实现分页查询 将网页输入的数据存入数据库 将每个jsp文件都需要的代码抽离出来 添加jquery 全选操作 引入jstl 实现全选功能

11迭代器模式

图片来自head first 设计模式&#xff0c;仅供学习之用 事实证明光看是没有用的&#xff0c;实践才能出真知&#xff0c;迭代器模式没有我想想的那么简单&#xff0c;写了个小例子才发现自己的理解并不深刻。例子是仿照head first的。迭代器是一个完整的类&#xff0c;作用是遍…

吴裕雄--天生自然 高等数学学习:高阶偏导数

转载于:https://www.cnblogs.com/tszr/p/11165379.html

【数据库】兴唐第二十六节课作业

一、设计购物车表、支付信息表和订单表 思路&#xff1a; 购物车中有&#xff1a; 商品名、价格、生产日期、 保质期&#xff08;shelf life&#xff09;、生产厂家。 支付信息中有&#xff1a; 商品名、 价格、 件数、 总价 订单信息有&#xff1a; 发货时间、订单号、预计到…

递归与非递归转换(栈知识应用)

下面例题是一次作业中遇到的&#xff0c;很值得体味&#xff0c;与大家共享下。 递归代码&#xff1a; 1 long f(long m,long n) 2 { 3 long sum; 4 if(m0) sumn1; 5 else if(n0) sumf(m-1,1); 6 else kf(m-1,f(m,n-1)); 7 return sum; 8 } 用递归来做很明了&a…

Silverlight 游戏开发小技巧:角色升级特效

这次我们将使用Projection完成一些有趣的RPG游戏中常用的特效&#xff1a;升级和传送点特效&#xff0c;我们不需要请特效师制作复杂绚丽的特效&#xff0c;而是只需要他们提供关键的几张图片或者设计样式&#xff0c;如果了您有本领教会他们使用Blend来做特效&#xff0c;那就…

使用jQuery开发messager消息框插件

1、插件使用 首先引入jquery库&#xff0c;然后引入dialog.js、dialog.css、messager.js、messager.css&#xff0c;如下&#xff1a; 1 <script type"text/javascript" src"js/jquery/jquery-1.7.2.min.js"></script> 2 3 <script type&q…

Data - 深入浅出学统计 - 上篇

本文是已读书籍的内容摘要&#xff0c;少部分有轻微改动&#xff0c;但不影响原文表达。 &#xff1a;以漫画形式来讲解最基本的统计概念和方法。 ISBN: 9787121299636https://book.douban.com/subject/26906845/引言&#xff1a;统计无处不在 统计值无处不在。我们伴随着统计值…

android 布局之RelativeLayout(相对布局)

android 布局分为LinearLayout TableLayout RelativeLayout FreamLayout AbsoluteLayout. 常用的有LinearLayout,TableLayout,RelativeLayout &#xff0c;这几个布局不会应该手机屏幕大小而有变化。通常我们使用HVGA 大小的屏幕(320*480). 接下来我们学习RelativeLayout. 原文…

【js】实现分页查询操作的步骤

1、将CSS的代码复制到goodList.jsp 2、引入common 代码实现&#xff1a; <% include file"../common/common.jsp"%> 3、引入jstl 代码实现&#xff1a; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core"%> 注意&…

Orchard:如何生成Hello World模块

在Orchard架构介绍中对Orchard的一些架构内容进行了介绍&#xff0c;下图是Orchard自带的一些模块&#xff0c; 本篇讲解一下如何扩展Orchard来生成我们的第一个模块。 介绍 Orchard构建在ASP.NET MVC之上&#xff0c;MVC是一个应用模式&#xff0c;我在信息系统开发平台OpenE…

通过域名访问自己部署到服务器上的项目

通过域名访问自己部署到服务器上的项目 如何不输入项目名端口号直接访问java web项目 1、省略输入端口号的步骤 在Linux的下面部署了tomcat&#xff0c;为了安全我们使用非root用户进行启动&#xff0c;但是在域名绑定时无法直接访问80端口号。众所周知&#xff0c;在unix下&am…

【java】异常的分类

注&#xff1a; 1、exception是人工可以修复的&#xff0c;但error的话很少出现&#xff0c;如果出现就无能为力了。 2、我们将所有派生于EXCEPTION和ERROR的类的所有异常称为&#xff08;unchecked&#xff09;非受查异常&#xff0c;其余为受查&#xff08;checked&#xf…

【免费软件测试视频-0013】——Loadrunner9.0 SLA Analysis

LR9.0---SLA Analysis http://www.3atesting.com/mv/bencandy.php?fid15&id16转载于:https://www.cnblogs.com/umain/archive/2008/09/28/1301310.html

训练听力的相关方法

一、听写熟悉一些固定发音 二、多阅读相关的文章&#xff0c;文章相关内容越熟悉&#xff0c;听力效果越好【重要】 三、首先没有听懂的一些音不会影响后面的理解 四、解决口音问题的唯一方法是&#xff0c;多阅读、记忆相关内容【签证及联系教授也要注意】转载于:https://www.…

PHP生成PDF文档的FPDF类

以前在PHP4的早期版本中用PDFlib生成PDF文档比较容易&#xff0c;现在升级到PHP5了&#xff0c;发现更麻烦了&#xff0c;装的PHP 5.2.4默认没有PHPlib&#xff0c;从php.net上找了一个&#xff0c;装上竟一直报错&#xff0c;开始以为是版本兼容问题&#xff0c;后来在租来的服…

Codeforces Round #466 (Div. 2)

http://codeforces.com/contest/940 A水题 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack-protector") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tunenative") //#pragma …

WinCE中串口驱动及接口函数介绍(转载)

作者&#xff1a;ARM-WinCE 在WinCE中&#xff0c;串口驱动实际上就是一个流设备驱动,具体架构如图&#xff1a; 串口驱动本身分为MDD层和PDD层。MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_xxx)&#xff0c;PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操…

【jsp】写jsp文件的准备

1、引入jstl 代码实现&#xff1a; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %> 2、编写common文件 代码实现&#xff1a; <c:set var"ctxpath" value"${pageContext.request.contextPath }">&l…

studio2008 无法显示该网页

莫名奇妙的studio调试的时候页面显示无法显示该网页&#xff0c;差网页后得知原来是C:\WINDOWS\system32\drivers\etc下的Hosts文件被修改了&#xff0c; 确认里面有127.0.0.1 localhost 行转载于:https://www.cnblogs.com/sunshinecc/archive/2011/11/11/2245596.html

侠客X官方网站成立,第一个内测版本即将放出,敬请期待.

这是一个难忘的日子&#xff0c;西方的情人节&#xff0c;本站的成立代表侠客X&#xff0c;即将与大家见面了。 我们的要做的是&#xff0c;传承侠客站群经典模式&#xff0c;打造SEO王者力作&#xff0c;侠客X即将公开测试&#xff0c;敬请期待。 http://xpk.in Qin 转载于:ht…

HSSFWorkbook 与 XSSFWorkbook

项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题. 因为此前一直使用的是NPOI的1.x的版本,用的SharpZipLib是0.84版本,而升级到最新版本以后,SharpZipLib的版本变成了0.86版本. 但是memcached的却没有最…

P1066 2^k进制数 NOIP 2006 提高组 第四题

洛谷蓝题&#xff08;点击跳转&#xff09; 提高组 第四题 题目描述 设r是个2^k 进制数&#xff0c;并满足以下条件&#xff1a; &#xff08;1&#xff09;r至少是个2位的2^k 进制数。 &#xff08;2&#xff09;作为2^k 进制数&#xff0c;除最后一位外&#xff0c;r的每一位…

线段树专辑——pku 2886 Who Gets the Most Candies?

http://poj.org/problem?id2886 恩&#xff0c;分糖果&#xff0c;快乐的童年啊&#xff01; 题目意思大概n个小孩围成一个圈&#xff0c;每个小孩手里有张卡片&#xff0c;记录着一个数字。开始从第k个孩子&#xff0c;该孩子离开圈子&#xff0c;然后告诉别人他手里的数字&a…

【jsp】通过get和post传值的区别

GET与POST的区别&#xff1a; GET方式提交表单&#xff0c;请求的参数在请求的头部&#xff0c;可以通过request.getQueryString()获取到请求参数及其参数值&#xff1b;POST方式提交表单&#xff0c;请求的参数在请求体中&#xff0c;所以request.getQueryString()方法无法获…

php获取输入流

uc中的用到的代码(在api/uc.php)代码&#xff1a; $post xml_unserialize(file_get_contents(php://input));&#xfeff; php手册&#xff08;http://cn.php.net/manual/zh/wrappers.php.php&#xff09;说明: php://input allows you to read raw data from the request bod…

微信小程序实例源码大全demo下载

怎么本地测试微信小程序实例源码 1.下载源码2.打开微信开发者工具3.添加项目->选择本项目目录->编译执行微信小程序实例源码大全 微信小程序游戏类demo&#xff1a;识色&#xff1b;从相似颜色中挑选不同的一个 源码链接&#xff1a;http://www.wxapp-union.com/forum.ph…

RabbitMQ 学习

参考&#xff1a;https://www.rabbitmq.com/getstarted.html 先在本地安装RabbitMQ 组件(需要安装Erlang组件&#xff09;&#xff0c;启动服务。 激活 RabbitMQs Management Plugin 使用RabbitMQ 管理插件&#xff0c;可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。 打…

怎样提高WebService的性能

服务器端WebService程序using System.Runtime.Serialization.Formatters.Binary;using System.IO;using System.IO.Compression;using System.Data.SqlClient;………public class Service1 : System.Web.Services.WebService{[WebMethod(Description "直接返回 DataSet 对…