Educational Codeforces Round 72 (Rated for Div. 2) A. Creating a Character

匿名 (未验证) 提交于 2019-12-02 23:59:01

题目原文:http://codeforces.com/contest/1217/problem/A

题意:三个数a,b,c。。将c分配到a,b中,要分完。分完后a要严格大于b。有几种分法。

我的思路(菜菜鸟思路):分情况,a+c<=b,b>=a,剩下的a-b如果大于c,直接输出c+1,否则找到能够分给b最大的数即可。

AC代码

 1 #include <iostream>  2 #include <cstdio>  3 using namespace std;  4 typedef long long ll;  5 int main(){  6     int T;  7     cin>>T;  8     while(T--){  9         ll a,b,c; 10         cin>>a>>b>>c; 11         ll num; 12         if(a+c<=b){ 13             cout<<"0"<<endl; 14             continue; 15         } 16         if(b>=a){ 17             num=b-a+1; 18             c-=num; 19             cout<<c/2+1<<endl; 20         } 21         else{ 22             num=a-b; 23             ll ans; 24             if(num>c){ 25                 cout<<c+1<<endl; 26                 continue; 27             } 28             ans=c-(c-num)/2; 29             cout<<ans<<endl; 30         } 31     } 32     return 0; 33 }

AC代码

 1 #include <iostream>  2 #include <cstdio>  3 using namespace std;  4 typedef long long ll;  5 int main(){  6     int T;  7     cin>>T;  8     while(T--){  9         ll a,b,c; 10         cin>>a>>b>>c; 11         //a+z-n>=y+n+1 12         //a+c-b-1>=2n 13         //0<=n<=c 14         ll ss=0; 15         ll num=a+c-b-1; 16         ll num1=max(num/2,ss); 17         if(num<0) num1=-2; 18         cout<<max(ss,min(num1+1,c+1))<<endl; 19     } 20     return 0; 21 }

心得:多运用数学知识,思维不能硬化,要活用脑

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!