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)的更多相关文章

  1. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  2. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  3. Codeforces Beta Round #79 (Div. 2 Only)

    Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...

  4. Codeforces Beta Round #77 (Div. 2 Only)

    Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...

  5. Codeforces Beta Round #76 (Div. 2 Only)

    Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...

  6. Codeforces Beta Round #75 (Div. 2 Only)

    Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...

  7. Codeforces Beta Round #74 (Div. 2 Only)

    Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...

  8. Codeforces Beta Round #73 (Div. 2 Only)

    Codeforces Beta Round #73 (Div. 2 Only) http://codeforces.com/contest/88 A 模拟 #include<bits/stdc+ ...

  9. Codeforces Beta Round #72 (Div. 2 Only)

    Codeforces Beta Round #72 (Div. 2 Only) http://codeforces.com/contest/84 A #include<bits/stdc++.h ...

  10. Codeforces Beta Round #70 (Div. 2)

    Codeforces Beta Round #70 (Div. 2) http://codeforces.com/contest/78 A #include<bits/stdc++.h> ...

随机推荐

  1. Pyqt QSS简单的Ui美化

    什么是QSS QSS 是Qt StyleSheet 的简称,意思就是qt的样式表格,StyleSheet 可以像CSS一样的写样式.使页面美化跟代码层分开,利于维护. QSS的语法 同css一样,他也 ...

  2. 在PYTHON3中,使用Asyncio来管理Event loop

    #!/usr/bin/env python # -*- coding: utf-8 -*- import asyncio import datetime import time def functio ...

  3. linux使用读写锁pthread_rwlock_t

    转自:http://blog.csdn.net/onlyou930/article/details/6755593 使用读写锁 配置读写锁的属性之后,即可初始化读写锁.以下函数用于初始化或销毁读写锁. ...

  4. 【rqnoj28】[Stupid]愚蠢的宠物

    题目描述 背景 大家都知道,sheep有两只可爱的宠物(一只叫神牛,一只叫神菜).有一天,sheep带着两只宠物到狗狗家时,这两只可爱的宠物竟然迷路了…… 描述 狗狗的家因为常常遭到猫猫的攻击,所以不 ...

  5. iOS 钥匙串 指纹识别 get和Post请求的区别

    01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...

  6. linux下SVN忽略文件/文件夹的方法

    linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...

  7. ERROR Shell: Failed to locate the winutils binary in the hadoop binary path

    文章发自:http://www.cnblogs.com/hark0623/p/4170172.html  转发请注明 14/12/17 19:18:53 ERROR Shell: Failed to ...

  8. Intel CPU MMX SSE SSE2/3/4指令集手册下载URL

    在线查看的网址: https://software.intel.com/sites/landingpage/IntrinsicsGuide/ Intel® 64 and IA-32 Architect ...

  9. Windows下安装 使用coreseek

    1.安装 1.01:到官网下载 coreseek-3.2.14 1.01_1 原理 缓存服务器: 准备数据 来自数据库 配置连接  生成索引 开启服务 流程:用户-> web->sphin ...

  10. AngularJS 验证

    AngularJS ng-model 指令用于绑定输入元素到模型中. 模型对象有两个属性: user 和 email. 我们使用了 ng-show指令, color:red 在邮件是 $dirty 或 ...