#include
using namespace std;
const int N=5e5+10;
int a[N];
int main()
{int n;long double s;cin>>n>>s;for(int i=0;i>a[i];sort(a,a+n);long double res=0,avg=s/n;for(int i=0;i
2.乘积最大
如果要选的是n==k 那么就只能全选咯
要考虑的是k
如果k是偶数 那么一定可以选出正数
(1)如果负数是偶数个 那么得出来的肯定是非负数。
(2)如果负数是奇数个
奇数的话 如果全是负数 只能选绝对值最小的数
有一个非负数 然后就可以k-- 就转换为k为偶数了
#include
using namespace std;
typedef long long ll;
const int N=100010,mod=1000000009;
int a[N];
int main()
{int n,k;cin>>n>>k;for(int i=0;i>a[i];sort(a,a+n);int res=1,l=0,r=n-1,sign=1;if(k%2){res=a[r--];k--;if(res<0) sign=-1;}while(k){ll x=(ll)a[l]*a[l+1],y=(ll)a[r]*a[r-1];if(x*sign>y*sign){res=x%mod*res%mod;l+=2;}else{res=y%mod*res%mod;r-=2;}k-=2;}cout<
#include
using namespace std;
const int N=1010,INF=0x3f3f3f3f;
int f[4][N];
vector a[N];
int main()
{int n,m;cin>>n>>m;for(int i=0;i>x;a[x%m].push_back(x);}memset(f,-0x3f,sizeof f);f[0][0]=0;for(int i=0;i());for(int u=0;u<3&&u=1;j--){for(int k=0;k
#include
using namespace std;
typedef pair PDD;
const int N=1010;
const double eps=1e-6,INF=1e10;
int n,d;
PDD seg[N];
int main()
{cin>>n>>d;bool success=true;for(int i=0;i>x>>y;if(y>d){success=false;}auto len=sqrt(d*d-y*y);seg[i]={x+len,x-len};}if(!success) puts("-1");else{sort(seg,seg+n);int res=0;double last=-INF;for(int i=0;ilast+eps){res++;last=seg[i].first;}}cout<
4.后缀表达式
#include
#include
#include using namespace std;typedef long long LL;const int N = 2e5 + 10;int a[N];int main() {int n, m; scanf("%d%d", &n, &m);int k = n + m + 1;for (int i = 0; i < k; i ++) scanf("%d", &a[i]);LL res = 0;if (!m) for (int i = 0; i < k; i ++) res += a[i];else {sort(a, a + k);res = a[k - 1] - a[0];for (int i = 1; i < k - 1; i ++) res += abs(a[i]);}return printf("%lld\n", res), 0;
}