| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:WA了好多次求助In Reply To:WA了好多次求助 Posted by:lee41sum at 2009-09-03 12:16:21 > 数据中不会出现SI = 0的情况吧。
> 我是先按时间从小到大排序(即按g[i].t排序),然后方程是d[i] = max(d[j]+g[i].p);
> (j<i&& fabs(g[i].s-g[j].s)<=g[i].t-g[j].t)
> 请问方程有错吗?
> 下面是我的代码,谢谢。。 o(∩_∩)o
> ////////////////////////////////////////////////////////////////////////////
> #include <iostream>
> #include <cmath>
> #include <algorithm>
> #include <cstdio>
> using namespace std;
> const int MAXN = 110;
> struct ganster
> {
> int t,p,s;
> ganster()
> {
> t = p = s = 0;
> }
> };
> int d[MAXN];
> ganster g[MAXN];
> int n,k,t;
> int ans = 0;
> bool cmp(ganster g1,ganster g2)
> {
> if(g1.t==g2.t)
> {
> return g1.s<g2.s;
> }
> return g1.t < g2.t;
> }
> void dp()
> {
> d[0]=0;
> ans = 0;
> //cout<<ans<<endl;
> for (int i=1;i<=n;i++)
> {
> for (int j=0;j<i;j++)
> {
> if (((int)fabs((g[i].s-g[j].s))<=(g[i].t-g[j].t)))
> {
> // cout<<"g[i]"<<g[i].s<<" "<<g[j].s<<endl;
> if (g[i].p+d[j]>d[i])
> {
> // cout<<g[i].p<<" "<<d[j]<<endl;
> d[i] = (g[i].p + d[j]);
> }
> }
> }
> if (d[i]>ans)
> {
> //cout<<i<<endl;
> ans = d[i];
> }
> }
> }
> int main()
> {
> scanf("%d%d%d",&n,&k,&t);
> for (int i=1;i<=n;i++)
> {
> scanf("%d",&g[i].t);
> }
> for (int i=1;i<=n;i++)
> {
> scanf("%d",&g[i].p);
> /* if(g[i].t==0&&g[i].s!=0)
> {
> g[i].p = 0;
> }*/
> }
> for (int i=1;i<=n;i++)
> {
> scanf("%d",&g[i].s);
> /* if(g[i].s==0)
> {
> ans += g[i].p;
> }*/
> }
> sort(g+1,g+n+1,cmp);
> g[0].s = 0;g[0].t = 0;
> dp();
> printf("%d\n",ans);
> return 0;
> }
> ////////////////////////////////////////////////////////
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator