A. 丁神去谷歌 2014新生暑假个人排位赛02

时间限制 1000 ms 内存限制 65536
KB

题目描述

丁神要去Google上班了,去之前丁神想再做一道水题,但时间不多了,所以他希望题目做起来既水又快。现在一共有n道题,编号从1到n,每道题有两个值a和b,a为做这道题需要的时间,b为题目的“水值”,丁神希望做b/a最大的那题。

输入格式

输入第一行为数据组数T(T≤10),接下来T组数据,每组数据中第一行为一个数n,n为题目的数量,接下来n行,每行两个正整数a和b。如果两道题b/a的值是一样的就输出a比较小的,如果还一样就输出编号比较靠前的。 1≤a,b≤109,1≤n≤100000)

输出格式

对于每组数据,输出对应的题目编号,每个输出占一行。

输入样例

1
2
3 5
4 8

输出样例

2

水题不解释,数据颇大,不能排序,卡在cin,5次

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
using namespace std;
const double eps=10e-7;
int main(){
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--){
int n;
cin>>n;
double maxd=0;
int a,b;
int mina;
int ans;
for(int ni=1;ni<=n;ni++){
cin>>a>>b;
if(maxd<b/a){
maxd=b/a;
mina=a;
ans=ni;
}
else if(fabs(maxd-b/a)<eps){
if(a<mina){
mina=a;
ans=ni;
}
}
}
cout<<ans<<endl;
}
return 0;
}

B. 丁神又去谷歌 2014新生暑假个人排位赛02

时间限制 1000 ms 内存限制 65536
KB

题目描述

丁神又要去Google上班了,这一次丁神想多做几道水题,并使题目的总水量最大.丁神同一时刻只能在水一道题,只有做完这道题才能得到它的水值,丁神的总时间为t,现在一共有n道题,编号从1到n,每道题有两个值a和b,a为做这道题需要的时间,b为题目的水值。

输入格式

输入第一行为数据组数T(T≤10),接下来T组数据,每组数据中第一行为两个数t和n,n为题目的数量,t为总时间,接下来n行,每行两个正整数a和b。(1≤a,t≤1000,1≤n≤100,1≤b≤1000000000)

输出格式

对于每组数据,输出对应的最大总水量,每个输出占一行。

输入样例

1
10 2
8 16
6 12

输出样例

16

咳咳..其实我第一次的时候交的贪心我会说吗?看来dp还是意识缺乏,简单的01背包

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
using namespace std; class query{
public:
int a,b,index;
};
bool cmp(query q1,query q2){
long long i=(q1.b*q2.a)-(q2.b*q1.a);
if(i>0)return true;
if(i<0)return false;
if(q1.a>q2.a)return true;
if(q1.a<q2.a)return false;
if(q1.index<q2.index)return true;
return false;
}
query que[120];
long long dp[120][1200];
int main(){
int t;
ios::sync_with_stdio(false);
cin>>t;
//cout<<t<<endl;
while(t--){
int n,time;
cin>>time>>n;
int a,b;
for(int ni=0;ni<n;ni++){
cin>>a>>b;
que[ni].a=a;
que[ni].b=b;
que[ni].index=ni;
}
// for(int ni=0;ni<n;ni++){
// cout<<que[ni].a<<" "<<que[ni].b<<" "<<que[ni].index<<endl;
//}
sort(que,que+n,cmp);
long long ans=0;
// for(int ni=0;ni<n;ni++){
// cout<<que[ni].a<<" "<<que[ni].b<<" "<<que[ni].index<<endl;
// }
memset(dp,0,sizeof(dp));
dp[0][que[0].a]=que[0].b;
for(int i=0;i<n;i++){
for(int j=1;j<=time;j++){
dp[i][j]=max(dp[i][j],dp[i][j-1]);
if(i)dp[i][j]=max(dp[i][j],dp[i-1][j]);
if(i&&j>=que[i].a){
dp[i][j]=max(dp[i][j],dp[i-1][j-que[i].a]+que[i].b);
}
//cout<<"dp"<<i<<" "<<j<<" "<<dp[i][j]<<endl;
}
}
cout<<dp[n-1][time]<<endl;
}
return 0;
}

c:

C. goblin 2014新生暑假个人排位赛02

时间限制 1000 ms 内存限制 65536
KB

题目描述

现有一段横向长度为N的山脉,其中每段有一个独一无二的高度Hi(1到N之间的正整数)。现在你想知道对于长度为N的山脉,可能有这样的山脉多少种。这样的山脉是:某个位置要么比两边的高度都低,要么比两边的高度都高。两座山脉 A和 B 不同当且仅当存在一个 i,使得 Ai≠Bi。由于这个数目可能很大,你只对它除以 P 的余数感兴趣。

输入格式

输入以EOF为结束,每组仅含一行,两个正整数 N, P。 3≤N≤4200,P≤10^9

输出格式

对于每组数据输出仅含一行,一个非负整数,表示你所求的答案对 P 取余之后的结果。

