题目:

1.堆方块 

【题目描述】

给定N个方块,排成一行,将它们编号1到N。

再给出P个操作:

M i j表示将i所在的那一堆移到j所在那一堆的顶上。

C i表示一个询问,询问i下面有多少个方块。

你需要写一个程序来完成这些操作。

【输入文件】

第一行一个整数P。

接下来P行,每行一个操作。

【输出文件】

若干行,对应每个询问的答案。

【样例输入】

6

M 1 6

C 1

M 2 4

M 2 6

C 3

C 4

【样例输出】

1

0

2

【数据规模】

对于100%的数据 1<=P<=100000,1<=i,j<=N,1<=N<=30000

2.点的数目

【题目描述】

在一维数轴上有N个正整数点,以1..N进行编号。某些点比较特殊,称之为“怪点”。给定M段区间,每段区间有且仅有一个“怪点”。请根据这M个区间,推断出总共有多少个“怪点”。如果推断不出来,则输出-1。

【输入格式】

第一行为N和M。紧接着的M行,每行代表一个区间。

【输出格式】

怪点的数目。推断不出,则输出-1。

【输入样例】

5 3
1 4
2 5
3 4

【输出样例】

1

【样例解释】

由第3段区间知道,点3或点4为怪点,而第1,2段区间恰好包括了点3或点4。

【数据范围】

30%的数据,1<=N<=1000,1<=M<=200

100%数据,1 <= N <= 200,000,1 <= M <= 100,000

3. DORUCAK

【题目描述】

平面上y轴左边和右边各有一个凸多边形。求一条直线y=Ax+B,使得将这两个多边形都分成面积相等的两部分。

【输入格式】

第一行一个整数n,表示一个凸多边形有n个顶点;接下来的n行,每行两个实数x,y,表示这n个顶点的坐标;这个凸多边形在y轴左边。

第n+2行是一个整数m,表示国一个凸多边形有m个顶点,接下来的m行,每行两个实数x,y,表示这m个顶点的坐标。这个凸多边形在y轴右边。

两个凸多边形的顶点都是按逆时针的顺序给出,多边形中没有三点共线。

【输出格式】

输出A和B。答案保证存在,且唯一。A,B允许的误差范围为±0.001。

【输入样例1】

3

-6.000 1.000

-2.000 2.000

-5.000 6.000

5

1.000 -1.000

3.000 -2.000

6.000 0.000

4.000 3.000

1.000 2.000

【输出样例1】

-0.319961 1.556489

【输入样例2】

4

-5.000 -1.000

-3.000 -1.000

-3.000 6.000

-5.000 6.000

4

3.222 2.000

5.000 1.000

5.000 4.000

3.222 3.000

【输出样例2】

0.000000 2.500000

【数据范围】

50%的数据  3≤ N,M ≤ 20, −1000 < X < 1000, −1000 < Y < 1000

100%的数据 3 ≤ N,M ≤ 5000 , −1000 < X < 1000, −1000 < Y < 1000

题解:

1.并查集,每一次合并,记录是第几个

2.dp+单调队列优化

注意条件告诉我们的是:

1.i-j至少有一个奶牛

2.i-j最多有一个奶牛

然后就可以确定最大和最小的范围

3.

计算几何+二分

