10pts求大佬指教

P2085 最小函数值

```cpp for(int x=1;x<=n;x++){ for(int i=1;i<=n;i++){ q.push(hs(i,x)); } } for(int i=1;i<=n;i++){ cout<<q.top()<<" "; q.pop(); } ``` 应为 ```cpp for(int x=1;x<=m;x++){ for(int i=1;i<=n;i++){ q.push(hs(i,x)); } } for(int i=1;i<=m;i++){ cout<<q.top()<<" "; q.pop(); } ``` 而且这样做肯定会爆队列
by zrl123456 @ 2024-02-12 18:17:22


```cpp #include<bits/stdc++.h> #define int long long #define reg register #define inl inline #define INF 2147483647 #define MOD 504 #define N 10005 #define f(i,j) a[i]*j*j+b[i]*j+c[i] using namespace std; vector<int>g; int n,m,a[N],b[N],c[N]; inl int read(){ reg int f=1,x=0; reg char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return f*x; } inl void write(int x){ if(x<0){ x=-x; putchar('-'); } if(x>=10) write(x/10); putchar(x%10^48); } signed main(){ g.push_back(0); n=read(); m=read(); for(reg int i=1;i<=n;++i){ a[i]=read(); b[i]=read(); c[i]=read(); } for(reg int i=1;i<=m;++i) for(reg int j=1;j<=n;++j) if(g.size()<=m||g[m]>f(j,i)) g.insert(lower_bound(g.begin(),g.end(),f(j,i)),f(j,i)); for(reg int i=1;i<=m;++i){ write(g[i]); putchar(' '); } return 0; } ```
by zrl123456 @ 2024-02-12 18:18:16


谢dalao
by ethan0919 @ 2024-02-19 15:20:16


|