求大佬来,超时什么鬼=-=

P1094 [NOIP2007 普及组] 纪念品分组

大佬们请忽略,本人已经优化好了,就是把判定 if(!can[fir]&&!can[las]) 的这一句变成了 if(can [las]) continue; if(can [fir]) break; 下面是我的AC代码,有不足请大佬们指出 ```cpp #include<iostream> #include<algorithm> using namespace std; bool can[30005]; int w,n,m[30005]; int fir,las,ans=0; void go() { sort(m+1,m+n+1); for(fir=1;fir<=n;fir++) for(las=n;las>=1;las--) { if(can [las]) continue; if(can [fir]) break; if(m[fir]+m[las]<=w) { ans++; can[fir]=1;can[las]=1; } } for(int i=1;i<=n;i++) if(!can[i]) { ans++; can[i]=1; } } int main() { cin>>w>>n; for(int i=1;i<=n;i++) cin>>m[i]; go(); cout<<ans<<endl; } ```
by 兮水XiShui丶 @ 2017-10-02 15:27:04


|