输入样例

4 7

输出样例

3
说明:共有 10 种可能的山脉,它们是:
1324 1423 2143 2314 2413
3142 3241 3412 4132 4231

又是dp

又没找出关系

...........

总之就是好好思考...

对k+1选取k+1作为基点,它在哪段都会成为最大点,上顶点,

设左边长度j:

左边 ans[j]

右边 ans[k-j]

ans(k+1)=SUM(c[j][k]*ans[j]*ans[k-j])

ym吴大神,刘大神

接下来注意不要爆运算中的int就行了(改成longlong)

#include <iostream>
using namespace std;
#define MAXN 4202
int c[MAXN][MAXN];
long long ans[MAXN];
int main(){
int n,p;
while(cin>>n>>p){
c[1][1]=c[1][0]=1;
for(int i=2;i<=n;i++){
c[i][0]=1;
for(int j=1;j<=i;j++){
c[i][j]=(c[i-1][j-1]+c[i-1][j])%p;
}
}
ans[0]=1%p;
ans[1]=1%p;
ans[2]=1%p;
ans[3]=2%p;
for(int i=4;i<=n;i++){
for(int j=0;j<i;j+=2){
ans[i]=ans[i]%p+((c[i-1][j])*(ans[i-1-j])%p*ans[j])%p;
ans[i]%=p;
}
}
cout<<ans[n]*2%p<<endl;
}
}

北邮新生排位赛2解题报告a-c的更多相关文章

  1. 北邮新生排位赛1解题报告d-e

    话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的 407. BLOCKS 时间限制 1000 ms 内存限制 65536 KB 题目描述 给定一个N∗M的矩阵,求问里 ...

  2. 北邮新生排位赛1解题报告a-c

    <div class="page-header" style="padding-bottom: 9px; margin: 20px 0px 30px; border ...

  3. 北邮新生排位赛2解题报告d-e

    <> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...

  4. 2014北邮新生归来赛解题报告a-c

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  5. 2014北邮新生归来赛解题报告d-e

    D: 399. Who Is Joyful 时间限制 3000 ms 内存限制 65536 KB 题目描述 There are several little buddies standing in a ...

  6. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  7. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  8. 2017.7.15清北夏令营精英班Day1解题报告

    成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu. ...

  9. LeetCode解题报告:Linked List Cycle && Linked List Cycle II

    LeetCode解题报告:Linked List Cycle && Linked List Cycle II 1题目 Linked List Cycle Given a linked ...

随机推荐

  1. Spark Streaming笔记

    Spark Streaming学习笔记 liunx系统的习惯创建hadoop用户在hadoop根目录(/home/hadoop)上创建如下目录app 存放所有软件的安装目录 app/tmp 存放临时文 ...

  2. 第 8 章 容器网络 - 061 - flannel 的连通与隔离

    flannel 的连通与隔离 测试 bbox1 和 bbxo2 的连通性: bbox1 能够 ping 到位于不同 subnet 的 bbox2,通过 traceroute 分析一下 bbox1 到 ...

  3. Windows 7 Update Settings Disabled (Important Updates Grayed Out)

    This worked for me: 1) Hold WindowsKey + R     (is hold Start & press R on your keyboard) 2) Typ ...

  4. 使用validateXxx()方法进行输入校验 --Struts2框架

    1.本例是在使用validate()方法进行输入校验 --Struts2框架的基础上接着做的,上一篇使用validate()方法进行输入校验时会对当前Action中的所有方法有效,由于Struts2框 ...

  5. CF-721C DAG图拓扑排序+费用DP

    比赛的时候写了个记忆化搜索,超时了. 后来学习了一下,这种题目应该用拓扑排序+DP来做. dp[][]保存走到[第i个节点][走过j个点]时所用的最短时间. pre[][]用前驱节点求路径 然后遍历一 ...

  6. 原生JS实现瀑布流布局

    瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 1.首先瀑布流所有的图片应该保持宽度一致,高 ...

  7. git clone项目

    1. 生成公钥和私钥 ssh-keygen 2. 将公钥添加到github或者gitlab上,一般github或者gitlab允许添加多个公钥,可能是考虑到用户使用不同的机器了吧,还是很贴心的. 3. ...

  8. 谈一谈Vector类

    一.关于Vector类的注意事项 1.从 Java 2 平台 v1.2 开始,vector类改进为实现 List 接口,成为 Java Collections Framework 的成员:所以vect ...

  9. 【IDEA】【4】遇到的问题

    前言: 1,jar包未导入到项目中 2,报错 cannot resolve symbol 3,左边栏只能看到文件看不到项目结构 4,报错 No valid Maven installation fou ...

  10. python-flask-wtforms组件流程源码

    在最开始要弄明白一点,类都是由元类创建的.在定义类 class Foo:pass的时候(类也是对象),就会执行type类或者type派生类的__init__方法,当Foo()时:执行type类或者ty ...