首页 > 代码库 > Codeforces Round #278 (Div. 2)
Codeforces Round #278 (Div. 2)
A直接暴力好了。
1 #include<bits/stdc++.h> 2 typedef long long ll; 3 using namespace std; 4 5 int pan(ll x) 6 { 7 while (x) 8 { 9 if (x%10==8) return 1;10 x/=10;11 }12 return 0;13 }14 15 int main()16 {17 ll n;18 cin>>n;19 for (int i=1;i<=10000;i++)20 if (pan(abs(n+i)))21 {22 cout<<i;23 return 0;24 }25 return 0;26 }
B:处理起来比较蛮烦,或则我比较懒。
大概思路是:先判n==4
2:n==0,预设定一个数。
3:N==1,可以用数学算出来;
N==2&&N==3的情况比较难讨论。但是ai<=500;看到直接暴力的思路;
C:暴力即可。
我们知道所有值都在100以内。所以我们可以暴力攻击和防御值买多少,然后算HP。因为HP可能买很多。
这样循环数不会很多。
1 #include<bits/stdc++.h> 2 typedef long long ll; 3 using namespace std; 4 5 int hpy,atky,defy; 6 int hpm,atkm,defm; 7 8 9 10 int pan(int b,int c)11 {12 13 int tatky=atky+b;14 int tdefy=defy+c;15 if (tatky<=defm) return -1;16 17 int tmp=tatky-defm;18 19 int ti=hpm/tmp;20 if (hpm%tmp) ti++;21 22 if (atkm<=tdefy) return 0;23 24 tmp=atkm-tdefy;25 26 if (ti*tmp<hpy) return 0;27 return ti*tmp-hpy+1;28 }29 30 31 int main()32 {33 34 int h,a,d;35 cin>>hpy>>atky>>defy;36 cin>>hpm>>atkm>>defm;37 cin>>h>>a>>d;38 39 int ans=1<<30;40 41 42 for (int j=0;j<4000;j++)43 for (int k=0;k<4000;k++)44 {45 if (pan(j,k)==-1) continue;46 ans=min(ans,pan(j,k)*h+a*j+d*k);47 }48 49 cout<<ans<<endl;50 return 0;51 }
D:思路很多:线段树,单调队列。
我看到的一种做法。。。
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int a[123456]; 5 int n,L,s; 6 int flag=1; 7 int main() 8 { 9 int left,right;10 int ans=0;11 cin>>n>>s>>L;12 int last=0;13 for (int i=0;i<n;i++) cin>>a[i];14 15 int pos=0;16 for (;pos<n;pos++)17 {18 int maxm,minm;19 int cnt=1;20 maxm=minm=a[pos];21 right=pos+1;22 while (right<n)23 {24 maxm=max(maxm,a[right ]);25 minm=min(minm,a[right ]);26 if (maxm-minm<=s) cnt++;27 else break;28 right++;29 }30 right--;31 32 maxm=minm=a[pos];33 left=pos-1;34 while (left>=last)35 {36 maxm=max(maxm,a[left ]);37 minm=min(minm,a[left ]);38 if (maxm-minm<=s) cnt++;39 else break;40 left--;41 }42 left++;43 if (cnt<L)44 {45 flag=0;46 break;47 }48 ans++;49 last=left+L;50 pos=right;51 }52 53 if (flag==0) ans=-1;54 cout<<ans;55 return 0;56 }
http://www.cnblogs.com/AOQNRMGYXLMV/p/4116052.html。
这里有讲解。
然后我再分析一下
7 2 2
1 3 1 2 4 1 2
样例:
先把1 3 1 2放入第一组。
last的值是3(下标从0开始);
下次循环时可以在left到last中再找,就是4,2两个数一组。
Codeforces Round #278 (Div. 2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。