P3040 [USACO12JAN]贝尔分享Bale Share

想了一个二分 + 状压的思路, 嫌太麻烦了, 直接一个dfs + 最优性剪枝水了过去.
貌似比某些dp还快?

#include <cstdio>
#include <cstring>
#include <cassert>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 20 + 2;
inline int read(){
    char ch = getchar(); int x = 0;
    while(!isdigit(ch)) ch = getchar();
    while(isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
    return x;
}

int N;
int s[MAXN], sum;

int ans = (1 << 30);
void dfs(int u, int suma, int sumb, int sumc) {
    if(u == N + 1) return ans = min(ans, max(suma, max(sumb, sumc))), void();
    if(suma + s[u] < ans) dfs(u + 1, suma + s[u], sumb, sumc);
    if(sumb + s[u] < ans) dfs(u + 1, suma, sumb + s[u], sumc);
    if(sumc + s[u] < ans) dfs(u + 1, suma, sumb, sumc + s[u]);
    return ;
}

int main(){
    cin>>N;
    for(int i = 1; i <= N; i++) sum += (s[i] = read());
    sort(s + 1, s + N + 1, greater<int>());
    dfs(1, 0, 0, 0);
    printf("%d\n", ans);
    return 0;
}

原文地址:https://www.cnblogs.com/wsmrxc/p/9829253.html

时间: 2024-08-30 17:44:17

P3040 [USACO12JAN]贝尔分享Bale Share的相关文章

洛谷 P3040 [USACO12JAN]贝尔分享Bale Share

P3040 [USACO12JAN]贝尔分享Bale Share 题目描述 Farmer John has just received a new shipment of N (1 <= N <= 20) bales of hay, where bale i has size S_i (1 <= S_i <= 100). He wants to divide the bales between his three barns as fairly as possible. After

网页分享插件 share.js 国外常用

这两天做推广,要求实现页面分享到国外各大社交媒体的功能.自己去翻各大厂的文档的话,实现起来时间相当长. github 上找了个插件,很6. 地址: https://github.com/ellisonleao/sharer.js 支持主流的国外的社交媒体的分享. 主要支持: Twitter Facebook Linkedin Google Plus Email Whatsapp Telegram Viber Pinterest Tumblr Hackernews Reddit VK.com Bu

[USACO 2012 Jan Silver] Bale Share【DP】

传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=107 没想到太不应该了,真的不应该啊! f[i][j][k]表示前i个包,第一个包里共有j大小的物品,第二个包里共有k大小的物品是否成立,则方程为: f[i][j][k] = f[i - 1][j - a[i]][k] || f[i - 1][j][k - a[i]] || f[i - 1][j][k]; 观察方程,可以省去数组a改用单独一个变量,并使用滚动数组,详见代码. #i

新浪微博share分享接口请求奇葩错误

17年6月30号,微博正式转入牛逼状态: 限制原来的微博发布删除等接口:(想用就开套餐,不然别说话) 开放新的分享接口share,然而,在调用这个分享接口时候,就会出现各种各样的奇葩错误: 注意事项: 1.配置安全域名:就如名称所说,只能配置域名(没有域名,别说话): 2.status参数里面必须有一个url地址是这个域名的: --这个有点横: 注意:如果由于对参数编码后导致无法识别url,我这边编码后无影响. 3.建议:url前后最后加上空格: 有问题可以留言,虽然不一定能实时回复.

Share SDK分享

import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.Toast; import java.util.Hash

Delphi APP 開發入門(九)拍照與分享

Delphi APP 開發入門(九)拍照與分享 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:3022 發表時間:2014/07/01 tags: 行動開發 教學 App Delphi XE6 Android iOS Delphi APP 開發入門(八)SQLite資料庫 << 前情 在眾多行動APP中,除了遊戲類之外,熱門的APP不外乎都會與拍照.分享.地圖等相關的技術有關聯,今天筆者就與朋友們

IOS ShareSDK实现分享——微信分享

最近领导让添加ios 微信分享视频的功能,之前做的只有微信分享本地图片的功能. 查看官网并没有找到答案,后来在其官网论坛中http://bbs.mob.com/thread-20938-1-1.html 这里面发现新版的sdk(v3.2.1)中才添加的微信分享本地文件(mp3.mp4.docx.pdf等)的功能.可以支持就好办了.. 使用集成好的第三方框架可以节省许多代码量. 注意:申请shareSdk的apply,还有各个平台的appkey和appsecert(这真是非常麻烦的事情啊) 集成S

百度分享插件使用 ------将页面分享到各类主流社交软件

分享插件 <div class="bdsharebuttonbox" data-tag="share_1"> <a class="bds_mshare" data-cmd="mshare"></a> <a class="bds_qzone" data-cmd="qzone" href="#"></a> <

关于js分享功能的一些心得

1:微信js-sdk http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html# 在签名config一系列操作正确的情况下,检测手机端是否支持接口状况,关于微信提供的各种接口大概分成几种情况,一种是不需要严格用户信息的,换言之,就是你调用文档里的接口就可以使用了,比如预览图片之类:一种需要用户信息的,比如授权地理位置之类,这种就比较常见,通常得配置好官方文档需要的资源.最后一种我用到的就是分享功能了,微信sdk提供