二分枚举a,然后继续二分枚举b

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
const int N=;
int m,f[N],d[N],last[N],x,y,sum[N];
char s[];
int find(int x)
{
int x1;
if (x!=f[x])x1=find(f[x]);else x1=x;
if (f[f[x]]!=x)d[x]+=d[f[x]];
f[x]=x1;
return x1;
}
int main()
{
freopen("cubes.in","r",stdin);
freopen("cubes.out","w",stdout);
scanf("%d",&m);
for (int i=;i<N;i++)
{
last[i]=;
f[i]=i;
}
while (m--)
{
scanf("%s%d",&s,&x);
int x1=find(x);
if (s[]=='M')
{
scanf("%d",&y);
int y1=find(y);
if (x1==y1)continue;
f[x1]=y1;
d[x1]=last[y1];
last[y1]+=last[x1];
}
else printf("%d\n",d[x]);
}
return ;
}
#include<bits/stdc++.h>
using namespace std;
const int INF=,N=;
int L[N],R[N],tr[N<<],n,m;
int Query(int node,int l,int r,int a,int b)
{
if(a<=)a=;
if(a>b||b<=)return ;
if(l>=a&&r<=b)return tr[node];
int mid=(l+r)>>,ret=-INF;
if(mid>=a)ret=Query(node<<,l,mid,a,b);
if(mid<b)ret=max(ret,Query(node<<|,mid+,r,a,b));
return ret;
}
void Modify(int node,int l,int r,int g,int d)
{
if(l==r){tr[node]=d;return;}
int mid=(l+r)>>;
if(mid>=g)Modify(node<<,l,mid,g,d);
else Modify(node<<|,mid+,r,g,d);
tr[node]=max(tr[node<<],tr[node<<|]);
}
int main()
{
freopen("photo.in","r",stdin);
freopen("photo.out","w",stdout);
scanf("%d%d",&m,&n);m++;
for(int i=;i<=m;i++)R[i]=i-;
for(int i=,a,b;i<=n;i++)
{
scanf("%d%d",&a,&b);
L[b+]=max(L[b+],a);
R[b]=min(R[b],a-);
}
for(int i=;i<=m;i++)L[i]=max(L[i],L[i-]);
for(int i=m-;i>=;i--)R[i]=min(R[i],R[i+]);
for(int i=;i<m;i++)
Modify(,,m,i,L[i]<=R[i]?Query(,,m,L[i],R[i])+:-INF);
printf("%d\n",max(-,Query(,,m,L[m],R[m])));
return ;
}
#include<bits/stdc++.h>
using namespace std;
const int INF=,N=;
int L[N],R[N],tr[N<<],n,m;
int Query(int node,int l,int r,int a,int b)
{
if(a<=)a=;
if(a>b||b<=)return ;
if(l>=a&&r<=b)return tr[node];
int mid=(l+r)>>,ret=-INF;
if(mid>=a)ret=Query(node<<,l,mid,a,b);
if(mid<b)ret=max(ret,Query(node<<|,mid+,r,a,b));
return ret;
}
void Modify(int node,int l,int r,int g,int d)
{
if(l==r){tr[node]=d;return;}
int mid=(l+r)>>;
if(mid>=g)Modify(node<<,l,mid,g,d);
else Modify(node<<|,mid+,r,g,d);
tr[node]=max(tr[node<<],tr[node<<|]);
}
int main()
{
freopen("photo.in","r",stdin);
freopen("photo.out","w",stdout);
scanf("%d%d",&m,&n);m++;
for(int i=;i<=m;i++)R[i]=i-;
for(int i=,a,b;i<=n;i++)
{
scanf("%d%d",&a,&b);
L[b+]=max(L[b+],a);
R[b]=min(R[b],a-);
}
for(int i=;i<=m;i++)L[i]=max(L[i],L[i-]);
for(int i=m-;i>=;i--)R[i]=min(R[i],R[i+]);
for(int i=;i<m;i++)
Modify(,,m,i,L[i]<=R[i]?Query(,,m,L[i],R[i])+:-INF);
printf("%d\n",max(-,Query(,,m,L[m],R[m])));
return ;
}
#include<bits/stdc++.h>
using namespace std;
#define sqr(x) ((x)*(x))
const int N=;
int n[];
double K,B,Px,Py,Qx,Qy,X,Y,x[][N],y[][N],s[];
double Xot(double x1,double y1,double x2,double y2)
{
return x1*y2-x2*y1;
}
bool Is(double x1,double y1,double x2,double y2)
{
double s1=Xot(x1-Qx,y1-Qy,Px-Qx,Py-Qy);
double s2=Xot(Px-Qx,Py-Qy,x2-Qx,y2-Qy);
if (s1*s2<=) return false;
X=(x1*s2+x2*s1)/(s1+s2);
Y=(y1*s2+y2*s1)/(s1+s2);
return true;
}
double Area(int k)
{
Px=-1E5;Py=K*Px+B;
Qx=1E5;Qy=K*Qx+B;
n[]=;
for (int i=;i<=n[k];i++)
{
if (Is(x[k][i-],y[k][i-],x[k][i],y[k][i]))
x[][++n[]]=X,y[][n[]]=Y;
if (Xot(x[k][i]-Px,y[k][i]-Py,Qx-Px,Qy-Py)>)
x[][++n[]]=x[k][i],y[][n[]]=y[k][i];
}
double res=;
for (int i=;i<n[];i++)
res+=Xot(x[][i]-x[][],y[][i]-y[][],
x[][i+]-x[][],y[][i+]-y[][]);
return abs(res);
}
int main()
{
freopen("dorucak.in","r",stdin);
freopen("dorucak.out","w",stdout);
for (int k=;k<;k++)
{
scanf("%d",&n[k]);
for (int i=;i<=n[k];i++)
scanf("%lf%lf",&x[k][i],&y[k][i]);
x[k][]=x[k][n[k]];
y[k][]=y[k][n[k]];
for (int i=;i<n[k];i++)
s[k]+=Xot(x[k][i]-x[k][],y[k][i]-y[k][]
,x[k][i+]-x[k][],y[k][i+]-y[k][]);
s[k]=abs(s[k]);
}
double LK=-1E5,RK=1E5;
while (LK+1E-<RK)
{
K=(LK+RK)/2.0;
double LB=-1E5,RB=1E5;
while (LB+1E-<RB)
{
B=(LB+RB)/2.0;
if (Area()*2.0<=s[])LB=B;
else RB=B;
}
B=(LB+RB)/2.0;
if (Area()*2.0<=s[])LK=K;
else RK=K;
}
printf("%.6lf %.6lf\n",K,B);
return ;
}

