咋错了!

P1056 [NOIP2008 普及组] 排座椅

Very Sorry ~~您是什么意思?代码表示看不懂~~
by 5ab_juruo @ 2019-02-24 22:43:22


啊???
by 小白一枚 @ 2019-02-24 22:45:03


@[小白一枚](/space/show?uid=64191) ~~只看懂了两段精髓的冒泡QwQ~~
by 5ab_juruo @ 2019-02-24 22:46:43


就是数组越界!答案没问题啊!
by 小白一枚 @ 2019-02-24 22:47:21


@[小白一枚](/space/show?uid=64191) 看一下我的$C++$代码吧,虽然你是$C$党应该也看得懂吧 ```cpp #include <iostream> #include <algorithm> using namespace std; struct kill{ int p,c; }a[1001],b[1001]; int n,m,k,l,d,X1,Y1,X2,Y2; bool ansa[1001],ansb[1001]; inline bool comp(const kill&x,const kill&y){ return x.c>y.c; } inline int Min(int x,int y){ return x<y?x:y; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m>>k>>l>>d; for(register int i=1;i<=1000;i++) {a[i].p=i;b[i].p=i;} while(d--) { cin>>X1>>Y1>>X2>>Y2; if(X1==X2) a[Min(Y1,Y2)].c++; else b[Min(X1,X2)].c++; } sort(a+1,a+n+1,comp);sort(b+1,b+n+1,comp); for(register int i=1;i<=l;i++) ansa[a[i].p]=true; for(register int i=1;i<=k;i++) ansb[b[i].p]=true; for(register int i=1;i<=n;i++) if(ansb[i]) cout<<i<<' '; cout<<endl; for(register int i=1;i<=n;i++) if(ansa[i]) cout<<i<<' '; return 0; } ``` 你这应该不是数组越界,就是答案错误 这题贪心思路这样子的: 把每行和每列如果隔断的话能最多减少多少对交头接耳的从大到小排序
by Register @ 2019-02-25 20:29:09


|