codeforces #472(div 1)
B(two point)
题意:
给出长度为n的非递减数组E[1..n],对于所有三元组(i,j,k),1<=i<j<k<=n且Ek-Ei<=U,我们需要计算出最大的(Ek-Ej)/(Ek-Ei)
n<=1e5
分析:
考虑枚举i和k,那么j一定是i+1
容易发现k越靠右值越大,所以k是满足Ek-Ei<=U的最大的k
于是two point就行了
C(思维)
题意:
主角每天对河流水位进行标记,相同水位不重复标记。给定每天的在河流水位上的标记数,求最小的所有天的河流水位下的标记数之和。
n<=1e5
分析:
等价于我们要最小化每天的标记总数
我们可以得到一些限制条件,f(i)>=f(i-1) f(i)>=m(i)+1
我们可以先从前到后扫一遍得到f
但有些问题,就是可能会发生标记数突变,即有两天标记数差值超过1
所以我们只能从后向前将依次递增,最后得到正确的f(i)
答案就是Σf(i)-m(i)-1
D(二维偏序)
题意:
在一个数轴上有n个飞机,每个飞机都有个飞行速度和初始位置。风速的范围是[-w,w]
若两架飞机i,j可以在某个风速下同时到达0号点,我们就计数一次
问最后计数的结果是多少
n<=1e5,w<=1e5
分析:
我们考虑作出每架飞机的到达时间与风速的函数图像,一定是光滑的单调曲线
如果两架飞机可以同时到达原点,那么就是两条曲线有交点,那就是(ta-ta')(tb-tb')<=0
于是就变成了一个二维偏序计数的问题,直接BIT就行了
E(dp)
题意:
有n个箱子,每个箱子都有一个高度,部分箱子是重要箱子,部分箱子是非重要箱子。
你需要找个垒箱子的顺序,使得底面高度在[l,r]范围内的重要箱子个数最多。
n<=10000,保证所有箱子的高度和<=10000
分析:
容易发现一个性质,那就是在[l,r]内连续放置的箱子一定是从小到大垒的
于是我们可以枚举在[l,r]内放连续的最小的x个重要箱子,然后其它箱子作为垒高度用的
但是可能会在这x个重要箱子上再放一个比较高的箱子,答案会+1
于是dp[j]表示凑出高度j最少需要多少个重要箱子,就可以根据dp[j]的值判断是否答案加1了
时间复杂度O(nh)
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct wjmzbmr
{
int a,b;
bool operator < (const wjmzbmr &x) const
{
if(b!=x.b) return b<x.b;
return a>x.a;
}
}a[maxn+];
int dp[maxn+];
int s[maxn+];
int n,l,r,m;
int ans;
int main()
{
scanf("%d%d%d",&n,&l,&r);
for(int i=;i<=n;++i) scanf("%d",&a[i].a);
for(int i=;i<=n;++i) scanf("%d",&a[i].b);
sort(a+,a+n+);
for(int i=;i<=maxn;++i) dp[i]=n+;
for(int i=n;i>=;--i) s[i]=s[i+]+a[i].a;
for(int i=;i<=n;++i) if(a[i].b==) ++m;else break;
//for(int i=1;i<=n;++i) printf("%d %d\n",a[i].a,a[i].b);
dp[]=;
for(int i=;i<=n;++i)
{
if(i>m)
for(int j=l;j+s[i]<=r;++j)
if(dp[j]<=n)
ans=max(ans,n-i++(dp[j]+m<i-));
for(int j=r;j>=a[i].a;--j)
dp[j]=min(dp[j],dp[j-a[i].a]+a[i].b);
}
for(int j=l;j<=r;++j)
if(dp[j]<n-m) ans=max(ans,);
printf("%d\n",ans);
return ;
}
codeforces #472(div 1)的更多相关文章
- Codeforces #344 Div.2
Codeforces #344 Div.2 Interview 题目描述:求两个序列的子序列或操作的和的最大值 solution 签到题 时间复杂度:\(O(n^2)\) Print Check 题目 ...
- Codeforces #345 Div.1
Codeforces #345 Div.1 打CF有助于提高做题的正确率. Watchmen 题目描述:求欧拉距离等于曼哈顿距离的点对个数. solution 签到题,其实就是求有多少对点在同一行或同 ...
- Codeforces Beta Round #27 (Codeforces format, Div. 2)
Codeforces Beta Round #27 (Codeforces format, Div. 2) http://codeforces.com/contest/27 A #include< ...
- Codeforces#441 Div.2 四小题
Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...
- codeforces #592(Div.2)
codeforces #592(Div.2) A Pens and Pencils Tomorrow is a difficult day for Polycarp: he has to attend ...
- codeforces #578(Div.2)
codeforces #578(Div.2) A. Hotelier Amugae has a hotel consisting of 1010 rooms. The rooms are number ...
- codeforces #577(Div.2)
codeforces #577(Div.2) A Important Exam A class of students wrote a multiple-choice test. There are ...
- codeforces #332 div 2 D. Spongebob and Squares
http://codeforces.com/contest/599/problem/D 题意:给出总的方格数x,问有多少种不同尺寸的矩形满足题意,输出方案数和长宽(3,5和5,3算两种) 思路:比赛的 ...
- Codeforces Round #472 Div. 1
A:某个格子被染黑说明该行和该列同时被选中,使用并查集合并,最后看每个集合中是否有未被染黑的格子即可. #include<iostream> #include<cstdio> ...
随机推荐
- shell脚本,一个字符一个字符输出。
[root@localhost wyb]# cat file abc def abc 789de f567 [root@localhost wyb]# cat fffile.sh #!/bin/bas ...
- Apache Commons Configuration的应用
Apache Commons Configuration的应用 Commons Configuration是一个java应用程序的配置管理工具.可以从properties或者xml文件中加载软件的配置 ...
- 661. Image Smoother@python
Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother t ...
- 【Java_多线程并发编程】基础篇——线程状态扭转函数
1. wait() sleep() yield() join()用法与区别 本文提到的当前线程是指:当前时刻,获得CPU资源正在执行的线程. 1.1 wait()方法 wait()方法定义在Objec ...
- MySQL 上移/下移/置顶
在编写网站系统时,难免会用到上移.下移.置顶的功能,今天小编就介绍一下我的思路. 首先,需要一张数据表: CREATE TABLE `a` ( `id` ) NOT NULL AUTO_INCREME ...
- tkinter学习-选择按钮
阅读目录 Checkbutton Radiobutton LabelFrame checkbutton : 说明:多选框控件,用于在程序中提供多项选择框,但是处理“多选一”的问题,还是交给 Radio ...
- 【转】4w+1h 教你如何做用户画像
记得14年开始做用户画像的时候,对于用户画像完全没有概念,以为是要画一幅幅图画,经过两年多的学习和理解,渐渐的总结出了一些方法和技巧,在这里就通过4个W英文字母开头和1个H英文字母开头的单词和大家分享 ...
- 数据结构( Pyhon 语言描述 ) — —第10章:树
树的概览 树是层级式的集合 树中最顶端的节点叫做根 个或多个后继(子节点). 没有子节点的节点叫做叶子节点 拥有子节点的节点叫做内部节点 ,其子节点位于层级1,依次类推.一个空树的层级为 -1 树的术 ...
- [转]Makefile中的wildcard/notdir/patsubst
1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsubst :替换通配符 例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd ...
- ubuntu介绍以及使用
Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球 ...