Codeforces Beta Round #6 (Div. 2 Only)
A,B,C都是水题。。。
D题,直接爆搜。我换了好多姿势,其实最简单的方法,就能过。
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iostream>
using namespace std;
int que[];
int p[];
int o[];
int temp[];
int st[];
int ans,minz;
int n,a,b;
void dfs(int x,int sum)
{
int i;
if(sum >= minz) return;
if(x == n)
{
for(i = ;i <= n;i ++)
temp[i] = p[i];
for(i = ;i <= n-;i ++)
{
temp[i] -= o[i]*a;
temp[i-] -= o[i]*b;
temp[i+] -= o[i]*b;
}
for(i = ;i <= n-;i ++)
{
if(temp[i] >= ) break;
}
if(i == n)
{
if(sum < minz)
{
minz = sum;
for(i = ;i <= n-;i ++)
st[i] = o[i];
}
}
return ;
}
for(i = ;i <= ;i ++)
{
o[x] = i;
dfs(x+,sum+i);
}
}
int main()
{
int i,j;
scanf("%d%d%d",&n,&a,&b);
for(i = ; i <= n; i ++)
{
scanf("%d",&p[i]);
}
while(p[] >= )
{
que[ans++] = ;
p[] -= b;
p[] -= a;
p[] -= b;
}
while(p[n] >= )
{
que[ans++] = n-;
p[n-] -= b;
p[n] -= b;
p[n-] -= a;
}
for(i = ;i <= n;i ++)
{
if(p[i] >= ) break;
}
if(i == n+)
{
printf("%d\n",ans);
for(i = ;i < ans;i ++)
printf("%d ",que[i]);
printf("\n");
return ;
}
minz = ;
dfs(,);
printf("%d\n",minz+ans);
for(i = ;i < ans;i ++)
printf("%d ",que[i]);
for(i = ;i <= n-;i ++)
{
for(j = ;j <= st[i];j ++)
printf("%d ",i);
}
printf("\n");
return ;
}
E题,二分+rmq之类的,能求区间最值的算法。
题意是比较扯,按章节排列的n本书,要展示,最长能展示多少本,这一段的高度差要小于等于k,再输出总共多少中情况,把起点,终点输出。
rmq好久没写过了啊,记不得 什么东西了。
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iostream>
using namespace std;
int n,k;
int p[];
int dpmin[][];
int dpmax[][];
int bin[];
void CL(int n)
{
int i,j;
for(i = ;i <= n;i ++)
{
dpmin[][i] = p[i];
dpmax[][i] = p[i];
}
for(i = ;bin[i] <= n;i ++)
{
for(j = ;j + bin[i-] <= n;j ++)
{
dpmin[i][j] = min(dpmin[i-][j],dpmin[i-][j+bin[i-]]);
dpmax[i][j] = max(dpmax[i-][j],dpmax[i-][j+bin[i-]]);
}
}
}
int rmqmax(int s,int t)
{
int k = log((t-s+)*1.0)/log(2.0);
return max(dpmax[k][s],dpmax[k][t-bin[k]+]);
}
int rmqmin(int s,int t)
{
int k = log((t-s+)*1.0)/log(2.0);
return min(dpmin[k][s],dpmin[k][t-bin[k]+]);
}
int query(int s,int t)
{
return rmqmax(s,t) - rmqmin(s,t);
}
int judge(int mid)
{
int i,ans = ;
for(i = ;i <= n-mid+;i ++)
{
if(query(i,i+mid-) <= k)
ans ++;
}
return ans;
}
int main()
{
int i,j,str,end,mid;
scanf("%d%d",&n,&k);
for(i = ;i <= n;i ++)
scanf("%d",&p[i]);
bin[] = ;
for(i = ;i <= ;i ++)
bin[i] = bin[i-]*;
CL(n);
str = ;
end = n;
while(str < end)
{
mid = (str + end + )/;
if(judge(mid))
str = mid;
else
end = mid - ;
}
printf("%d %d\n",end,judge(end));
for(i = ;i <= n-end+;i ++)
{
if(query(i,i+end-) <= k)
{
printf("%d %d\n",i,i+end-);
}
}
return ;
}
Codeforces Beta Round #6 (Div. 2 Only)的更多相关文章
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
- Codeforces Beta Round #75 (Div. 2 Only)
Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...
- Codeforces Beta Round #74 (Div. 2 Only)
Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...
- Codeforces Beta Round #73 (Div. 2 Only)
Codeforces Beta Round #73 (Div. 2 Only) http://codeforces.com/contest/88 A 模拟 #include<bits/stdc+ ...
- Codeforces Beta Round #72 (Div. 2 Only)
Codeforces Beta Round #72 (Div. 2 Only) http://codeforces.com/contest/84 A #include<bits/stdc++.h ...
- Codeforces Beta Round #70 (Div. 2)
Codeforces Beta Round #70 (Div. 2) http://codeforces.com/contest/78 A #include<bits/stdc++.h> ...
随机推荐
- 关于Mesos和Kubernetes的区别
这个主题应该和服务发现注册一样,进入视野...
- JVM_Bind:8080 的解决办法【131031】
出错情况:运行 Tomcat 时报错 含义:8080 位置显示的端口被其他进程占用 解决方法: 方法1: 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID ...
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:公众号后台系统和数据都基本准备妥当了,可以来分享下我是如何开发本微信公众号的后台系统了 ...
- 让sql语句不排序,按照in语句的顺序返回结果
SELECT * FROM EVENT WHERE eventId IN(443,419,431,440,420,414,509) ORDER BY INSTR(',443,419,431,440, ...
- xUtils,butterknife...处理findviewbyid
在写android中,经常要出现大量的findviewbyid et_path = (EditText) findViewById(R.id.et_path); tv_info = (TextVi ...
- Hbase原理、基本概念、基本架构
来源:http://blog.csdn.net/woshiwanxin102213/article/details/17584043 概述 HBase是一个构建在HDFS上的分布式列存储系统:HBas ...
- phpstorm的安装、破解、和汉化
1.去官网下载最新版安装. 2.完成选择购买软件,下面选择中间那个账户方法License server,把这条链接复制下去:http://idea.qinxi1992.cn 3.下载汉化包resour ...
- Jmeter之安装(一)
Jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 小七这边之前用jmeter ...
- loadrunner通过字符串左右边界切割字符串
void web_reg_save_param_custom(char *sourceStr, char* outpuStr, char *leftBdry, char *rightBdry){ ...
- HTML meta viewport属性说明(mark)
什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤 到很小的窗口中(这样会破坏没有针对手 ...