【HDOJ】P2058 The sum problem
题意很简单就是给你一个N和M,让你求在1-N的那些个子序列的值等于M
首先暴力法不解释,简单超时
再仔细想一想可以想到因为1-N是一个等差数列,可以运用我们曾经学过的只是来解决
假设开始的位置为s,结束的位置为t,那么一定要满足这个等式
(s+t)(t-s+1)=2*m
又因为S和T都是整数,所以左边的括号中每一项都是等式
所以s+t和t-s+1一定是2*m的因式
所以分解因式并带入就可以求出s和t
假设
s+t=a
t-s+1=b
a*b=2*m
解得
s=(a-b+1)/2
t=(a+b-1)/2
很明显a>b,因为题目都是从小到大排列,所以在选取的时候可以倒叙进行寻找a
另外要注意并不是每一个a,b都可以算出一个s,t的,所以要临时判断一下
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std; int n,m,s,t,sum,a,b; int main(){
while(cin>>n>>m,n!= && m!=){
/*
s=1;
t=1;
sum=0;
for (t=1;t<=n;t++){
sum+=t;
while(sum>m) sum-=s++;
if (sum==m) printf("[%d,%d]\n",s,t);
}
//暴力版
*/
m*=;
for (int i=sqrt(m);i>=;i--){
if (!(m%i)){
a=m/i;
b=i;
if ((a-b+)%) s=;
else s=(a-b+)/;
if ((a+b-)%) t=;
else t=(a+b-)/;
if (s<=n && t<=n && s>= && t>=) printf("[%d,%d]\n",s,t);
}
}
printf("\n");
}
return ;
}
【HDOJ】P2058 The sum problem的更多相关文章
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【HDOJ】3473 Minimum Sum
划分树解.主席树解MLE. /* 3473 */ #include <iostream> #include <sstream> #include <string> ...
- 【HDOJ】4267 A Simple Problem with Integers
树状数组.Easy. /* 4267 */ #include <iostream> #include <string> #include <map> #includ ...
- 【HDOJ】1003 Max Sum
最开始使用递归DP解,stack overflow.化简了一些,复杂度为O(n)就过了. #include <stdio.h> int main() { int case_n, n; in ...
- 【HDOJ】1244 Max Sum Plus Plus Plus
这题目一直wa,原来是因为我把JUDGE写错了,对拍了一下午都没检查出来.水DP啊. #include <cstdio> #include <cstring> #include ...
- 【HDOJ】3828 A + B problem
显然需要贪心,重叠越长越好,这样最终的串长尽可能短.需要注意的是,不要考虑中间结果,显然是个状态dp.先做预处理去重,然后求任意一对串的公共长度. /* 3828 */ #include <io ...
- 【HDOJ】1016 Prime Ring Problem
经典DP,写的可能麻烦了一些. #include <stdio.h> #define false 0 #define true 1 ]; ]; ]; void DFS(int, int, ...
- 【题解】CF986E Prince's Problem(树上差分+数论性质)
[题解]CF986E Prince's Problem(树上差分+数论性质) 题目大意: 给定你一棵树,有点权\(val_i\le 10^7\).现在有\(m\)组询问给定参数\(x,y,w\)问你对 ...
- 【BZOJ3489】A simple rmq problem(KD-Tree)
[BZOJ3489]A simple rmq problem(KD-Tree) 题面 BZOJ 题解 直接做肯定不好做,首先我们知道我们是一个二维平面数点,但是限制区间只能出现一次很不好办,那么我们给 ...
随机推荐
- Python系列——常用第三方库
幕布视图(更加方便.明了):https://mubu.com/doc/AqoVZ8x6m0 参考文献:嵩天老师的Python讲义 模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了 ...
- JS对象 window对象 屏幕可用高和宽度 1. screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如任务栏。 2. screen.availHeight 属
屏幕可用高和宽度 1. screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如任务栏. 2. screen.availHeight 属性返回访问者屏幕的高度,以像素 ...
- Lambda select 动态字段
直接上代码 //测试数据 public static List<User> myList = new List<User>() { , Name=,IsChild=false} ...
- spring security学习总结
这几天一直在学习spring security的相关知识.逛各大论坛,看相关api与教学视频,获益良多! 简介 Spring Security是为基于Spring的企业应用系统提供声明式的安全访问控制 ...
- SpringCloud---分布式服务跟踪---Spring Cloud Sleuth
1.概述 1.1 为什么要用到服务跟踪? 随着业务的发展,系统规模也会变得越来越大,各服务之间的调用关系也变得越来越错综复杂: 通常一个由客户端发起的请求 在后端系统中会经过多个不同的微服务调用 ...
- getElementsBy 系列方法相比querySelector系列的区别
最近在做的项目中,使用querySelectorAll获取了同class名的元素后,绑定onmouseover事件和onmouseout后,多次在几个元素上移入移出操作时,控制台出现了报错的问题,最后 ...
- 【leetcode】965. Univalued Binary Tree
题目如下: A binary tree is univalued if every node in the tree has the same value. Return true if and on ...
- Java 基础 - 如何理解String不可变
ref: https://www.zhihu.com/question/20618891 第一个答案. 扩展“ Java 基础 - System.arraycopy() 浅拷贝 深拷贝
- go导入包
go导入包 go有很多内置的函数,例如println,不需要引用即可使用.但是如果不借助go的标准库或者第三方库,我们能做的事情有限.在go中,使用关键字import在代码中导入一个包并使用. 修改我 ...
- Http请求工具类 httputil
package com.snowfigure.kits.net; import java.io.BufferedReader; import java.io.IOException; import j ...