P11229 [CSP-J 2024] 小木棍题解
P11229 [CSP-J 2024] 小木棍
题意
现在小 S 希望拼出一个正整数,满足如下条件:
· 拼出这个数恰好使用 n 根小木棍;
· 拼出的数没有前导 0;
· 在满足以上两个条件的前提下,这个数尽可能小。
思路
一步一步想
测试点1,2暴力
由于大家都能想到就不细细道来
特殊性质
这道题的特殊性这非常有用,可以帮我们想正解(60pts也可以拿一等了)

先来看特殊性质A,用一年级的小棒摆一摆,会发现位数尽量小的有益度大于全部写1.
那么我们可以用8来填充每个位置。
再来看特殊性质B,会发现一个神奇的规律,我们可以先保证8最多,然后剩下的手动切为最小
这可是一到找规律的好题,注意余数为3时有一个特判
小心卡常60pts(虽然我也不知道怎么TLE)
#include<bits/stdc++.h>
using namespace std;
int d[]={-1,-1,1,7,4,3,6,8,10};
void f(long long n){
if(n<=8) {
cout<<d[n]<<'\n';
return ;
}
else if(n%7==0){
while(n){
cout<<8;
n-=7;
}
cout<<'\n';
return ;
}
else if(n%7==1){
cout<<10;
n-=8;
while(n){
cout<<8;
n-=7;
}
cout<<'\n';
return ;
}
else if(n%7==2){
cout<<18;
n-=9;
while(n){
cout<<8;
n-=7;
}
cout<<'\n';
return ;
}
else if(n%7==3){
cout<<22;
n-=9;
while(n){
cout<<8;
n-=7;
}
cout<<'\n';
return ;
}
}
int main(){
int t;
cin>>t;
while(t--){
long long n;cin>>n;
f(n);
}
}
代码100pts
#include<bits/stdc++.h>
using namespace std;
const int f[10]= {0,-1,1,7,4,2,6,8,10};
int x,n,d,b;
int main() {
cin>>x;
for(int i=x; i; i--) {
b++;
if(b>x) return 0;
cin>>n;
if(n<=8)cout<<f[n];
else {
d=n%7;
if(d==0) {
for(int j=1; j<=n/7; j++)cout<<8;
}
if(d==1) {
cout<<10;
for(int j=1; j<n/7; j++)cout<<8;
}
if(d==2) {
cout<<1;
for(int j=1; j<=n/7; j++)cout<<8;
}
if(d==3) {
if(n==10)cout<<22;
else {
cout<<200;
for(int j=1; j<=n/7-2; j++)cout<<8;
}
}
if(d==4) {
cout<<20;
for(int j=1; j<n/7; j++)cout<<8;
}
if(d==5) {
cout<<2;
for(int j=1; j<=n/7; j++)cout<<8;
}
if(d==6) {
cout<<6;
for(int j=1; j<=n/7; j++)cout<<8;
}
}
cout<<'\n';
}
}
感谢大家阅读
300分拿捏
P11229 [CSP-J 2024] 小木棍题解的更多相关文章
- 洛谷 P1120 小木棍 题解
每日一题 day54 打卡 Analysis 一,管理员已经在题目中告诉你输入时去掉长度大于50的木棍. 二,想好搜索什么.很明显我们要枚举把哪些棍子拼接成原来的长棍,而原始长度(原来的长棍的长度)都 ...
- 小木棍 (codevs 3498)题解
[问题描述] 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过100. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长 ...
- 题解 P1120 【小木棍 [数据加强版]】
题面 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编程帮 ...
- 【题解】洛谷P1120 小木棍(搜索+剪枝+卡常)
洛谷P1120:https://www.luogu.org/problemnew/show/P1120 思路 明显是搜索题嘛 但是这数据增强不是一星半点呐 我们需要N多的剪枝 PS:需要先删去超出50 ...
- 一本通&&洛谷——P1120 小木棍 [数据加强版]——题解
题目传送 一道特别毒瘤能提醒人不要忘记剪枝的题. 首先不要忘了管理员的话.忘把长度大于50的木棍过滤掉真的坑了不少人(包括我). 显然是一道DFS题 .考虑剪枝. 找找搜索要面临的维度.状态:原始木棍 ...
- 题解0007:小木棍(P1120)
(错误记录) 题目链接:https://www.luogu.com.cn/problem/P1120 题目描述:几根同样长的木棍,小冥把它们随意砍成了n段: 然后他又吃饱了撑的想把木棍拼上: 但是这个 ...
- 洛谷P1120 小木棍
洛谷1120 小木棍 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长 ...
- P1120 小木棍 [数据加强版] 回溯法 终极剪枝
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...
- [Luogu P1120]小木棍·加强版
#\(\mathcal{Description}\) 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 \(50\) . 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开 ...
- [UVA307]小木棍 Sticks
题目大意:有一堆小木棍,把它们接成相同长度的小木棍,问结果的小木棍的最小长度是多少,多组数据 题解:$dfs$,各种剪枝. 卡点:无 C++ Code: #include <cstdio> ...
随机推荐
- Python MP3 归一化器和长度分割器实用工具开发指南
引言 在数字音频处理领域,MP3文件作为最流行的音频格式之一,其音量标准化和文件分割是两个常见的需求场景.许多用户都遇到过下载的MP3文件音量过小需要调整,或者需要将长音频文件分割成更小片段以便于管理 ...
- Nginx反向代理-九五小庞
location /ris-core-api/ { proxy_pass http://ris-core-backend/; proxy_set_header X-Forwarded-For $pro ...
- 量子计算先驱David Schuster的二十年探索之路
量子计算先驱David Schuster的二十年探索之路 从理论突破到工业标准 2004年,当时还是耶鲁大学博士生的Schuster在<自然>杂志发表开创性论文,首次实现超导电路与微波光子 ...
- 套路的人心:MySQL使用delete删除数据的正确套路!
为啥MySQL不建议用DELETE删数据?说白了,你可能还真不配用它 阿里面试问这个问题,不是***难你,是想看看你到底是CRUD民工,还是能把数据库当朋友用的老炮儿. 一.DELETE听起来很清爽, ...
- Linux TCP/UDP socket 通信和IO多路复用
1.socket 通信 1.1 大小端转换 主机字节序 16 位值 <==> 网络字节序 16 位值 主机字节序 32 位值 <==> 网络字节序 32 位值 #include ...
- AutoCAD中图形打印成PDF后尺寸为什么比实际绘图尺寸小几毫米?
最近有小伙伴提问,将CAD打印成PDF后,再将PDF文件重新导入到CAD软件中比对,发现图形比原CAD图形尺寸小了几毫米,如下: 这个主要是打印比例设置导致的,CAD默认打印比例默认勾选的是「布满图纸 ...
- MyEMS开源能源管理系统核心代码解读008
本期解读: 计量表能耗分析算法:myems/myems-api/reports/meterenergy.py 这段代码是一个用于生成能源报告的Python类,这个类名为Reporting,主要功能是通 ...
- 10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走!
10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走! 作者: Leon 嘿!还在用那些糊掉渣.传了N代的"祖传"表情包?朋友,你out辣!现在AI画图都卷成麻花了,尤 ...
- 一步一步学习使用FireMonkey动画(1) 使用动画组件为窗体添加动态效果
FireMonkey提供了一系列的动画控件,为基于FMX(FireMonkey的简称)的应用程序开发提供了较大的灵活性.在VCL上面创建动画,需要开发人员用一个TTimer组件,然后不断的移动目标物体 ...
- extern定义全局变量的使用
1.extern的作用 extern关键字在C/C++中用来声明一个全局变量,指出这个全局变量在另一个文件中定义,也可以用来引用一个全局变量 假设我们有三个文件:commands.h,main.cpp ...