首页 > 代码库 > HDU1050
HDU1050
思路分析(盗图一张):
分析过程有如下图所示:
我们可以用一个数组flag记录(1,2),(3,4)·····的公共走廊被记录的次数,每经过一次便把对应的flag[i]加1;注意边缘化处理,我们只采用一个长为205的数组处理,所以需要把数据统一到偶数中去,然后采用flag[j/2]进行存储。
由于对于每一个flag[i]一次只能访问一次,所以我们只需要找出最大的flag[i]就可以输出结果。
代码展示:
1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 #define maxn 205 5 int move[maxn][2]; 6 int flag[205]; 7 int main() 8 { 9 int t;10 cin>>t;11 while(t--)12 {13 int n;14 memset(flag,0,sizeof(flag));15 cin>>n;16 for(int i=0;i<n;i++)17 {18 cin>>move[i][0]>>move[i][1];19 if(move[i][0]>move[i][1]){int t=move[i][0];move[i][0]=move[i][1];move[i][1]=t;}20 if(move[i][0]%2==1) move[i][0]++;21 if(move[i][1]%2==1) move[i][1]++;22 for(int j=move[i][0];j<=move[i][1];j+=2)23 flag[j/2]++;24 }25 int max=flag[0];26 for(int i=1;i<=200;i++)27 if(flag[i]>max)max=flag[i];28 cout<<max*10<<endl;29 }30 return 0;31 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。