标题:求解西电1042,看置顶帖第7页问题代码以附上。
只看楼主
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
结帖率:100%
已结贴  问题点数:100 回复次数:10 
求解西电1042,看置顶帖第7页问题代码以附上。
100分怎么没人有兴趣呢。

[ 本帖最后由 C_戴忠意 于 2012-11-3 22:03 编辑 ]
搜索更多相关主题的帖子: 西电 1042 100分 
2012-11-03 21:36
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3450
专家分:19340
注 册:2012-3-31
得分:0 
可惜不会啊。

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-11-03 22:26
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
得分:100 
我用c++写的,你的程序的问题我在置顶帖里提到了
程序代码:
#include <iostream>
using namespace std;

class Node
{
      private:
              int flag[1001];
              int n,m;
      public:
             void init()
             {
                  int j;
                  cin>>n>>m;
                  for (int i=1; i<=n; i++) flag[i]=0;
                  for (int i=1; i<=m; i++) flag[cin>>j,j]=1;
             }
             
             void printans()
             {
                  int ans=0,state=0,last;
                  for (int i=n; i>=1; i--)
                  if (flag[i])
                  {
                      state++; 
                      if (state==1) last=i;
                      if (state==7)
                      {
                                    ans+=47+state*4+last+last;
                                    state=0;
                      }
                  }
                  if (state!=0) ans+=47+state*4+last+last;
                  
                  state=0;
                  for (int i=n; i>=1; i--)
                  if (!flag[i])
                  {
                      state++; 
                      if (state==1) last=i;
                      if (state==7)
                      {
                                    ans+=47+state*4+last+last;
                                    state=0;
                      }
                  }
                  if (state!=0) ans+=47+state*4+last+last;
                  
                  cout<<ans<<endl;
             }
};

int main()
{
    int time;
    Node p;
    
    cin>>time;
    while (time--)
    {
          p.init();
          p.printans();
    }
}


这题关键就是证明从大到小处理时最优的:对于当前的一个序列,最后一个要coffee的人是p,那么一定要走到p的地方,而p之前人的位置对本次花费的时间没影响,所以肯定是尽量取比较靠后的人


[ 本帖最后由 czz5242199 于 2012-11-3 22:35 编辑 ]
2012-11-03 22:32
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
得分:0 
有难度

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-03 23:58
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
回复 3楼 czz5242199
曹哥,我昨天根据你给的提示,终于AC了。
好的,分就是有能力者得之,全给你了。

编程之路定要走完……
2012-11-04 07:40
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
回复 4楼 zxd543
雪东,怎么不刷题了?
一块刷西电的呗。

编程之路定要走完……
2012-11-04 07:41
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
回复 2楼 青春无限
其实,这个题目不难,我昨天脑子抽筋,不是曹哥提醒至今还是纠结中,不过他一语点破梦中人,最终完美AC。

编程之路定要走完……
2012-11-04 07:44
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
回复 3楼 czz5242199
曹哥的代码我看了,大体意思我明白了,昨天失误就失误在选取最后一个人的坐标。哎,低级的错误。

编程之路定要走完……
2012-11-04 07:50
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
得分:0 
回复 6楼 C_戴忠意
没大用
忙着写网网站呢

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-04 10:24
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
回复 9楼 zxd543
人各有志,加油。

编程之路定要走完……
2012-11-04 11:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385816-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.691060 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved