bzoj 2832
题解:
首先有一个比较显然的事情是如果我们确定了买的次数这道题就可以简单的贪心了
但是答案和买的次数是什么关系呢。。
好像是可以三分的 所以应该是单峰的
这里用了模拟退火,而且是没有处理失败情况的模拟退火
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=;
ll total,f,n,ans;
struct re{
ll a,b;
}a[N];
bool cmp(re x,re y)
{
return(x.a<y.a);
}
double Random() { return rand()/(double) RAND_MAX ;}
/*ll judge(ll x)
{
if (x<=0) return 0;
ll xx=total-f*x,day=0,res=0;
for (ll i=1;i<=n;i++)
{
if (log2(x)+log2(a[i].a)>log2(xx))
{
res+=xx/a[i].a;
break;
}
ll num=min(xx/a[i].a/x,a[i].b-day+1);
day+=num; xx-=num*a[i].a*x;
res+=num*x;
}
ans=max(ans,res);
return(res);
}*/
ll judge(ll times)
{
if(times<=) return ;
ll Money = total - times * f;
ll res = , num, day = ;
for(int i=;i<=n;i++)
{
num = min(Money / a[i].a / times, a[i].b - day + );
Money -= num * a[i].a * times;
day += num; res += times * num;
if(day <= a[i].b)
{
num = Money / a[i].a;
res += num;
ans = max(ans, res);
return res;
}
}
ans = max(ans, res);
return res;
}
void sa(double T)
{
ll now=;
while (T>=)
{
ll a=now+(ll)(T*(Random()*-));
if (a<=) a=T*Random();
ll de=judge(a)-judge(now);
if (de>) now=a;
T*=0.97;
}
}
/*void sa(double T)
{
ll Now = 1;
while(T >= 1)
{
ll A = Now + (ll)(T * (Random()*2-1)) ;
if(A<=0) A = T*Random();
ll dE = judge(A) - judge(Now);
if(dE > 0)
Now = A;
T *= 0.97;
} }*/
int main()
{
srand(time()^size_t(new char));
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
while (cin>>total>>f>>n)
{
ans=;
for(ll i=;i<=n;i++)
cin>>a[i].a>>a[i].b;
sort(a+,a+n+,cmp);
ll m=n,d=-;
n=;
for (ll i=;i<=m;i++)
if (a[i].b>d) a[++n]=a[i],d=a[i].b;
sa(total/f+);
cout<<ans<<endl;
}
return ;
}
bzoj 2832的更多相关文章
- 【BZOJ】【1067】 【SCOI2007】降雨量
思路题 玛雅,这分类讨论快讨论地疯了…… 从huzecong神的题解那里得到的灵感…… 首先考虑最好确定的情况:为true的时候,此时必须同时满足 1.x和y这两年的降雨量已知,且rain[x]< ...
- BZOJ 1067 降雨量(RMQ-ST+有毒的分类讨论)
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 4399 Solved: 1182 [Submit][Stat ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
随机推荐
- page.isvalid
背景 看到这个标题,想了半天,为啥用的.应该是当初前台要动态增加行这个事情,当初用.net真是用傻了,竟然对html.aspx原理不大清楚,对于html也想着后台生成.真是弱智啊.谈到这里,想到c#这 ...
- selenium之css定位小结
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
- BeautifulSoup解析器的选择
BeautifulSoup解析器 在我们使用BeautifulSoup的时候,选择怎样的解析器是至关重要的.使用不同的解析器有可能会出现不同的结果! 今天遇到一个坑,在解析某html的时候.使用htm ...
- android端 socket长连接 架构
看过包建强的<App研发录>之后对其中的基础Activity类封装感到惊讶,一直想找一种方式去解决关于app中使用socket长连接问题,如何实现简易的封装来达到主活动中涉及socket相 ...
- js学习——函数
函数声明 function funName(parameter){} 函数表达式,并把函数存储在变量x中 //不用给函数名,后续并不能直接用给定的函数名调用 var x = function(a){r ...
- Confluence 6 生产环境备份策略
如果你是下面的情况,Confluence 的自动每日 XML 备份可能适合你: 正在评估使用 Confluence 你对数据库的管理并不是非常熟悉同时你的 Confluence 安装实例的数据量并不大 ...
- Confluence 6 理解你许可证的用户数
基于你的许可证类型,在你 Confluence 可以被注册的用户也许有限制. 在许可证明细页面中,将会告诉当前使用了多少的许可证(你注册的用户数量). 包括仅仅在 Confluence 中可以使用gl ...
- 【mongoDB高级篇①】聚集运算之group与aggregate
group 语法 db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在 ...
- Linux 用户(user)和用户组(group)管理概述
一.理解Linux的单用户多任务,多用户多任务概念: Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们 ...
- java多线程快速入门(十九)
如何停止线程 1.使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了) package com.cppdy; class MyThread15 extends T ...