首页 > 其他分享 >【题解】twt studio2024 萌新欢乐赛

【题解】twt studio2024 萌新欢乐赛

时间:2024-10-17 12:10:09浏览次数:8  
标签:codd 题目 int 题解 studio2024 偶数 因子 萌新

迟来的题解

本文更新到个人主页中,后续如果有任何修正变动也只会在网页端更新~

特别鸣谢小羽毛在羽猫球一题的题解:) 感谢兴航学弟在T3的题解。

比赛链接:https://www.luogu.com.cn/contest/196515

T1

签到题,所有参与选手均满分。略。

T2

https://www.luogu.com.cn/article/37n1idam

T3

在题目中的提示已经很显然了,如果我们让所有的数都有某个公因子,那么最简单的办法就是让所有数都是偶数。

而刚好在题目中的操作,其实就是两个数相乘。所以最理想的情况就是 奇数都去乘以偶数变成偶数。

关于这里的思路,xh学弟是这样讲的:

最终要使整个序列的最大公约数大于 \(1\),实际上就是要使最后序列中每一个数字都有共同的因子。

假设我们确定了因子是谁,就只需要把不含该因子的数字乘到含该因子的数字上就可以了,操作次数就是序列中不含该因子数字的个数。

例如序列 \([3,6,9,7]\):
显然 \(3\) 是被包含最多的因子,只需要对 \(7\) 操作一次,所以操作次数为一。

问题转化为如何找到这个因子,由于题中给到的区间是连续的,每两个连续的数字中间一定有一个偶数,所以这个因子就是 \(2\),区间奇数的数量就是操作次数。

无论如何,最终我们的操作次数就变成了区间中奇数的数量。

需要注意的是对于长度为1的情况需要特殊判断。

如果你能过样例,你基本也能拿到满分。

yxhのstd:(也可以看压缩包里的,zzt太懒惰了,懒得把几个合并到一起。)

#include <iostream>
using namespace std;
int codd(int x){ return x/2+x%2; }
int main(){
    int t;cin>>t;
    while(t--){
        bool flag=0;
        int l,r,k;cin>>l>>r>>k;
        if(codd(r)-codd(l-1)<=k) flag=1;
        if(l==r){
            flag=(l==1)?0:1;
        } 
        cout<<(flag?"YES":"NO")<<endl;
    }
}

T4

崽崽兔的想法太天才了

我们不妨把新数列的前几项列出来:

原本的f函数:

i 1 2 3 4 5 6 7 8
1 a 1+a 1+2a 2+3a 3+5a 5+8a 8+13a

我们将常数项提取出来,再将a前面的系数项提取出来,分别列出常数表和系数表(b表和k表)

b表:

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

k表:

i 1 2 3 4 5 6 7 8
0 1 1 2 3 5 8 13

相信对斐波那契数列熟悉的你一定发现了,我们的b表和k表都是符合斐波那契推理规律的!

那么我们设定使用第i项,可以列出如下方程: b_i + k_i * i = x,经过移项,可以直接算出 i = (x-b_i)/k_i

那么我们经过预处理,将b表和k表维护出来。接下来从小到大的枚举i,经过以上公式可以快速判断出枚举的i是否能作为方程式的解。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e9;
const int maxk = 1e5;
int k[maxk+10],b[maxk+10];
int main() {
	//freopen("fibonacci10.in","r",stdin);
	//freopen("fibonacci10.out","w",stdout);
	k[1]=0; k[2]=1;
	b[1]=1; b[2]=0;
	for(int i=3;i<=maxk;i++) {
		k[i]=k[i-1]+k[i-2];
		b[i]=b[i-1]+b[i-2];
	}
	int t,x;
	cin>>t;
	for(int zzt=1;zzt<=t;zzt++) {
		cin>>x;
		cout<<2<<" "<<x<<endl;
		for(int i=3;i<=1e5;i++) {
			if(b[i]>=x) break;
			if((x-b[i]) % k[i] == 0) {
				cout<<i<<" "<<(x-b[i])/k[i]<<endl;
			}
		}
	}
}


出题人的小心得

由于这种宣发比赛的形式无论是对于twt工作室,还是对于出题人本人,都是一种全新的尝试,故留下一点反思。

关于T1这种纯签到题太省事太简单,后面可能考虑加大一点难度。

T2这种纯板子题也没有思考的价值,对于新生同学来说,完全没接触过动态规划,只靠暴力也很难得到部分分。纯dp不带优化有60,难写的搜索拿30.这其实是不理想的。

