80分!!二,三测试点错误!求调!!

P1068 [NOIP2009 普及组] 分数线划定

@[yang1812](/user/1078638) 你这个算法的思路我属实没看懂,这边建议你用下结构体和sort排序,可能会好一点,然后这是我的代码,可以参考一下 ```cpp #include<bits/stdc++.h> using namespace std; int n,m; struct g { int a,b; }f[5010]; int cmp1(g x,g y) {//自己写cmp函数,一步搞定两个问题 return x.b==y.b?x.a<y.a:x.b>y.b; } int main() { cin>>n>>m; m*=1.5; for(int i=1;i<=n;++i) { cin>>f[i].a>>f[i].b; } sort(f+1,f+n+1,cmp1); m=f[m].b; cout<<m<<" "; int tot=0; for(int i=1;i<=n;++i) { if(f[i].b>=m) tot++; else break; } cout<<tot<<endl; for(int i=1;i<=tot;++i) { cout<<f[i].a<<" "<<f[i].b<<endl; } return 0; } ``` 可能废话不少,但确实能过
by 大海中的孤帆 @ 2024-02-08 17:55:43


你把 `m *= 1.5;` 改成 `m = m * 1.5 - 1;` 说不定就能通过了,我的就是这么过的,挺奇怪的哈,明明范围已经现在为正数了,那么为什么直接丢掉小数点会出错呢?
by Winterblessed @ 2024-02-19 15:11:01


把m*=1.5改为m=1.5m-0.99
by kevin_kasalana @ 2024-03-08 22:50:45


|