Codeforces Round #262 (Div. 2) 總結:二分

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   io   for   資料   

B. Little Dima and Equation

思路:本來前兩題都很快做出來的,然後覺得ranting應該可以增加了。然後覺得代碼沒問題了,又想到了一組cha人的資料,然後就鎖了,然後剛鎖就被別人cha了看了代碼才發現尼瑪忘了判斷小於10^9了,然後C反正想了好多種方法都不會就沒心情了,就這樣rating又降了

#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<queue>#include<set>#include<cmath>#include<bitset>#define mem(a,b) memset(a,b,sizeof(a))#define lson i<<1,l,mid#define rson i<<1|1,mid+1,r#define llson j<<1,l,mid#define rrson j<<1|1,mid+1,r#define INF 6#define maxn 10005typedef long long ll;typedef unsigned long long ull;using namespace std;int i,j;ll k,a,b,c,sum,n,m;double aa,bb,cc,sum1;string s,ss,str;ll abc(ll x){    ll sum=0;    while(x)    {        sum+=x%10;        x/=10;    }    return sum;}ll go(ll f){    ll sum=1;    for(int i=0;i<a;i++)        sum*=f;    return sum;}ll nn[100010],mm=1000000000;int main(){    cin>>a>>b>>c;    for(i=1;i<82;i++)    {        sum=go(i)*b+c;        n=sum;        if(abc(sum)==(ll)i) nn[j++]=sum;    }    printf("%d\n",j);    for(i=0;i<j;i++)    {        if(i!=j-1) cout<<nn[i]<<' ';        else cout<<nn[i]<<endl;    }    return 0;}

C. Present

思路:這題一直想不出來,剛看了下題解,一看就明白了
而且題解裡面說了,像這種求最小的最大一般都是二分,唉……自己太弱了根本沒想到啊,因為又是區間的更加沒有想到了。

從頭往前掃,第一個不足x的肯定需要增加x-a[i],那麼肯定它作為連續的一段的最左邊,那麼把這一段的a[i]都加上x-a[i],繼續掃描第一個不足x的,就這麼簡單。。。

但是搞了一晚上才過,尼瑪,原來二分的時候把r=INF了,然後因為可能要加上a[i]然後就超了int了,但是我全部換成long long 竟然不對,老是在第十五個範例WA,不知道怎麼回事,改了又交了好多發依然WA不止,後面還是改成r=1100000000才行,這個加上a[i]正好在int邊界那,所以才A。暈……

#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<queue>#include<set>#include<cmath>#include<bitset>#define mem(a,b) memset(a,b,sizeof(a))#define lson i<<1,l,mid#define rson i<<1|1,mid+1,r#define llson j<<1,l,mid#define rrson j<<1|1,mid+1,r#define INF 0x7fffffff#define maxn 200005typedef long long ll;typedef unsigned long long ull;using namespace std;int n,m,w,a[maxn],b[maxn];bool check(ll mid){    int sum=0,cnt=0;    mem(b,0);    for(int i=0;i<n;i++)    {        sum+=b[i];        if(sum+a[i]<mid)        {            cnt+=mid-(sum+a[i]);            if(cnt>m) return false;            b[i+w]-=mid-(sum+a[i]);            sum+=mid-(sum+a[i]);        }    }    return true;}int binary(){    int l=1,r=1100000000,mid;    while(l<=r)    {        mid=(l+r)>>1;        if(check(mid)) l=mid+1;        else r=mid-1;    }    return r;}int main(){    cin>>n>>m>>w;    for(int i=0;i<n;i++) cin>>a[i];    cout<<binary()<<endl;    return 0;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.