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. 重温WCF之流与文件传输(七)

    WCF开启流模式,主要是设置一个叫TransferMode的属性,所以,你看看哪些Binding的派生类有这个属性就可以了. TransferMode其实是一个举枚,看看它的几个有效值: Buffer ...

  2. sql server 用户'sa'登录失败(错误18456)(转载)

    转载地址:http://thenear.blog.51cto.com/4686262/865544 用户'sa'登录失败(错误18456)解决方案图解 当我们在使用sql server 的时候可能会遇 ...

  3. Linux环境下使用perl编写CGI(httpd)

    例子1: /var/www/cgi-bin/hello.cgi #!/usr/bin/perl print "Content-type: text/html\n\n"; print ...

  4. linux设备驱动概述,王明学learn

    linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...

  5. hdu 4770(枚举 + dfs爆搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4770 思路:由于最多只有15个".",可以直接枚举放置的位置,然后判断是否能够全部 ...

  6. ios本地推送

    #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate //无论程序在 ...

  7. 智能车学习(十一)——陀螺仪学习

    一.学习说明 感觉就是配置I2C通信,然后直接移植51代码... 二.代码分享: 1.头文件: #ifndef I2C_GYRO_H_ #define I2C_GYRO_H_ /*********** ...

  8. 软引用SoftReference异步加载图片

    HashMap<String, SoftReference<Drawable>> imageCache 关于SoftReference这个类多少知道些机制,会用就ok了. 机制 ...

  9. Linux内核system_call中断处理过程

    “平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” men ...

  10. Java学习随笔1:Java是值传递还是引用传递?

    Java always passes arguments by value NOT by reference. Let me explain this through an example: publ ...