题目1 : 折线中点

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线。

请你求出这条折线的中点坐标。

输入

第一行包含一个整数N。 (2 <= N <= 100)

以下N行每行包含两个整数Xi, Yi代表Pi的坐标。(0 <= Xi, Yi <= 10000)

输出

输出折线段的中点坐标。坐标保留一位小数。

样例输入
3
0 0
30 30
40 20
样例输出
20.0 20.0

第一题还是稍微友好些的,需要知道折线中点怎么算,可以先算出线段的重点,然后去枚举每个点的位置

#include <bits/stdc++.h>
using namespace std;
struct T
{
int x,y;
} A[];
const double eps=1e-;
int main()
{
int n;
cin>>n;
double x,y;
for(int i=; i<n; i++)
cin>>A[i].x>>A[i].y;
double len=;
for(int i=; i<n; i++)
len+=sqrt((A[i].x-A[i-].x)*(A[i].x-A[i-].x)+(A[i].y-A[i-].y)*(A[i].y-A[i-].y));
len/=2.0;
double a1,a2;
for(int i=; i<n; i++)
{
double tt=sqrt((A[i].x-A[i-].x)*(A[i].x-A[i-].x)+(A[i].y-A[i-].y)*(A[i].y-A[i-].y));
if(len+eps>=tt)len-=tt;
else
{
double t;
if(tt<=eps)t=;
else t=len/tt;
a1=t*A[i].x+(-t)*A[i-].x;
a2=t*A[i].y+(-t)*A[i-].y;
break;
}
}
printf("%.1f %.1f",a1,a2);
return ;
}

题目2 : 最小先序遍历

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

有一棵包含N个节点的二叉树,节点编号是1~N。

现在我们知道它的中序遍历结果A1, A2, ... AN。

只有中序遍历显然不能确定一棵二叉树的形态,可能有很多棵不同的二叉树符合给定的中序遍历。

那么你能从中找出先序遍历结果字典序最小的二叉树吗?

设先序遍历结果是P1, P2, ... PN。字典序最小指首先P1应尽量小,其次P2尽量小,再次P3尽量小…… 以此类推。

输入

第一行包含一个整数N。  (1 <= N <= 100)

以下N行每行包含一个整数Ai。 (1 <= Ai <= N)

输出

输出N行,依次是P1, P2, ... PN。代表最小的先序遍历结果。

样例输入
5
5
4
1
3
2
样例输出
1
4
5
2
3

B题就是个构造,贪心构造做左子树和右子树,前序遍历的访问数序是NLR,中序遍历的访问顺序是LNR,所以找区间最小的,然后在分别构造左右子树就可以了

#include<bits/stdc++.h>
using namespace std;
const int N=;
int a[N],b[N],n,c;
void dfs(int l,int r)
{
int f=-,mn=N;
for(int i=l; i<=r; i++)if(a[i]<mn)f=i,mn=a[i];
b[c++]=mn;
if(f>l)dfs(l,f-);
if(f<r)dfs(f+,r);
}
int main()
{
cin>>n;
for(int i=; i<n; i++)cin>>a[i];
dfs(,n-);
for(int i=; i<n; i++)cout<<b[i]<<"\n";
return ;
}

题目3 : 假期计划

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题。

为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影。(若干代指大于0)

每天要么看电影不刷题,要么刷题不看电影;不会既刷题又看电影。并且每天至少看一部电影,或者刷一道题。

现在小Ho要安排每天看哪些电影/刷哪些题目,以及按什么顺序看电影/刷题目。

注意A部电影两两不同并且B道题目也两两不同,请你计算小Ho一共有多少种不同的计划方案。由于结果可能非常大,你只需要输出答案对1000000009取模的结果。

只要某个事件(看电影或刷题)发生的日期不同或者在全部事件中的次序不同,就视为不同的方案。

输入

三个整数N, A和B。

对于30%的数据,N, A, B <= 10

对于60%的数据, 3 <= N <= 4000, 2 <= A <= 4000, 1 <= B <= 4000

