热搜:NVER node 开发 php

Codeforces Round #251 (Div. 2)-C,D_html/css_WEB-ITnose

2024-11-24 23:05:01
Codeforces Round #251 (Div. 2)-C,D_html/css_WEB-ITnose

C题:

思路很简单。

由题意可知,奇数的集合有k-p个,偶数的几何有p个。

那么我们先选择k-p-1个奇数,每一个奇数是一个集合。

然后我们再选择p个偶数,每一个偶数是一个集合,如果偶数的个数不足,那么就用两个奇数去补。

然后我们再把剩下的所有的数放在一个集合里。

By rowanhao, contest: Codeforces Round #251 (Div. 2), problem: (C) Devu and Partitioning of the Array, Accepted, # #include#include#include#include#include#includeusing namespace std;#define LL __int64#define maxn 330000vectorvec;int a[maxn];int vis[maxn];int main(){    int n,k,p;    while(~scanf("%d%d%d",&n,&k,&p))    {        int sum=0;        int q=k-p;        int l,r;        l=r=0;        for(int i=1;i=p*2&&l%2==0)        {            l=p;            cout1)                {                    vis[i]=1;                    l--;                    printf("1 %d\n",a[i]);                }            }            vec.clear();            for(int i=1;i1&&vec.size()==2)                {                    printf("2 %d %d\n",vec[0],vec[1]);                    vec.clear();                    l--;                }            }            if(vec.size()==0)continue;            printf("%d",vec.size());            for(int i=0;iD题:  

思路也挺简单的。

由题意可知,我们需要把a数组的所有的数都变的大于等于x。b数组里的所有的数都小于等于x。

x是a数组和b数组中的某一个数。

那么我们枚举x,然后二分查找。

#include#include#include#include#includeusing namespace std;#define LL __int64#define maxn 220100double num[maxn];vectorvec;LL a[maxn];LL b[maxn];LL sa[maxn];LL sb[maxn];LL n,m;LL dos(LL x){    LL sum=0;    LL l,r,mid;    l=1;r=n+1;mid=(l+r)/2;    while(l=x)r=mid;        else l=mid+1;        mid=(l+r)/2;    }    sum+=(mid-1)*x-sa[mid-1];    l=1;r=m+1;mid=(l+r)/2;    while(l=x)r=mid;        else l=mid+1;        mid=(l+r)/2;    }    sum+=sb[mid]-(m-mid+1)*x;    return sum;}int main(){    while(~scanf("%I64d%I64d",&n,&m))    {        for(LL i=1;i=1;i--)sb[i]=sb[i+1]+b[i];        LL  minn=-1;        for(LL i=0;i


相关推荐