首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[ACM]Flyer(长春市网络赛1010)

2013-10-17 
[ACM]Flyer(长春网络赛1010)FlyerTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (J

[ACM]Flyer(长春网络赛1010)

Flyer

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1140    Accepted Submission(s): 397


Problem DescriptionInputOutputSample InputSample OutputSourceRecommend#include <iostream>#include <algorithm>using namespace std;int N;struct tuan{ long long ai; long long bi; long long ci;}shetuan[20005];//社团结构体long long cal(long long mid){ long long sum=0; for(int i=1;i<=N;i++) { long long limit=min(shetuan[i].bi,mid);//bi是限制范围,最大编号不能超过它 if(limit>=shetuan[i].ai) { sum+=(limit-shetuan[i].ai)/shetuan[i].ci+1;//计算前Mid个学生得到的第i个社团的传单总数 } }//计算前mid个学生得到的所有社团的传单的总数 return sum;}int main(){ int i; while(cin>>N) { for(i=1;i<=N;++i) cin>>shetuan[i].ai>>shetuan[i].bi>>shetuan[i].ci; long long l=1,r=1LL<<31;//注意这里要写为1LL<<31 不能只写为1<<31 while(l<r) { long long mid=(l+r)/2; if(cal(mid)%2==1) r=mid; else l=mid+1; }//二分,把得到传单为奇数的学生的编号精确到1,即l if(l==1LL<<31) cout<<"DC Qiang is unhappy."<<endl;//没有得到传单数为奇数的学生 else cout<<l<<" "<<cal(l)-cal(l-1)<<endl;//前l个学生得到的传单总数-前l-1个学生得到的传单总数得到第l个学生(编号为l)得到的传单总数(奇数) } return 0;}


 

运行截图:

[ACM]Flyer(长春市网络赛1010)

热点排行