对于100%的数据,3 <= N <= 100000, 2 <= A <= 100000, 1 <= B <= 100000, A + B >= N

输出

一个整数表示答案。

样例输入
4 2 2
样例输出
4

是个组合数学,可是我比较菜啊,当时没有推出来

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MD=1e9+;
ll A[],n,a,b,ans;
ll la(ll a,ll b)
{
a%=MD;
ll ans=;
while(b)
{
if(b&)ans=ans*a%MD;
b>>=;
a=a*a%MD;
}
return ans;
}
int main()
{
cin>>n>>a>>b;
A[]=;
for(int i=; i<=max(a,b); i++)
A[i]=A[i-]*i%MD;
for(int i=; i<=min(a,n-); i++)
if(b>=n-i)
ans=(ans+(A[a]*A[b]%MD*A[a-]%MD*la(A[a-i]*A[i-],MD-)%MD*A[b-]%MD*la(A[b-n+i]*A[n-i-],MD-)%MD*(i-)%MD))%MD;
cout<<ans;
return ;
}
 

[Offer收割]编程练习赛48的更多相关文章

  1. [hihocoder][Offer收割]编程练习赛48

    折线中点 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...

  2. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  3. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  4. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  5. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  6. HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)

    描述 H国编程联赛中有N只队伍,编号1~N. 他们计划在2018年一共进行M场一(队)对一(队)的比赛. 为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天.也就是如 ...

  7. [Offer收割]编程练习赛3 - 题目3 : 智力竞赛

    智力竞赛 Problem's Link ---------------------------------------------------------------------------- Mea ...

  8. [Offer收割]编程练习赛5-1 小Ho的防护盾

    #1357 : 小Ho的防护盾 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho的虚拟城市正在遭受小Hi的攻击,小Hi用来攻击小Ho城市的武器是一艘歼星舰,这艘歼星 ...

  9. hiho #1272 买零食 [Offer收割]编程练习赛2

    #1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...

随机推荐

  1. Python+selenium之窗口截图

    自动化用例是由程序去执行,因此有时候打印的错误信息并不明确,如果在脚本执行错误的时候能对当前窗口截图保存,那么通过图片就可以非常直观的看出出错的原因.webdriver提供了截图函数get_scree ...

  2. pc端常见布局样式总结(针对常见的)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. Java 文件操作-RandomAccessFile

    1. RandomAccessFile     Java提供了一个可以对文件随机访问的操作,访问包括读和写操作.该类名为RandomAccessFile.该类的读写是基于指针的操作. 1)文件访问模式 ...

  4. JAVA图形界面常用知识点总会《代码分析》

    1. package CLASS16.bin.com.GridLayout; import javax.swing.ImageIcon;import javax.swing.JFrame;import ...

  5. python 基础之格式化输出

    字符占位符%s #_cvvh:"chenxi" #date: 2019/6/24 print ('chhjg') # 格式化输出 name = input("Name:& ...

  6. 2018.4.8 Mac/Win 破解StartUml软件

    Mac破解 在桌面选择前往----前往文件夹-----输入"/应用程序/StarUML.app/Contents/www/license/node/LicenseManagerDomain. ...

  7. Bootstrap历练实例:标签页内的下拉菜单

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. NOIP模拟赛 czy的后宫5

    描述 czy要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,czy希望来的妹子们的美丽值总和最大(虽然……). czy有一个周密的电话通知网络,它其实就是一棵树,根结 ...

  9. Windows 10 建立wifi热点

    如果当前是台式机那么需要一个usb的无线网卡,这里要注意如果你是使用台式机并且通过有线的方式上网,但是你的无线网卡适配器不能在禁用状态. 这里首先打开[运行]输入cmd,打开cmd(注意,这里要使用管 ...

  10. java的重载(overload) (2013-10-11-163 写的日志迁移

    有以下几点: 1.方法名相同. 2.方法的 参数类型.个数.顺序至少有一项不同. 3.方法的返回类型可以不同. 4.方法的修饰符可以不同. 5.仅返回类型和修饰符不同也不可以构成重载.   ----- ...