第n次考试的更多相关文章

  1. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  2. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  3. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  4. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  5. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  6. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  7. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  8. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

  9. PAT 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

  10. 硕士研究生入学考试复试试卷答案.tex

    %该模板用于数学答题 \documentclass[UTF8]{ctexart}%[中文编码 UTF8] \usepackage{fancyhdr}%{页眉页脚页码} \pagestyle{fancy ...

随机推荐

  1. dll和ocx的简单理解

    一.dll dll就是打包一些程序或者算法,根据我的理解分个类 1.算法的打包 比如打包C/C++的一些纯代码算法,计算平均值,极值,标准差....,只需要向外提供接口和入口参数,外部即可轻松调用 2 ...

  2. vim常用的配置

    .vimrc配置 syntax enable syntax on set relativenumber set autoindent set tabstop=4 set expandtab " ...

  3. UDP的socketasynceventargs

    C# 使用 SocketAsyncEventArgs 实现UdpSocket系列 http://www.cnblogs.com/zwq194/archive/2012/10/30/2746393.ht ...

  4. 项目梳理4——WebApi项目,使用注释填充Description字段

    web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设 ...

  5. LA 3135 阿格斯(优先队列)

    https://vjudge.net/problem/UVALive-3135 题意: 你的任务是编写一个称为Argus的系统.该系统支持一个Register的命令 Register Q_num Pe ...

  6. UVa 11039 设计建筑物

    https://vjudge.net/problem/UVA-11039 题意: 有n个绝对值各不相同的非0整数,选出尽量多的数,排成一个序列,使得正负号交替且绝对值递增. 思路:正数存一个数组,负数 ...

  7. 机器学习-数据可视化神器matplotlib学习之路(一)

    直接上代码吧,说明写在备注就好了,这次主要学习一下基本的画图方法和常用的图例图标等 from matplotlib import pyplot as plt import numpy as np #这 ...

  8. ThreadPool开启多线程时支持最大连接200个(默认为2个),不加则会超时

    //ThreadPool System.Net.ServicePointManager.DefaultConnectionLimit = 200;

  9. Mask R-CNN论文理解

    摘要: Mask RCNN可以看做是一个通用实例分割架构. Mask RCNN以Faster RCNN原型,增加了一个分支用于分割任务. Mask RCNN比Faster RCNN速度慢一些,达到了5 ...

  10. Codeforces 877E - Danil and a Part-time Job(dfs序+线段树)

    877E - Danil and a Part-time Job 思路:dfs序+线段树 dfs序:http://blog.csdn.net/qq_24489717/article/details/5 ...