第六场C

题意:B的数据加强版

思路:RMQ

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 int a[200005];
 5 int d[200005][20];
 6 struct node{
 7     int x,y;
 8 }b[2005];
 9 bool cmp(node p,node q){
10     return p.x<q.x;
11 }
12 int RMQ(int l,int r){
13     int k=0;
14     while((1<<(k+1))<=r-l+1)
15         k++;
16     return min(d[l][k],d[r-(1<<k)+1][k]);
17 }
18 int main(){
19     int n,kk;
20     scanf("%d%d",&n,&kk);
21     memset(d,127,sizeof(d));
22     for(int i=0;i<n;i++){
23         scanf("%d",&a[i]);
24         d[i][0]=a[i];
25     }
26     for(int j=1;(1<<j)<=n;j++)
27     for(int i=0;i+(1<<j)-1<n;i++){
28         d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);
29     }
30     int m;
31     scanf("%d",&m);
32     for(int i=1;i<=m;i++){
33         scanf("%d%d",&b[i].x,&b[i].y);
34     }
35     int xx,yy;
36     int sum;
37     int ssum=0;
38     sort(b+1,b+1+m,cmp);
39     for(int i=1;i<=m;i++){
40         for(int j=i+1;j<=m;j++){
41             sum=0;
42             yy=b[i].y;
43             yy=RMQ(b[i].x,b[j].x-1);
44             sum+=b[j].x-b[i].x;
45             sum+=b[i].y-yy;
46             sum+=abs(yy-b[j].y);
47             if(sum<=kk) ssum++;
48         }
49     }
50
51     cout<<ssum<<endl;
52 }
时间: 2024-10-27 13:38:37

第六场C的相关文章

2014多校联合-第六场

最近这两场好无奈啊... 今天这场最后30分钟敲1001,压力倍增,虽然思路比较明确,但是代码打起来不怎么容易. 但是还是好在25分钟左右debug结束.提交wa,再提交,依然WA.......最后5分钟,还是没有AC掉. 一开始以为是精度问题,后来才sb的发现原来数组开小了. 在压力环境下保证代码的效率和质量真不是一件容易的事情.不过数组开小了,真是不可原谅. 1001:Map 题目相当于几条链表.把链表排成几行. 然后枚举每一列的状态会被操作多少次. 然后把和累加起来,然后直接除以状态总数.

多校第六场 HDU 4927 JAVA大数类

题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1?ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小时,从T到WA,唉--对算组合还是不太了解啊,现在对组合算比较什么了-- import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String[] args) { Sca

组队赛第六场:贪心+RMQ加二分

UVALive 6606 Meeting Room Arrangement COJ有这题,一模一样的,COJ应该是从这个OJ上拿的吧. 按右端点排序,然后从第一个开始贪心的取相邻的. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<queue> #include<set> #in

HDU 4923 Room and Moor (多校第六场C题) 单调栈

Problem Description PM Room defines a sequence A = {A1, A2,..., AN}, each of which is either 0 or 1. In order to beat him, programmer Moor has to construct another sequence B = {B1, B2,... , BN} of the same length, which satisfies that: Input The inp

2014多校第六场 1005 || HDU 4925 Apple Tree

题目链接 题意 : 给你一块n×m的矩阵,每一个格子可以施肥或者是种苹果,种一颗苹果可以得到一个苹果,但是如果你在一个格子上施了肥,那么所有与该格子相邻(指上下左右)的有苹果树的地方最后得到的苹果是两倍,如果(i,j)有一颗苹果树,(i-1,j)与(i,j+1)施了肥,那么苹果应该是1的两倍2,2的两倍4,最后是4个苹果,问你怎么安排苹果和施肥的格子使最后得到的苹果最多. 思路 : 画了图就可以看出来,苹果和苹果,肥与肥之间不要相邻就好了,所有的苹果之间都有施肥,所有施肥的格子都被苹果隔开了才能

【HDU】4923 Room and Moor(2014多校第六场1003)

Room and Moor Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 263    Accepted Submission(s): 73 Problem Description PM Room defines a sequence A = {A1, A2,..., AN}, each of which is either 0

2014多校第六场 || HDU 4927 Series 1(杨辉三角组合数)

题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 3 4 5 6 (2-1) (3-2) (4-3) (5-4)(6-5) (3-2-2+1)(4-3-3+2)(5-4-4+3)(6-5-5+4) (4-3-3+2-3+2+2-1)(5-4-4+3-4+3+3-2)(6-5-5+4-5+4+4-3) (5-4-4+3-4+3+3-2-4+3+3-2

hdu5353||2015多校联合第六场1001 贪心

http://acm.hdu.edu.cn/showproblem.php?pid=5353 Problem Description There are n soda sitting around a round table. soda are numbered from 1 to n and i-th soda is adjacent to (i+1)-th soda, 1-st soda is adjacent to n-th soda. Each soda has some candies

2014 HDU多校弟六场J题 【模拟斗地主】

这是一道5Y的题目 有坑的地方我已在代码中注释好了 QAQ Ps:模拟题还是练的太少了,速度不够快诶 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h> #include <iostream> #include <climits> #include <cstring> #include <cmath> #inclu

2014多校第六场 1010 || HDU 4930 Fighting the Landlords (模拟)

题目链接 题意 : 玩斗地主,出一把,只要你这一把对方要不了或者你出这一把之后手里没牌了就算你赢. 思路 : 一开始看了第一段以为要出很多次,实际上只问了第一次你能不能赢或者能不能把牌出尽. 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 5 using namespace std ; 6 7 char str1[20],str2[20] ; 8 int hash1[20],hash2[2