T3这种题就是很好的范式,我很满意!有思维高度,有乐趣,只靠高中的数学基础就可以推出来思考出来,这能让大伙感受到算法本身的乐趣。虽然对于高手一看奇偶性就能一眼秒。但是也算优秀题目了。可惜本次排的比较蠢,很多同学被T2劝退就不看了。

T4只能勉强及格,看似是方程之类的其实还是找规律的题目。如果找规律猜规律,我认为更理想的情况是猜测表象更复杂但结论更直观甚至简单的问题。这样才好玩嘛,但是类似的题目很难控制得分。没法送部分分出去。

总结

感谢大家的捧场配合,作为小萌新举办萌新欢乐赛,居然有这么多人捧场,受宠若惊。

希望各位都能找到自己热爱的领域并且为之努力,道阻且长,行则将至。

标签:codd,题目,int,题解,studio2024,偶数,因子,萌新
From: https://www.cnblogs.com/ZzTzZ/p/18471803

相关文章

  • P9731 [CEOI2023] Balance 题解
    首先考虑\(S=2\)怎么做,我们把它转化为图论问题。对于每一行的两个点的颜色连一条无向边,那我们相当于要给这些边定向。最后要求\(|in_u-out_u|\le1\)。会发现这个要求很像欧拉回路。但是欧拉回路是要求每个点的入度和出度相等,怎么办呢?我们再建一个超级源点,向每个奇数度数的点......
  • 常见ElasticSearch 面试题解析(上)
    前言ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,......
  • 2024-10-17每日一题题解
    最大子段和题目描述给出一个长度为\(n\)的序列\(a\),选出其中连续且非空的一段使得这段和最大。样例输入72-43-12-43样例输出4题解tips:无脑暴力法:枚举每一段区间,再对每一段区间求和,时间复杂度为\(O(n^3)\),会超时(n为1e5,则应该在\(O(nlogn)\)的时间范围内)......
  • 【题解】【记忆化递归】——Function
    【题解】【记忆化递归】——FunctionFunction题目描述输入格式输出格式输入输出样例输入#1输出#1提示数据规模与约定1.思路解析2.AC代码Function通往洛谷的传送门题目描述对于一个递归函数w......
  • PTA L1系列题解(C语言)(L1_073 -- L1_080)
    L1-073人与神题目内容:L1-073人与神-团体程序设计天梯赛-练习集(pintia.cn)跨界大神L.PeterDeutsch有一句名言:“Toiterateishuman,torecursedivine.”(迭代的是人,递归的是神)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输......
  • HIAST Collegiate Programming Contest 2024(非完全题解)
    C题HZY做的,等他补题解//#pragmaGCCoptimize("O3,unroll-loops")//#pragmaGCCtarget("avx2,bmi,bmi2,lzcnt,popcnt")////如果在不支持avx2的平台上将avx2换成avx或SSE之一#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecon......
  • HNCPC2024 2024湖南省赛 题解
    目录写在前面I签到C签到E二进制,枚举,子集DPK转化,分层图最短路A枚举,DP,简单计算几何J单调性,枚举,数据结构HDP,字符串,KMPD莫比乌斯反演,枚举写在最后写在前面比赛地址:https://codeforces.com/gym/105423。以下按个人难度向排序。利益相关:现场赛Au。没有和去年一样整场犯唐......
  • [题解]NOIP2018模拟赛 plutotree
    题目描述给定一棵有\(n\)个节点的树,根节点为\(1\),节点\(i\)有权值\(w[i]\)。这棵树非常奇怪,它的每个叶子结点都有一条连向根节点的权值为\(0\)的边。给定\(q\)次询问,每次给定\(u,v\),请计算出一条\(u\)到\(v\)的路径(每条边最多经过\(1\)次),最小化该路径上的点权之和,并在其基础上最......
  • P10353 [PA2024] Grupa permutacji 题解
    神秘!在这些排列生成的置换群\(G\)里,若\(\exists\pi\inG\)使得\(\pi_i=k,\pi_j=l\),则所有这些\((k,l)\)被同样数量的\(\pi\inG\)通过前述方法得出。证明:设\(\pi(i,j)=(k,l),\pi'(i,j)=(k',l')\)(意义前述),则\(\pi^{-1}\circ\pi'(k,l)=(k',l')......
  • [题解]P3952 [NOIP2017 提高组] 时间复杂度
    P3952[NOIP2017提高组]时间复杂度我们把循环的嵌套关系看做树形结构,梳理一下\(3\)种情况:直接跳过当前子树:\(x,y\in\mathbb{N}\),且\(x>y\)。\(x=\tt{"n"},y\in\mathbb{N}\)。不跳过,并在处理完所有子节点后追加\(n\)的时间复杂度:\(x\in\mathbb{N},y=\tt{"n"}\)。......