虽然是简单题,但是一直没注意,运送时的规则wa了好几次!
如图:
如果从1运到5::需要占用1到6;
如果从2运到5:需要暂用1到6;
也就是说,如果,从k运到l(k<l)
if(k%2==0)
k--;
if(l%2)
l++;
用数组dp表示过道被使用的次数,求其最大值即可:
Source Code
Problem: 1083 | User: zhuzhuxia | |
Memory: 716K | Time: 16MS | |
Language: G++ | Result: Accepted |
- Source Code
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int main() { int i,j,k,l,m,n,t; cin>>t; while(t--) { cin>>n; int ans=0; int dp[444]={0}; for(i=1;i<=n;i++) { cin>>k>>l; if(k>l) { m=k; k=l; l=m; } if(k%2==0) k--; if(l%2) { l++; } for(j=k;j<=l;j++) { dp[j]++; if(dp[j]>ans) ans=dp[j]; // cout<<ans<<" "; } } cout<<ans*10<<endl; } }