Test in 01.22 T4:pogo

2024-02-24 05:10
文章标签 test t4 pogo 01.22

本文主要是介绍Test in 01.22 T4:pogo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  这是道很有意思的模拟题。

  首先,sro XF orz

  题面:

  

  首先想到的是暴力的算法,枚举每一步操作中最顶端的数字,然后在加上顶端数字,但具体的暴力做法是需要一定的思路的,因为骰子中每一面所对的面都是固定的,所以只需要确定上,前,右三个面就可以确定所有面上的数字,然后一一枚举即可:关键代码如下:

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 int r,c,Opposite[7]={0,6,5,4,3,2,1},Top=1,Right=3,Front=2,temp;
 5 long long ans=0;
 6 int main()
 7 {
 8     //读入数据
 9     for (int i=1;i<=r;i++)
10     {
11         ans+=Top;
12     if (i%2==1)//如果为奇数行做向右移动的操作,否则做向左移动的操作
13     for (int j=1;j<c;j++)//注意操作次数为c-1
14     {
15         temp=Opposite[Right];
16         Right=Top;
17         Top=temp;//左右移动的操作中前面的点数不变
18         ans+=Top;
19     }
20     else
21         for (int j=1;j<c;j++)
22         {
23              temp=Opposite[Top];
24                  Top=Right;
25          Right=temp;
26          ans+=Top;
27         }
28         temp=Opposite[Front];
29         Front=Top;
30         Top=temp;//向下移动的操作中右面的点数不变
31     }
32     cout<<ans<<endl;
33     return 0;
34 } 
35                

  但是题目上的数据范围为100000,而暴力算法的时间复杂度为O(n^2),所以暴力算法只能过50%的数据。

  这时候需要提取题面中的重要信息:每面上的点数加上其所对的点数之和为7。而在每行上,每4次操作都是重复的,所以在这么多操作中存在了许多次重复的固定操作,而这些固定操作的数字和均为14,次数均为4,所以需要在读入数据直接进行特殊处理,将c转化为小于4的正整数,这样的话就不会超时了。

  但需要注意的是,如果c在处理之后值为0,在让c取膜并进行计算的同时也将r上的操作进行了,所以这时候需要对是否进行循环进行判断。下面给出AC代码:

 

#include<iostream>
#include<cstdio>
using namespace std;
int r,c,Opposite[7]={0,6,5,4,3,2,1},Top=1,Right=3,Front=2,temp;
long long ans=0;
int main()
{freopen("pogo.in","r",stdin);freopen("pogo.out","w",stdout);scanf("%d%d",&r,&c);ans=14*((c/4)*r);//直接进行重复的操作c=c%4;//对c进行处理if (c!=0)//特判for (int i=1;i<=r;i++){ans+=Top;if (i%2==1)for (int j=1;j<c;j++){temp=Opposite[Right];Right=Top;Top=temp;ans+=Top;}elsefor (int j=1;j<c;j++){temp=Opposite[Top];Top=Right;Right=temp;ans+=Top;}temp=Opposite[Front];Front=Top;Top=temp;}cout<<ans<<endl;return 0;
}

  前后代码差别不大。

  理解之后这道题还是很水的,但是理解起来较有难度。

  (cout如果要换成printf的话记住要用longlong类型的,第一次提交的时候用的%d结果超数据范围了T.T)

转载于:https://www.cnblogs.com/hinanawitenshi/p/6343580.html

这篇关于Test in 01.22 T4:pogo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741026

相关文章

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

mybatis if test 之 0当做参数传入出问题

首先前端传入了参数 if(StringUtils.isNotBlank(status)){requestParam.setProperty("status", Integer.parseInt(status));}List<SuperPojo> applicationList = groupDao.getApplicationListByReviewStatusAndMember(req

js正则表达式test方法的问题

今天在网上碰到一个帖子,写了一个关于Regex的奇怪现象,(文章来源http://www.php100.com/html/webkaifa/javascript/2007/0109/1866.html) 代码如下 <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'

c:if test=/c:if如何判断空(使用例子)

userName是登录的时候放到session中了 <c:if test="${ not empty userName }">这表示userName判断不为null `<c:if test="${empty userName }"> ` 这表示userName判断为null 使用案例 <c:if test="${ not empty userName }"><ul><li><a

[UVM]6.component driver monitor sequencer agent scoreboard env test

1.知识点回顾 (1)component需要有parent,因为参加构成组件,所以需要(继承); (2)object与component之间间隔report_object。 2.组件家族 (1)构建寄存器模型 :uvm_reg_predictor;激励器:driver/random_stimulus/sequencer_base/sequencer;监测器:monitor;

shell脚本编写之test命令

test命令用于测试某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 在shell文件中输入命令,通过特定的参数可以对数值、字符串进行比较,如下参数及示例。 1、数值比较参数 举例,在myshell.sh脚本中加入如下内容,将两个变量值进行比较: 执行结果: 2、字符串比较参数 举例,在myshell.sh中添加如下内容,进行变量值比较: 执行结果如下

第T4周:猴痘病识别

本文为🔗365天深度学习训练营 中的学习记录博客原作者:K同学啊 我的环境: ● 语言环境:Python3.6.5 ● 编译器:jupyter notebook ● 深度学习框架:TensorFlow 2.6.2 ● 数据:猴痘病数据集 一、前期工作 设置GPU(如果使用的是CPU可以忽略这步) from tensorflow import kerasfrom ten

Tensorflow 中train和test的batchsize不同时, 如何设置: tf.nn.conv2d_transpose

大家可能都知道, 在tensorflow中, 如果想实现测试时的batchsize大小随意设置, 那么在训练时, 输入的placeholder的shape应该设置为[None, H, W, C]. 具体代码如下所示: # Placeholders for input data and the targetsx_input = tf.placeholder(dtype=tf.float32, s