目录

A - Hamburgers

B - River Hopscotch

C - Cup

D - Fibonacci

E - Dating with girls(1)

F - Median

G - sort


A - Hamburgers

题意:

Polycarpus非常喜欢汉堡包。他特别喜欢自己亲手做的汉堡包。Polycarpus认为制作汉堡包的原料只有三种:面包、香肠和奶酪。他用一串字母“B”(面包)、“S”(香肠)和“C”(奶酪)写下他最喜欢的“Polycarpus汉堡”的食谱。配方中的成分从下到上,例如,配方“B SCBS”代表汉堡,其中成分从下到上依次为面包、香肠、奶酪、面包和香肠。

Polycarpus在厨房里有nb块面包、ns块香肠和nc块奶酪。此外,附近的商店有三种配料,一片面包的价格是pb卢布,一片香肠的价格是ps,一片奶酪的价格是pc。

Polycarpus有r卢布,他准备在上面购物。他最多能做多少个汉堡包?你可以假设Polycarpus不能将任何一片面包、香肠或奶酪弄碎或切片。此外,该店每种配料的数量不限。

思路:

看到这种题目就立刻想到二分了,二分最多做几个汉堡然后判断钱够不够就可以了,注意有的材料可能不被用到,直接模拟也行

代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long longdouble PI = acos(-1.0);
double eps=1e-5;char b[101];
ll nb, ns, nc;
int pb, ps, pc;
ll r;//卢布数int lb = 0, ls = 0, lc = 0;
bool check(ll mid)
{ll rr = r;ll b=lb*mid;ll s=ls*mid;ll c=lc*mid;if(nb<b)  //不足{rr-=(b-nb)*pb;}if(ns<s)  //不足{rr-=(s-ns)*ps;}if(nc<c)  //不足{rr-=(c-nc)*pc;}if(rr>=0)return true;if(rr<0)return false;
}
int main(void)
{int len;scanf("%s",b);len=strlen(b);for(int i=0; i<len; i++){if(b[i]=='B')lb++;else if(b[i]=='S')ls++;else if(b[i]=='C')lc++;}cin>>nb>>ns>>nc;cin>>pb>>ps>>pc;cin>>r;ll right=r+nb+ns+nc;ll left=0;ll mid=0;while(right>left){mid=(left+right+1)/2;//(3+3+1)/2=3;(3+4+1)/2=4;使相差为1的两个数凑高,相同的两个数结果不变int mark=check(mid);if(mark==true) //mid偏小left = mid ;if(mark==false)//mid偏大right=mid-1 ;}mid=(left+right+1)/2;//再更新一次,不然不是最新值cout<<mid<<endl;return 0;
}

B - River Hopscotch

题意:

有一条宽度为 L 的河,河的两端各有一块石头,河中有 n 块石头,每块石头到河起点一端的石头都有唯一的距离,现在要移除 m 块石头,求移除 m 块石头后,剩下的石头的间距的最小值最大

思路:

二分这个最短距离,然后求出如果这个是最短距离,我们需要在原来的基础上去掉几个石头。

去掉石头的个数如果比M大,说明我们枚举的最短距离比真正的最短距离大了。

去掉的石头个数比M小,说明我们枚举的最短距离比真正大最短距离小了。

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll n,m,l,num[50010];
const ll inf = 0x3f3f3f3f;
ll work(ll l,ll r) //二分枚举
{while(l<=r){ll mid=(l+r)>>1;int ans=0,s=0;for(int i=1; i<n; i++){if(num[i]-num[s]>=mid)//i -> s 的距离大于 mid 了,所以要更新起点s=i;elseans++; //删去的石块数}if(ans>m)  //可以删去石块的数量大于m,说明跳跃距离太大了r=mid-1;elsel=mid+1;}return r;
}
int main()
{while(~scanf("%lld%d%d",&l,&n,&m)){num[0]=0,num[n+1]=l;  //中央 ,岸边for(int i=1; i<=n; i++)scanf("%lld",&num[i]);n+=2;sort(num,num+n);  //排序ll minn=inf;for(int i=1; i<n; i++)minn=min(minn,num[i]-num[i-1]);  //最小的跳跃距离printf("%lld\n",work(minn,l));}
}

C - Cup

题意:

WHU ACM团队有一个大杯,每个成员都用它喝水。现在,我们知道了杯子里的水的体积,你能告诉我们它的高度吗?

杯顶和杯底圆的半径已知,杯的高度也已知。

思路:

二分求答案,这里在求半径时涉及到了相似比

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;const double pi=acos(-1.0);
double r,R,h;
double check(double x) //mid
{double u=r+x*(R-r)/h;  //相似比 u/(R-r)=mid/h +rreturn pi/3*x*(u*u+r*r+u*r);}
int main()
{int t;scanf("%d",&t);while(t--){double top,bottom,mid,v;scanf("%lf%lf%lf%lf",&r,&R,&h,&v);top=100;bottom=0;while(top-bottom>1e-10){mid=bottom+(top-bottom)/2;if(check(mid)>v)top=mid;elsebottom=mid;}printf("%.6lf\n",mid);}return 0;
}

D - Fibonacci

题意:

在斐波那契整数序列中,F0=0、F1=1和Fn=Fn− 1+Fn− 2代表n≥ 2.例如,斐波那契序列的前十项是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

斐波那契序列的另一个公式是

给定一个整数n,您的目标是计算Fn的最后4位。

思路:

矩阵快速幂,要初始化一个矩阵1 1

                                                  1 0

矩阵快速幂基础讲解 - 林夕-梦 - 博客园 (cnblogs.com)

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int MAX_N = 10;
const int MOD = 10000;
struct matrix
{LL m[MAX_N][MAX_N];
};
long long N;
matrix res,a;
matrix first,final;
void init()
{res.m[0][0]=res.m[0][1]=res.m[1][0]=1;res.m[1][1]=0;a.m[0][0]=0;a.m[1][0]=1;
}
matrix multi(matrix a,matrix b)
{matrix tmp;for(LL i=0;i<2;i++)for(LL j=0;j<2;j++){tmp.m[i][j]=0;for(LL k=0;k<2;k++)tmp.m[i][j]+=a.m[i][k]*b.m[k][j];tmp.m[i][j]%=MOD;}return tmp;
}matrix fast_mod(matrix a,int n)
{while(n){if(n&1)res=multi(res,a);a=multi(a,a);n>>=1;}return res;
}int main()
{while(scanf("%lld",&N)!=EOF&&N>=0){if(N==0)printf("0\n");else{init();first=fast_mod(res,N-1);for(LL i=0;i<2;i++)for(LL j=0;j<1;j++){final.m[i][j]=0;for(LL k=0;k<2;k++)final.m[i][j]+=first.m[i][k]*a.m[k][j];final.m[i][j]%=MOD;}printf("%d\n",final.m[0][0]);}}return 0;
}

E - Dating with girls(1)

题意:

HDU的每个人都知道男孩的数量大于女孩的数量。但现在,每个男孩都想和漂亮女孩约会。女孩们喜欢和智商较高的男孩约会。为了测试男孩的智商,女孩提出问题,男孩谁能解决问题

正确且花费较少的时间与他们约会。

问题是:给你n个正整数和一个整数k。你需要计算方程x+y=k有多少不同的解。x和y必须在给定的n个整数中。如果x0!=x1或y0!=y1。

现在聪明的Acmers,尽快解决问题。所以你可以和漂亮女孩约会。太棒了!

思路:

用map标记每个数,map查找k-x是否有y,有就加一

用map是为了去重,防止k=4时1 1 1 3的情况

代码:

#include<iostream>
#include<map>
#include<cstdio>
using namespace std;
#define ll long long
int main()
{int t;cin>>t;while(t--){int n,k,x;int ans=0;map<int,int> mp;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&x);mp[x]=1;}map<int,int>::iterator it;for(it=mp.begin(); it!=mp.end(); it++){if(mp.count(k-it->first)==1)ans+=1;}printf("%d\n",ans);}
}

F - Median

题意:

给定N个数字,X1,X2,XN,让我们计算每对数字的差值:∣席XJ∣ (1.≤ i<j≤ N) 。我们可以通过这项工作得到C(N,2)的差异,现在你的任务是尽快找到差异的中值!

请注意,在这个问题中,如果差值的数量m为偶数,则中值被定义为(m/2)第二个最小数字。例如,在m=6的情况下,您必须找到第三个最小值。

思路:

尺取在范围内查找差异中值

其中用到upper_bound函数在指定范围内查找大于目标值的第一个元素

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#define MT(a,b) memset(a,0,sizeof(a))
#define ll long long
using namespace std;
const int maxn = 1e5+5;
int a[maxn];///dp[maxn][20];
int n,m;bool check(int x)
{int sum=0;for(int i=0; i<n-1; i++){int p=upper_bound(a,a+n,a[i]+x)-a;sum+=p-i-1;}return sum>=(m+1)/2;
}int main()
{while(cin>>n){for(int i=0; i<n; i++)scanf("%d",&a[i]);sort(a,a+n);m=n*(n-1)/2;int l=0,r=a[n-1]-a[0],ans=(l+r)/2;while(l<=r){int mid=(l+r)/2;if(check(mid))ans=mid,r=mid-1;elsel=mid+1;}cout<<ans<<endl;}return 0;
}

G - sort

题意:

给你n个整数,请按从大到小的顺序输出其中前m大的数。

思路:

sort排一遍序在输出就ok

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int a[1000005];
int main()
{long long n,m;while(scanf("%lld%lld",&n,&m)!=EOF){for(int i=0; i<n; i++)scanf("%d",&a[i]);sort(a,a+n);for(int i=n-1; i>n-m-1; i--){printf("%d",a[i]);if(i!=n-m)printf(" ");}printf("\n");}
}

2021年暑期训练阶段四Day1相关推荐

  1. HRBU 2021年暑期训练阶段三Day1

    目录 A - Similar Strings 题目链接: 题意: 做法: B - card card card 题目链接: 题意: 做法: C - String 题目链接: 题意: 做法: D - C ...

  2. 2021年暑期训练阶段四Day2

    目录 A - Drying B - Garland C - How Many Tables D - Can you solve this equation? E - CD F - Monthly Ex ...

  3. HRBU 2021年暑期训练阶段二Day3

    目录 A - Shuffle'm Up 题目链接: 题意: 做法: B - Prime Path 题目链接: 题意: 做法: C - Function Run Fun 题目链接: 题意: 做法: D ...

  4. 2021年暑期训练阶段三Day2

    目录 A - Jessica's Reading Problem B - Bound Found C - Subsequence D - Tallest Cow E - Straight Master ...

  5. HRBU 2021暑期训练解题报告Day1

    目录 A - Stack B - Queue C - Shaolin D - Equal Sums E - Potions (Hard Version) F - Buy and Resell G - ...

  6. 牛客2021暑期训练1-A-Alice and Bob

    牛客2021暑期训练1-A-Alice and Bob 题目链接 题意 给定两堆石子n,m(1<=n,m<=5e3),Alice先手,对任意一堆取k(k>0)个,另一堆取s*k(s& ...

  7. 2021年人工神经网络第四次作业 - 第三题Cifar10

    简 介: 在Paddle下使用最基本的BP网络以及LeNet网络结构,测试了Cifar10数据集合.但实际运行在测试集合上的效果始终没有突破0.3,具体原因还需要进行查找. 后来经过测试,发现问题出现 ...

  8. 2021年人工神经网络第四次作业:基于MATLAB的求解

    简 介: 本文选取了2021年人工神经网络第四次作业学生提交的作业.供交流使用. 关键词: 人工神经网络 #mermaid-svg-ATqdYQemfmABj2Hj {font-family:&quo ...

  9. 2021年人工神经网络第四次作业要求:第七题

    简 介: 对于MATLAB中的SimpleClass数据集合,对比了BP,RBF,SVM,SOFM,DHNN 等方法分类结果,可以看到BP,RBF,SVM,SOFM都具有非常好的分类效果.DHNN对于 ...

最新文章

  1. Ubuntu12.04 安装 mongodb
  2. 获取用户Ip地址通用方法常见安全隐患 x-forwarded-for
  3. 1130-host ... is not allowed to connect to this MySql server登录失败
  4. 【人工智能作业及答案】什么叫智能?什么叫人工智能?人工智能科学体系大致分哪几个层次?
  5. 灵魂拷问:你和大佬,技术差距有多大?
  6. SpringBoot开发常用技术整合 代码上传至github上面去
  7. VS toolTip1控件的使用1
  8. 电磁工程计算机辅助设计,《ANSYS工程应用教程-热与电磁学篇》
  9. JAVA IO - RandomAccessFile
  10. android用户头像保存,Android的登陆注册(sharedpreferences和SQLite保存以及头像上传显示...
  11. 实战 TPCC-MySQL 基准测试
  12. CISSP考试指南笔记:1.2安全定义
  13. 服务器2t内存只显示1t,内存时序1t和2t的差别
  14. Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功
  15. 使用IMS搭建LMS系统(Logistics Management System 物流管理信息系统)
  16. 银行金融计算机考试成绩查询系统,速看!人民银行成绩出了!戳进查分数+看排名!...
  17. 只要心存美好便是岁月花开时
  18. Day16-20 Python语言进阶
  19. UBT8:ubuntu安装Java1.8
  20. 算法训练二(字符串、模式匹配、堆栈、队列)(含解题思路)(上)

热门文章

  1. phpmywind目录结构
  2. 人工智能和机器学习方面重要会议
  3. BWA mem序列比对时出现:paired reads have different names 问题解决
  4. Java+高级篇+单核CPU vs 多核CPU
  5. 实习每日总结_20161220
  6. Swift 调用微信分享
  7. 微信能上网但是浏览器无法上网,原因在于上次关机时加速器忘记关闭,解决办法如下
  8. 计算机在会计中的应用书籍,Excel在会计和财务中的应用
  9. gcr.io 国内源 —— 基于 Travis CI + GitHub + DockerHub + Google Cloud 实现自动定时同步 gcr.io 镜像到 DockerHub
  10. 中国人的智商全球最高