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】跨时代的更多相关文章

  1. [JZOJ2679] 跨时代

    题目 题目大意 给你一堆边,你要将它们围成面积最大的矩形. 边不一定要用完,而且围成的矩形不能凸出一块. \(n\leq 16\) \(l_i \leq 15\) 思考历程 看到这题的第一眼,就会立马 ...

  2. 跨时代的分布式数据库 – 阿里云DRDS详解(转)

    原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...

  3. 跨时代的MySQL8.0新特性解读

    目录 MySQL发展历程 MySQL8.0新特性 秒级加列 性能提升 文档数据库 SQL增强 共用表表达式(CTEs) 不可见索引(Invisible Indexes) 降序索引(Descending ...

  4. APP技术演化的路

    谈起APP,大家都太熟悉不过了,今天想谈谈这么多年技术演化的路. 早期一些大公司就开始做一些APP了,例如facebook.google等国外的公司就已经开发这个技术路线,那个时候的APP数量很少,基 ...

  5. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

    ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...

  6. ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  7. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  8. 【转】解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

    ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东 ...

  9. 手把手写一个html_json信息源

    html_json用于从网页里提取json数据. 这里用新浪读书的书讯举个例子,手把手写一个html_json信息源. 打开新浪读书的首页,可以看到页面下方有最新.书讯.童书.小说等几个Tab,这里我 ...

随机推荐

  1. jsp-application应用

    application有两种应用,1是当作map,代码如下 <body> <%! int i=1; %> <% application.setAttribute(&quo ...

  2. HashMap底层实现原理及面试问题

    ①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...

  3. 【校OJ】选网线

    暑假学校OJ上的题目. 一道很有意思的二分. 题意:三个数组,每个数组各选一个数出来看是否能组成目标数. 题解:前两个数组两两的和组合一下,二分第三个数组,找是否能组成目标数. 代码: #includ ...

  4. 在普通类中获取Spring管理的bean

    1.在项目中添加下面的类: import org.springframework.context.ApplicationContext; import org.springframework.cont ...

  5. java oop第09章_JDBC02(CRUD操作)

    第09章_JDBC02(CRUD操作) CRUD(CREATE . RETIVE . UPDATE . DELETE)增删改查. DAO中会提供一些CRUD操作方法,调用者可以通过调用这些方法完成相应 ...

  6. redis随记

    CONFIG REWRITE  将config文件  将服务器当前所使用的配置记录到 redis.conf 文件中.

  7. PHP之最长回文串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...

  8. Android开发 了解ViewModel

    前言 ViewModel是google推出的一个数据处理框架,ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据ViewModel中数据会一直存活即使 activity ...

  9. windwos下的转excel到PDF并预览的工具,有Aspose,Spire,原生Office三种方式

    SchacoPDFViewer 项目链接:https://github.com/tiancai4652/SchacoPDFViewer/tree/master 主要实现了对于Excel文件转换PDF, ...

  10. Windows where

    WHERE [/R dir] [/Q] [/F] [/T] pattern... 描述:    显示符合搜索模式的文件位置.在默认情况下,搜索是在当前目录和 PATH    环境变量指定的路径中执行的 ...