数学专业考研题目,谢谢大佬

小白自远方来
2018牛客多校第五场A.gpa (二分)
标题:A、gpa | 时间限制:1 秒 | 内存限制:256M
Kanade selected n courses in the university. The academic credit of the i-th course is s[i] and the score of the i-th course is c[i]. At the university where she attended, the final score of her is
Now she can delete at most k courses and she want to know what the highest final score that can get.
输入描述: The first line has two positive integers n,k
The second line has n positive integers s[i]
The third line has n positive integers c[i]
输出描述: Output the highest final score, your answer is correct if and only if the absolute error with the standard answer is no more than 10-5
备注: 1≤n≤10^5
1≤s[i],c[i] ≤10^3
题目大意:给出每门的课的学分与绩点,算总绩点,输出误差在10-5。
思路:比赛时死活过不了,全是wa,心态爆炸...我的方法确实是错的,不然应该是超时而不是wa。之前的想法是把学分除以绩点再排序,再找去除1-k课的最大情况。然而是错的,联想以前看过的文章,,应该是死在这儿了,,,
正确的做法:
所以二分找最大绩点就行了........(出题人说需要注意二分的上界不然会超时)心好累好累好累。
代码如下:
#include&iostream&
#include&algorithm&
#include&cstdio&
long long n,k,i,j;
long long s[100050],c[100050];
double p[100050];
bool fun(double x)
for(i=0;i&n;i++)
p[i]=s[i]*c[i]-x*s[i];
sort(p,p+n);
double sum=0;
for(i=k;i&n;i++)
sum+=p[i];
return sum&0;
int main()
cin&&n&&k;
for(i=0;i&n;i++) cin&&s[i];
for(i=0;i&n;i++) cin&&c[i];
double l=0,r=5000000,
for(j=0;j&80;j++)
mid=(l+r)/2;//二分找最大学分
if(fun(mid)) l=
printf("%.11lf\n",r);
没有更多推荐了,题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5935
题意:有个老司机在开车, 开车过程中车的速度是不减的. 交警记录了这个老司机在nn个时间点的位置, 但是时间位置. 已知老司机从位置0出发, 记录的时间点都是整数, 问经过第nn个位置最少需要的时间.
题解:通过最后一段路程的时间肯定为 1 秒,只需由速度不降原则倒推出每一段所通过的最小整数时间即可。
原来卡了精度,好坑呀。。
1 #include &bits/stdc++.h&
2 using namespace
4 const int maxn = <span style="color: #0100;
5 const double eps = 1e-<span style="color: #;
6 int n, a[maxn];
8 int main() {
// freopen("in", "r", stdin);
<span style="color: #
int T, _ = <span style="color: #;
<span style="color: #
scanf("%d", &T);
<span style="color: #
while(T--) {
<span style="color: #
printf("Case #%d: ", _++);
<span style="color: #
scanf("%d", &n);
<span style="color: #
for(int i = <span style="color: #; i &= i++) {
<span style="color: #
scanf("%d", &a[i]);
<span style="color: #
<span style="color: #
int ret = <span style="color: #;
<span style="color: #
double v = a[n] - a[n-<span style="color: #];
<span style="color: #
for(int i = n-<span style="color: #; i &= <span style="color: #; i--) {
<span style="color: #
int x = a[i] - a[i-<span style="color: #];
<span style="color: #
if(x &= v + eps) {
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
double t = (double(x - eps) / v);
<span style="color: #
ret += int(t + <span style="color: #);
<span style="color: #
v = (double(x) / int(t + <span style="color: #));
<span style="color: #
<span style="color: #
<span style="color: #
cout && ret &&
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
阅读(...) 评论()HDU 1166 敌兵布阵(线段树)
题目链接:
题目思路:单点更新,区间查询,线段树模板题,套板子就ok
#include&cstdio&
#include&cmath&
#include&cstring&
#include&string&
#include&cstdlib&
#include&algorithm&
#include&iostream&
#include&queue&
#include&stack&
#include&map&
#define FOU(i,x,y) for(int i=x;i&=y;i++)
#define FOD(i,x,y) for(int i=x;i&=y;i--)
#define MEM(a,val) memset(a,val,sizeof(a))
#define PI acos(-1.0)
const double EXP = 1e-9;
typedef un
const int INF = 0x3f3f3f3f;
const ll MINF = 0x3f3f3f3f3f3f3f3f;
const double DINF = 0
const int mod = 1e9+7;
const int N = 1e6+5;
int a[N],n;
//输入数据,构造线段树数组
struct node{
//区间最大值
//区间最小值
//延迟标记,减小时间复杂度
}segTree[N*4];
//需要开4倍
void pushUp(int id){
//区间合并,上放
segTree[id].sum = segTree[id*2].sum+segTree[id*2+1].
void pushDown(int id){
if(segTree[id].lazy){
//区间修改过,需要下放
//在原来的值上加上val
segTree[id*2].sum += (segTree[id*2].rht-segTree[id*2].lft+1)*segTree[id].
segTree[id*2+1].sum += (segTree[id*2+1].rht-segTree[id*2+1].lft+1)*segTree[id].
segTree[id*2].lazy += segTree[id].
segTree[id*2+1].lazy += segTree[id].
segTree[id].lazy = 0;
void build(int id,int l,int r){
segTree[id].lft = l, segTree[id].rht =
segTree[id].lazy = 0, segTree[id].sum = 0;
//开始一定要清0
if(l == r){
//到达叶子节点,不继续建树
segTree[id].sum = a[l];
//否则继续建树
int mid = (l+r)&&1;
build(id*2,l,mid);
build(id*2+1,mid+1,r);
pushUp(id);
void upDate(int id,int l,int r,int val){
//更新l~r区间,加val,或减val(就传-val),或改成val
if(l&=segTree[id].lft&&r&=segTree[id].rht){
segTree[id].sum += (segTree[id].rht-segTree[id].lft+1)*
segTree[id].lazy +=
//延迟标记
pushDown(id);
//区间下放
int mid = (segTree[id].lft+segTree[id].rht)&&1;
if(r &= mid)
upDate(id*2,l,r,val);
else if(l&=mid+1)
upDate(id*2+1,l,r,val);
upDate(id*2,l,r,val);
upDate(id*2+1,l,r,val);
pushUp(id);
int query(int id,int l,int r){
//查询l~r的值
if(l&=segTree[id].lft&&r&=segTree[id].rht){
//该区间包含在查询区间内,可直接返回
return segTree[id].
pushDown(id);
//区间下放
int mid = (segTree[id].lft+segTree[id].rht)&&1;
int ans = 0;
if(r&=mid){
//只用管左子树
ans += query(id*2,l,r);
else if(l&=mid+1){
//只用管右子树
ans+=query(id*2+1,l,r);
ans += query(id*2,l,r)+query(id*2+1,l,r);
int main()
std::ios::sync_with_stdio(false);
int t,x,y;
char op[10];
scanf("%d",&t);
int cnt=0;
while(t--){
scanf("%d",&n);
for(int i=1;i&=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
printf("Case %d:\n",cnt);
while(~scanf(" %s",&op)){
if(op[0]=='E')
else if(op[0]=='A'){
scanf("%d%d",&x,&y);
upDate(1,x,x,y);
else if(op[0]=='S'){
scanf("%d%d",&x,&y);
upDate(1,x,x,-y);
scanf("%d%d",&x,&y);
printf("%d\n",query(1,x,y));
没有更多推荐了,高中数学知识点掌握方法
高中数学知识点掌握方法
之前看了扶甘投稿的关于如何应对高中数学的专栏,然后我也有一些想法,与大家分享下233.不过话说回来,我现在毕竟只有高一,没怎么接触高考题,加上上海高考与全国高考诸多不同因素,我也没办法告诉大家一些数学的答题技巧.不过有幸对数学的兴趣让我已经学完了大半的高中数学内容。于是我来跟大家分享高中数学知识怎么牢固掌握。首先,按照老师的话来说,高中数学知识点很多很广。但是以我来看,高中数学的知识其实万变不离其中,它不过是在初中的基础上加了一点延伸。(况且高中学的真正也只是古典数学,新增的定理也不算多2333)比如,如果你在初中学的不错,有很好的数形结合思想,那你做圆锥曲线其实也不会差。圆锥曲线的小题,常常就会用到初中平面几何的思想。直线与圆锥曲线相交常常碰到列方程、用韦达定理的情况,这其实与初中的数形结合没什么区别。(当然这个举的例子算是基本操作了233)所以,不用把高中数学想的太难,它的本质也就如此......第二点,高中数学的一些知识点是需要融会贯通的。不能学了后面忘了前面,而要在大脑里形成一个知识体系。嘛不过其实吧,高中数学里真正需要联系起来的也就那些知识点...所以其实刷点题记住套路了也行......不过刷题的时候还是要思考,把那些题目的数学思想都记住,然后学会举一反三..(想当初初中数竞的套路是真的深......什么代数题用三角比两角正切和公式作三角形之类的...)比如,一道题目f(x)=x+√(4-x^2)让你用严谨的推导求值域(不用求导,求导的话太方便了...)。那么需要把x设为一个三角比,用函数结合三角函数来解这道题。如果一个高二高三生想到这个方法,那么对于这以前的两个知识点,他确实是融会贯通了。另外又有圆锥曲线与三角比的结合、圆锥曲线与向量数乘积的结合、数列与二次函数的结合、数列与极限的结合......(呃不过上海教材还专门有一个专题叫“数列极限”)这些都是高中应该掌握的一些操作。第三点,数学方法也是高中数学知识点的一种,需要牢牢掌握、熟练运用。例如数学归纳法,它的运用非常广泛,不仅限于数列,甚至各种存在“n”的证明题你都可以思考一遍数学归纳法,这种题目基本都能用用它解决(当然了有些题如果你能发现其他更机智的证法更好了~)。所以个人来看,高中数学的知识点要掌握,主要就是以上说的两点:1.依据初中的基本框架结构添加新的知识点。2.把所学的知识点融会贯通。3.把所学的数学思想、方法牢牢掌握。另外,公式最好都能自己推一遍,方便记忆的。经常温故一下公式,让大脑翻新一下记忆...好的,今天就说到这里吧。希望写的这些能对大家有点帮助。我是弑杀,学习区up主hhhh??江苏省理科专转本数学资料书,有知识点和习题,习题多一点就好了,求大佬介绍书名。谢谢了_百度知道
江苏省理科专转本数学资料书,有知识点和习题,习题多一点就好了,求大佬介绍书名。谢谢了
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自科学教育类芝麻团
在高中理科各科目中,物理科是相对较难学习的一科,学过高中物理的大部分同学,特别是物理成绩中差等的同学,总有这样的疑问:“上课听得懂,听得清,就是在课下做题时不会。”这是个普遍的问题,值得物理教师和同学们认真研究
江苏领正专转本
来自科学教育类芝麻团
江苏领正专转本
采纳数:59
参与团队:
基本都是报读辅导班,都会给资料的,不需要再去单独买了
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 初一数学要点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信