Codeforces Round #514 (Div. 2)
2018-10-06 16:30 hhh0729 阅读(112) 评论(0) 收藏 举报A. Cashier
题意:总工作时长为L分钟,共服务n个顾客,第i个顾客在ti时刻到达,并逗留li分钟,若没有顾客,则可以花费连续的a分钟休息一次,问最多能休息几次。
思路:
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int start[100024],b[100024]; 5 int main() 6 { 7 int n,L,a,sum=0; 8 cin>>n>>L>>a; 9 for(int i=0;i<n;i++){ 10 cin>>start[i]>>b[i]; 11 b[i]+=start[i]; 12 } 13 sort(start,start+n); 14 sort(b,b+n); 15 for(int i=0;i<n-1;i++) 16 sum+=( start[i+1] - b[i] )/a; 17 sum+=start[0]/a + ( L-b[n-1] )/a; 18 cout<<sum<<endl; 19 return 0; 20 }
B. Forgery
1 #include<iostream> 2 #include<algorithm> 3 #include<string> 4 using namespace std; 5 string s[1024]; 6 int n,m,a[1024][1024]; 7 void paint(int x,int y){ 8 a[x+1][y]++; 9 a[x-1][y]++; 10 a[x][y+1]++; 11 a[x][y-1]++; 12 a[x+1][y+1]++; 13 a[x+1][y-1]++; 14 a[x-1][y+1]++; 15 a[x-1][y-1]++; 16 } 17 int can_paint(int x,int y){ 18 int flag=1; 19 if(a[x+1][y]==0) flag=0; 20 else if(a[x-1][y]==0) flag=0; 21 else if(a[x][y+1]==0) flag=0; 22 else if(a[x][y-1]==0) flag=0; 23 else if(a[x-1][y-1]==0) flag=0; 24 else if(a[x-1][y+1]==0) flag=0; 25 else if(a[x+1][y-1]==0) flag=0; 26 else if(a[x+1][y+1]==0) flag=0; 27 return flag; 28 } 29 int main() 30 { 31 int flag=1; 32 cin>>n>>m; 33 for(int i=0;i<n;i++) 34 cin>>s[i]; 35 for(int i=0;i<n;i++) 36 for(int j=0;j<m;j++) 37 if(s[i][j]=='#') 38 a[i][j]=1; 39 else 40 a[i][j]=0; 41 for(int i=1;i<n-1;i++){ 42 for(int j=1;j<m-1;j++){ 43 if(can_paint(i,j)) 44 paint(i,j); 45 } 46 } 47 for(int i=0;i<n;i++){ 48 for(int j=0;j<m;j++){ 49 if(a[i][j]==1){ 50 flag=0; 51 break; 52 } 53 } 54 if(flag==0) 55 break; 56 } 57 if(flag) 58 cout<<"YES"<<endl; 59 else 60 cout<<"NO"<<endl; 61 return 0; 62 }
浙公网安备 33010602011771号