hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)
题意:
给你两个数n,k问你是否怎在这样一个序列:
(1)这个序列有k个正整数,且不重复.
(2)这k个数的和是n.
(3)其中有k-1个数的和是一个平方数.
思路:
直接暴搜,一开始剪枝没写好,TLE了几次。这个题目我们可以枚举所有小于n的平方数,然后搜索去构造,用k-1个数构造出来当前的这个平方数,同时自己还写了几个小枝.
a:求了一个枚举的下界,那就是1+2+3+...+ k-1,上界是n。
b:对于每一次,枚举深搜的时候的最大数 = 当前枚举数 i -(1+2+..+k-2)
c:深搜的时候,因为枚举是越来越大的,那么如果当前的和sum,剩余的枚举个数(k-1-s),剩下的全是连续的,那么剩下的数的平均数是当前数now加上(k-1-s)/ 2,如果当前的和加上剩下的数的最小和大于当前枚举的平方数,那么当前状态失败,表示是
if(sum + (k - 1 - s) * (now + (k - 1 - s) / 2) > nowsum) return.
#include<stdio.h>
#include<string.h>
int mark[222222];
int n ,k ,ok ,nowsum ,max ,nowmk; void DFS(int now ,int s ,int sum)
{
if(s == k - 1)
{
if(sum == nowsum) ok = 1;
return;
}
if(sum + (k - 1 - s) * (now + (k - 1 - s) / 2) > nowsum) return;
for(int i = now + 1 ;i <= max && !ok;i ++)
if(i != nowmk) DFS(i ,s + 1 ,sum + i);
} int main ()
{
memset(mark ,0 ,sizeof(mark));
for(int i = 1 ;1 ;i ++)
{
int tmp = i * i;
if(tmp > 200000) break;
mark[tmp] = 1;
}
while(~scanf("%d %d" ,&n ,&k))
{
int min = 0;
for(int i = 1 ;i <= k - 1 ;i ++)
min += i;
ok = 0;
for(int i = n - 1 ;i >= min && !ok;i --)
{
if(!mark[i]) continue;
nowmk = n - i;
max = 0;
for(int j = 1 ;j < k - 1 ;j ++)
max += j;
max = i - max;
nowsum = i;
DFS(0 ,0 ,0);
}
if(ok) printf("YES\n");
else printf("NO\n");
}
return 0;
}
hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)的更多相关文章
- hdu 4400 离散化+二分+BFS(暴搜剪枝还超时的时候可以借鉴一下)
Mines Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 紫书 习题7-14 UVa 307(暴搜+剪枝)
这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...
- POJ 1167 The Buses 暴搜+剪枝
思路: 先把能选的路线都预处理出来 按照能停的车的多少排个序 (剪枝1) 搜搜搜 如果当前剩的车÷当前能停车的多少+deep>=ans剪掉 (剪枝2) //By SiriusRen #inclu ...
- CF1340B Nastya and Scoreboard(暴搜剪枝/dp)
Question 一个n个数码位的分数板,每一个数码位都是一个七段数码管,现在给出每个数码位的显示情况,问再点亮k段数码管的话能显示的最大的数是多少,如果不能构成一串数字,就输出-1 Solution ...
- 洛谷 1312 Mayan游戏——暴搜+剪枝
题目:https://www.luogu.org/problemnew/show/P1312 自己写了很久.又T又WA的. 发现对题理解有误.改完后应该只有T了,但还是T的. 自己写了许多剪枝,很鸡肋 ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
- POJ 2132 暴搜OR Floyd
题意: 给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少. 一些经验(WA/TLE的经验): 1. 无脑暴搜 是会TLE的--. 2. 关于精度 dyf神牛说了:long l ...
- hdu 5952 Counting Cliques 求图中指定大小的团的个数 暴搜
题目链接 题意 给定一个\(n个点,m条边\)的无向图,找出其中大小为\(s\)的完全图个数\((n\leq 100,m\leq 1000,s\leq 10)\). 思路 暴搜. 搜索的时候判断要加进 ...
- 长沙理工大学第十二届ACM大赛L 选择困难症 (剪枝暴搜)
链接:https://ac.nowcoder.com/acm/contest/1/L 来源:牛客网 选择困难症 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 131072K,其他语言 ...
随机推荐
- Maven配置ali镜像
Maven目录,Conf文件夹下settings.xml 找到mirrors节点 添加配置 <mirror> <id>alimaven</id> <mirro ...
- 《Selenium自动化测试实战:基于Python》之 Selenium IDE插件的安装与使用
第3章 Selenium IDE插件的安装与使用 京东:https://item.jd.com/13123910.html 当当:http://product.dangdang.com/292045 ...
- IT培训有哪些坑(一)?
IT行业资薪很高,每年都有很多同学冲着高薪去,去各个培训机构学习,期望将来能找个高薪的工作,有个好的出路.我们先不说你选多好,多靠谱的机构,我先来告诉大家有哪些不靠谱,不能选,选了就入坑了的. IT培 ...
- rpm 命令介绍
1. rpm 命令常用选项说明 1.1 功能模式选项 命令 解释 -i --install 安装软件,例:rpm -ivh tree-1.6.0-10.el7.x86_64.rpm -U --upgr ...
- 翻译:《实用的Python编程》08_00_Overview
目录 | 上一节 (7 高级主题) | 下一节 (9 包) 8. 测试和调试 本节介绍与测试.日志和调试有关的基本主题. 8.1 测试 8.2 日志,错误处理和诊断 8.3 调试 目录 | 上一节 ( ...
- DSP代码搬运至RAM运行
程序运行过程中,有些函数或程序段和数据等经常调用,正常情况下在FLASH中运行处理消耗时间和资源较大,通常将其移植至RAM中运行,可提高运行效率. 如: 1 #pragma CODE_SECTION( ...
- Egress-Assess-出口数据安全功能测试
简介 Egress-Assess是一款用于测试出口数据检测功能的工具,该工具可辅助完成数据安全模型测试. 在各种情况下,我们的团队都会尝试从我们正在运行的网络中提取数据,并将其移至另一个位置以进行脱机 ...
- 如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app
上一篇内容:如何快速搭建自己的ERP系统,4步源码快速安装odoo教程 了解什么是odoo的插件模块 odoo在基础的框架代码之下,可以安装自己的应用程序或者业务逻辑,也可以对原有的模块进行二次修改 ...
- CIE标准色度系统(上)
一.颜色匹配 为了满足工业生产对颜色特性的定量化和标准化的需要,由国际照明委员会(CIE)的协调和指导下,先后提出CIE1931和CIE1964标准色度观察者光谱三刺激值,由此奠定了现代色度学基础. ...
- OO_Unit1_表达式求导总结
OO_Unit1_表达式求导总结 OO的第一单元主要是围绕表达式求导这一问题布置了3个子任务,并在程序的鲁棒性与模型的复杂度上逐渐升级,从而帮助我们更好地提升面向对象的编程能力.事实也证明,通过这 ...