Asce's Summer Ranking No.2
来源:互联网 发布:读大数据时代有感 编辑:程序博客网 时间:2024/05/16 09:37
这是第二场比赛的。才搞完= =
A. 丁神去谷歌 2014新生暑假个人排位赛02
题目描述
丁神要去Google上班了,去之前丁神想再做一道水题,但时间不多了,所以他希望题目做起来既水又快。现在一共有
输入格式
输入第一行为数据组数
输出格式
对于每组数据,输出对应的题目编号,每个输出占一行。
输入样例
123 54 8
输出样例
2
#include <iostream>#include <cstdio> using namespace std; struct Num{ long long top; long long bot;}; int t,n,Id;Num ans,temp; bool Dayu(Num a,Num b){ if( b.bot*a.top>b.top*a.bot ) return true; if( b.bot*a.top==b.top*a.bot && a.bot<b.bot) return true; return false;}int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); scanf("%lld%lld",&temp.bot,&temp.top); ans.bot=temp.bot; ans.top=temp.top; Id=1; for(int i=2;i<=n;i++) { scanf("%lld%lld",&temp.bot,&temp.top); if(Dayu(temp,ans)) { ans.top=temp.top; ans.bot=temp.bot; Id=i; } } printf("%d\n",Id); } return 0;}
------------------------------------------------------------------------------------------
B. 丁神又去谷歌 2014新生暑假个人排位赛02
题目描述
丁神又要去Google上班了,这一次丁神想多做几道水题,并使题目的总水量最大.丁神同一时刻只能在水一道题,只有做完这道题才能得到它的水值,丁神的总时间为
输入格式
输入第一行为数据组数
输出格式
对于每组数据,输出对应的最大总水量,每个输出占一行。
输入样例
110 28 166 12
输出样例
16
裸01背包 换个变量名就行
#include <iostream>#include <cstdio>#include <cstring>#define maxn 105#define maxt 1005#define ll long longusing namespace std; int Test,t,n;int a_time[maxn];ll b_val[maxn]; ll dp[maxn][maxt];int main(){ scanf("%d",&Test); while(Test--) { scanf("%d%d",&t,&n); for(int i=1;i<=n;i++) scanf("%d%lld",&a_time[i],&b_val[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) for(int j=1;j<=t;j++) { if(j>=a_time[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-a_time[i]]+b_val[i]); else dp[i][j]=dp[i-1][j]; } printf("%lld\n",dp[n][t]); } return 0;}
-------------------------------------------
C. goblin 2014新生暑假个人排位赛02
题目描述
现有一段横向长度为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 24133142 3241 3412 4132 4231
就说说我的理解吧。代码见whnblog
dp方程g[i]=g[i]+c[i-1][j]*g[j]*g[i-1-j];
每次加入一个最高的棍,枚举这根棍左和右分别出现的情况
通过这道题学会了如何处理锯齿形状的数列
----------------------------------------------------------------------------
D. 学姐逗学弟 2014新生暑假个人排位赛02
题目描述
学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍。这一天,学姐想出了这样一个游戏,她画了一棵树,树上共有
输入格式
输入第一行为一个整数
输出格式
如果学姐能胜利,输出"MengMengDa!",否则输出"So sad..."。没有引号。
输入样例
13 11 11
输出样例
MengMengDa!
其实就是一个everysg游戏,求出step最大的有石子节点的输赢
#include <iostream>#include <cstdio>#include <cstring>#define maxn 100005 using namespace std; int Index,n,m,t,Maxstep,Maxpos;int head[maxn],next[maxn],edge[maxn],step[maxn];bool Vic[maxn];int stone[maxn];void Addedge(int a,int b){ Index++; next[Index]=head[a]; edge[Index]=b; head[a]=Index;} void Dfs(int src){ if(!head[src]) {Vic[src]=false;step[src]=1;return;} for(int p=head[src];p;p=next[p]) Dfs(edge[p]); bool flagVic=false; for(int p=head[src];p;p=next[p]) if(!Vic[edge[p] ]) flagVic=true; if(!flagVic) { Vic[src]=false; step[src]=step[edge[head[src] ] ]; for(int p=head[src];p;p=next[p]) step[src]=min(step[src],step[edge[p] ]); step[src]++; } else { Vic[src]=true; step[src]=0; for(int p=head[src];p;p=next[p]) if(!Vic[edge[p] ]) step[src]=max(step[src],step[edge[p] ]); step[src]++; }}int main(){ scanf("%d",&t); while(t--) { Index=0; scanf("%d%d",&n,&m); memset(head,0,sizeof(head)); memset(next,0,sizeof(next)); for(int i=2;i<=n;i++) { int temp; scanf("%d",&temp); Addedge(temp,i); } for(int i=1;i<=m;i++) scanf("%d",&stone[i]); Dfs(1); Maxstep=0; for(int i=1;i<=m;i++) if(step[stone[i]]>Maxstep) { Maxstep=step[stone[i]]; Maxpos=stone[i]; } if(Vic[Maxpos]) printf("MengMengDa!\n"); else printf("So sad...\n"); } return 0;}
------------------------------------------------------------------------------------------------
425. 木头人足球赛
题目描述
木头人星的行动速度是地球上乌龟的
输入格式
第一行为组数
输出格式
每组数据一行,如果 Mays 队10号队员直接可以射门得分,则输出“Shoot!”;如果10号队员不能成功射门,输出"Poor Mays!".
输入样例
1104 341 24 2.92848 25 2.60515 41 1.31239 42 2.4543 12 2.08018 39 1.56410 36 2.53097 13 1.589101 57 1.84484 39 2.5610 33 1.831
输出样例
Shoot!
计算几何啊。。。。
先求所有圆过x0,y0的切线,再求出和x=0的交点。。
于是得出每个圆在x=0上的投影,再判断这些投影是否把球门盖住
这题拿到了测试数据仍然没过。。。。总会卡在几个数据上。。。
目前还是wa的状态。。
求只菊苣来看下代码。。。。。
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#define eps 0.0000001 using namespace std; int t,x0,Y0,Index; struct QuJianPair{ double da; double xiao;}QuJian[20]; double GetK(int x,int y){ return (double)(y-Y0)/(double)(x-x0);} bool cmp(QuJianPair a,QuJianPair b){ return a.da>b.da;} int main(){ // freopen("in.txt","r",stdin); // freopen("out1.txt","w",stdout); scanf("%d",&t); while(t--) { scanf("%d%d",&x0,&Y0); int tempx,tempy; double r; bool MaysFlag=true; Index=0; for(int i=1;i<=11;i++) { scanf("%d%d%lf",&tempx,&tempy,&r); if( (double)((tempx-x0)*(tempx-x0)+(tempy-Y0)*(tempy-Y0)) < r*r +eps) {MaysFlag=false;break;} if((double)tempx > x0+r) continue; double a=(double)(tempx-x0)*(tempx-x0) - r*r; double b=(double)2*(tempx-x0)*(Y0-tempy); double c=(double)(Y0-tempy)*(Y0-tempy) - r*r; double solk1=((-b)+sqrt(b*b-4*a*c))/(2*a); double solk2=((-b)-sqrt(b*b-4*a*c))/(2*a); if((double)tempx +eps< x0-r) { Index++; QuJian[Index].da=min(solk1,solk2)*(0-x0)+Y0; QuJian[Index].xiao=max(solk1,solk2)*(0-x0)+Y0; } else { if((double)tempx > x0-r +eps) { if((double)tempy > Y0 ) { Index++; QuJian[Index].da=68; QuJian[Index].xiao=min(solk1,solk2)*(0-x0)+Y0; } else { Index++; QuJian[Index].da=max(solk1,solk2)*(0-x0)+Y0; QuJian[Index].xiao=0; } } else { if((double)tempy > Y0 ) { Index++; QuJian[Index].da=68; if(abs(solk1)<1000000) QuJian[Index].xiao=solk1*(0-x0)+Y0; else QuJian[Index].xiao=solk2*(0-x0)+Y0; } else { Index++; if(abs(solk1)<1000000) QuJian[Index].da=solk1*(0-x0)+Y0; else QuJian[Index].da=solk2*(0-x0)+Y0; QuJian[Index].xiao=0; } } } } sort(QuJian+1,QuJian+1+Index,cmp); if(MaysFlag) { if(QuJian[1].da<38) printf("Shoot!\n"); else { bool MaysJin=false; for(int i=2;i<Index;i++) { bool flag=false; int pos; for(int j=1;j<i;j++) if(QuJian[j].xiao<QuJian[i].da + eps) {flag=true;pos=j;}//dangzhu if(!flag && QuJian[i].da<38 && QuJian[pos].xiao>30) {printf("Shoot!\n");MaysJin=true;break;} } if((!MaysJin)) { bool tempflag=true;//meidangzhu for(int i=1;i<=Index;i++) if(QuJian[i].xiao<30+eps) {printf("Poor Mays!\n");tempflag=false;break;}//dangzhule if(tempflag) printf("Shoot!\n"); } } } else printf("Poor Mays!\n"); } return 0;}
- Asce's Summer Ranking No.2
- Asce's Summer Ranking No.1
- Asce's Summer Ranking No.3
- Asce's Summer Ranking No.4
- Asce's Summer Ranking No.6
- Asce's Summer Ranking No.5
- Asce's Summer Ranking No.7
- Asce's Summer Ranking No.8
- Asce's Summer Ranking No.9
- Asce‘s Summer Ranking No.11
- JSU 2013 Summer Individual Ranking Contest - 5
- JSU 2013 Summer Individual Ranking Contest - 6
- Google‘s Metrix - Ranking Factors
- 【map<s,i>&getline】#STC 2 A. Indian Summer
- SDKD Summer Team Contest S
- Ranking
- summer 's wonderful so why not SMILE
- 10057 - A mid-summer night's
- 史上最经典的IT入门学习教程DVD光盘免费领!
- const成员函数
- java io bio nio aio 详解
- 设计模式 之 适配器
- copy和retain的区别
- Asce's Summer Ranking No.2
- JPA实体继承的映射
- MFC编程学习---(3)对话框
- Tomcat 7.0初探-- 在Eclipse 中启动Tomcat 后, localhost:8080不能正常访问,返回404错误
- 区间Dp uva10755
- 资深营销团队管理专家——文彬
- 找工作历程
- 文彬老师《营销战略管理——企业赢在服务营销创新》课程大纲
- kaldi在ubuntu上的编译与安装