搬砖

搬砖体力最小化算法

搬砖

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 4646    Accepted Submission(s): 1060


Problem Description
  小明现在是人见人爱,花见花开的高富帅,整天沉浸在美女环绕的笙歌妙舞当中。但是人们有所不知,春风得意的小明也曾有着一段艰苦的奋斗史。

  那时的小明还没剪去长发,没有信用卡没有她,没有24小时热水的家,可当初的小明是那么快乐,尽管甚至没有一把破木吉他…

  之所以快乐,是因为那时的小明心怀逆袭梦想。有一天,小明为了给他心目中的女神买生日礼物,来到了某建筑工地搬砖挣钱。就在这个时候,工地上又运来了一卡车的砖,包工头让小明把卡车卸下来的那堆砖分成一块一块的(要求任何2块转都要分开)。作为资深搬运工,小明总是每次将一堆砖分为两堆,这时候,所消耗的体力是分完之后两堆砖数目的差值。

  现在,已知卡车运来的砖的数目,请告诉小明最少要花费多少体力才能完成包工头所要求的任务呢?
 

Input
输入数据第一行是一个正整数T(T<=100),表示有T组测试数据。
接下来T行每行一个正整数N(N<=10000000),表示卡车运来的砖块的数目。
 

Output
对于每组数据,请输出小明完成任务所需的最少体力数。
 

Sample Input
2 4 5
 

Sample Output
0 2
 
 #include <iostream>
#include <algorithm>
#include <string>
#include <stdio.h>
#include <cmath>
using namespace std;
int n,m,i,j,k;
int a[5000005];
void cmp()
{
    int i,j,k;
    a[0]=0;a[1]=0;a[2]=0; 
    for(i=3;i<5000003;i++)
    {   
       
            if(i%2==1)
          a[i]=a[i/2]+a[i-i/2]+1;
        else
          a[i]=a[i/2]+a[i-i/2];
        
    
    }

int main()
{
    cin>>m;
    cmp();
    while(m--)
    {
        cin>>n;
        if(n==1||n==0)cout<<a[i]<<endl;
        else
        {    if(n%2==0)
        cout<<a[n/2]+a[n-n/2]<<endl;
        else cout<<a[n/2]+a[n-n/2]+1<<endl;
        }
    }
    return 0;
}

关于“项目”的技术实现或代码示例,以下是相关信息整合后的解答: --- ### 方法一:理解“项目” “项目”通常指代一种自动化脚本或程序设计,用于模拟人类完成重复性任务。例如,在电商平台上抓取商品信息、比价或者批量下单等场景。“”在这里是一种形象化的说法,表示通过技术手段获取收益。 为了实现这类功能,需要掌握以下几个关键技术点: - 数据爬取(Web Scraping) - 自动化交互(Selenium, Puppeteer 等工具) - API 接口调用 - 数据存储与处理 --- ### 方法二:数据爬取的技术实现 对于简单的网页数据提取,“requests”库配合“BeautifulSoup”可以满足需求。以下是一个基本的 Python 示例代码,展示如何从一个网站抓取文本内容: ```python import requests from bs4 import BeautifulSoup url = "https://example.com" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 提取页面中的特定元素 data = soup.find_all('div', class_='item') for item in data: print(item.text.strip()) ``` 此代码适用于静态网页的数据采集。若目标网站采用动态加载,则需进一步研究 JavaScript 渲染机制。 --- ### 方法三:动态网页自动化的解决方案 针对动态渲染的网页,推荐使用 Selenium 工具来控制浏览器行为。下面是一段利用 Selenium 实现登录某平台的代码片段: ```python from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep driver = webdriver.Chrome() driver.get("https://login.example.com") sleep(2) username_input = driver.find_element(By.ID, "username") password_input = driver.find_element(By.ID, "password") submit_button = driver.find_element(By.CLASS_NAME, "btn-submit") username_input.send_keys("your_username") password_input.send_keys("your_password") submit_button.click() sleep(5) driver.quit() ``` 这段代码展示了如何模拟用户输入用户名和密码,并提交表单以完成登录过程。 --- ### 方法四:API 调用优化效率 许多现代服务提供官方 API 接口供开发者直接访问资源。相比手动解析 HTML 文档,这种方式更加高效稳定。假设某个电商平台提供了公开接口文档,可以通过如下方式快速请求所需数据: ```python import requests api_url = "https://api.example.com/products" params = {"category": "electronics", "page": 1} headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"} response = requests.get(api_url, params=params, headers=headers) if response.status_code == 200: products = response.json()["items"] for product in products: print(product["name"], product["price"]) else: print(f"Error: {response.status_code}") ``` 确保阅读目标站点的服务条款,避免违反规定导致账号封禁或其他法律后果。 --- ### 注意事项 1. **合法性**:在开发任何“项目”之前,请确认是否符合相关法律法规以及目标平台的使用政策。 2. **频率限制**:频繁地向服务器发送请求可能触发防护措施,建议合理设置延时间隔。 3. **错误处理**:实际运行过程中难免遇到异常情况,务必加入完善的 try-except 结构保护逻辑完整。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值