【JZOJ2679】跨时代
description
钟逆时针而绕,恶物狰狞的倾巢,我谦卑安静地于城堡下的晚祷,压抑远古流窜的蛮荒暗号,而管风琴键高傲的说,那只是在徒劳。我的乐器在环绕,时代无法淘汰我霸气的皇朝。 你无法预言,因为我越险,翅越艳;没有句点,跨时代蔓延,翼朝天。 月下浮雕,魔鬼的浅笑,狼迎风嚎,蝠翔似黑潮,用孤独去调尊严的色调。我跨越过世代,如兽般的姿态,琴声唤起沉睡的血脉。不需要被崇拜,如兽般的悲哀,只为永恒的乐曲存在,醒过来。 去年万众瞩目的《跨时代》专辑发行之后,周杰伦又开始了他的世界巡回演唱会《超时代》。有人说过:如果你喜欢一个人,那你一定要去看一场他的演唱会;电视机前的1m距离和在演唱会现场哪怕100m的距离,两种感觉都是截然不同的。
所以小G作为铁杆歌迷,也计划带着小Y去看周杰伦的演唱会。 演唱会当然要圈出一个空地,然后才能布置道具。 演唱会的第一站,公司临时跟当地的消防局借了n个栏杆,打算用这n个栏杆围出一个矩形。而麻烦的是,这些栏杆有长有短,这就给围场地带来了一些难度。 所以公司聘请你来写一个程序,计算用这n个栏杆做多围出面积多大的矩形。
(注:必须要刚好围成一个矩形,即不能出现多余的边长,且不能切断栏杆,但所给栏杆不一定要全部用上)
analysis
暴力深搜
四条边是不是,四个$dfs$伺候
注意各种剪枝
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define INF 1000000007
#define ll long long
#define sqr(x) x*x
#define fo(i,a,b) for (ll i=a;i<=b;++i)
#define fd(i,a,b) for (ll i=a;i>=b;--i)
using namespace std;
ll a[20];
bool bz[20];
ll n,tot,ans;
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline bool cmp(ll x,ll y)
{
return x>y;
}
inline void dfs4(ll x,ll y,ll z,ll zz)
{
if (y*2>tot-zz*2 || y>z || tot-zz*2-z<y)return;
if (x>n)
{
if (y<z)return;
ans=max(ans,z*zz);
return;
}
if (bz[x]==0)
{
bz[x]=1,dfs4(x+1,y+a[x],z,zz);
bz[x]=0,dfs4(x+1,y,z,zz);
}
else dfs4(x+1,y,z,zz);
}
inline void dfs3(ll x,ll y,ll z)
{
if (y*2>tot-z*2 || y>z)return;
if (x>n)
{
if (ans==0 || (ans>0 && y*z>ans))dfs4(1,0,y,z);
return;
}
if (bz[x]==0)
{
bz[x]=1,dfs3(x+1,y+a[x],z);
bz[x]=0,dfs3(x+1,y,z);
}
else dfs3(x+1,y,z);
}
inline void dfs2(ll x,ll y,ll z)
{
if (y*2>=tot || y>z)return;
if (x>n)
{
if (y<z)return;
if (ans==0 || (ans>0 && y*((tot-y*2)/2)>ans))dfs3(1,0,y);
return;
}
if (bz[x]==0)
{
bz[x]=1,dfs2(x+1,y+a[x],z);
bz[x]=0,dfs2(x+1,y,z);
}
else dfs2(x+1,y,z);
}
inline void dfs1(ll x,ll y)
{
if (y*2>=tot)return;
if (x>n)
{
if (ans==0 || (ans>0 && y*((tot-y*2)/2)>ans))dfs2(1,0,y);
return;
}
bz[x]=1,dfs1(x+1,y+a[x]);
bz[x]=0,dfs1(x+1,y);
}
int main()
{
freopen("T1.in","r",stdin);
n=read();
fo(i,1,n)tot+=a[i]=read();
sort(a+1,a+n+1,cmp),dfs1(1,0);
if (!ans)printf("No Solution\n");
else printf("%lld\n",ans);
return 0;
}
【JZOJ2679】跨时代的更多相关文章
- [JZOJ2679] 跨时代
题目 题目大意 给你一堆边,你要将它们围成面积最大的矩形. 边不一定要用完,而且围成的矩形不能凸出一块. \(n\leq 16\) \(l_i \leq 15\) 思考历程 看到这题的第一眼,就会立马 ...
- 跨时代的分布式数据库 – 阿里云DRDS详解(转)
原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...
- 跨时代的MySQL8.0新特性解读
目录 MySQL发展历程 MySQL8.0新特性 秒级加列 性能提升 文档数据库 SQL增强 共用表表达式(CTEs) 不可见索引(Invisible Indexes) 降序索引(Descending ...
- APP技术演化的路
谈起APP,大家都太熟悉不过了,今天想谈谈这么多年技术演化的路. 早期一些大公司就开始做一些APP了,例如facebook.google等国外的公司就已经开发这个技术路线,那个时候的APP数量很少,基 ...
- 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介
ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...
- ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘
开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...
- [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向
[.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...
- 【转】解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介
ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东 ...
- 手把手写一个html_json信息源
html_json用于从网页里提取json数据. 这里用新浪读书的书讯举个例子,手把手写一个html_json信息源. 打开新浪读书的首页,可以看到页面下方有最新.书讯.童书.小说等几个Tab,这里我 ...
随机推荐
- jsp-application应用
application有两种应用,1是当作map,代码如下 <body> <%! int i=1; %> <% application.setAttribute(&quo ...
- HashMap底层实现原理及面试问题
①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...
- 【校OJ】选网线
暑假学校OJ上的题目. 一道很有意思的二分. 题意:三个数组,每个数组各选一个数出来看是否能组成目标数. 题解:前两个数组两两的和组合一下,二分第三个数组,找是否能组成目标数. 代码: #includ ...
- 在普通类中获取Spring管理的bean
1.在项目中添加下面的类: import org.springframework.context.ApplicationContext; import org.springframework.cont ...
- java oop第09章_JDBC02(CRUD操作)
第09章_JDBC02(CRUD操作) CRUD(CREATE . RETIVE . UPDATE . DELETE)增删改查. DAO中会提供一些CRUD操作方法,调用者可以通过调用这些方法完成相应 ...
- redis随记
CONFIG REWRITE 将config文件 将服务器当前所使用的配置记录到 redis.conf 文件中.
- PHP之最长回文串
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...
- Android开发 了解ViewModel
前言 ViewModel是google推出的一个数据处理框架,ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据ViewModel中数据会一直存活即使 activity ...
- windwos下的转excel到PDF并预览的工具,有Aspose,Spire,原生Office三种方式
SchacoPDFViewer 项目链接:https://github.com/tiancai4652/SchacoPDFViewer/tree/master 主要实现了对于Excel文件转换PDF, ...
- Windows where
WHERE [/R dir] [/Q] [/F] [/T] pattern... 描述: 显示符合搜索模式的文件位置.在默认情况下,搜索是在当前目录和 PATH 环境变量指定的路径中执行的 ...