1219
遍历计数。
1 #include<bits/stdc++.h> 2 #define QAQ 0 3 4 using namespace std; 5 6 char a[100010]; 7 int cnt[200]; 8 int main(){ 9 while(cin.getline(a,100005)){ 10 memset(cnt,0,sizeof(cnt)); 11 int l=strlen(a); 12 for(int i=0;i<l;i++){ 13 cnt[a[i]]++; 14 } 15 for(int i='a';i<='z';i++){ 16 printf("%c:%d\n",i,cnt[i]); 17 } 18 printf("\n"); 19 } 20 return QAQ; 21 }
1221
最大值一定到在圆心到矩形四个顶点里,最小值除了到顶点距离外,再判一下圆心到四条边距离。
1 #include<bits/stdc++.h> 2 #define QAQ 0 3 4 using namespace std; 5 typedef long long ll; 6 const double eps=1e-7; 7 8 double x,y,r,a1,b1,a2,b2,a3,b3,a4,b4,maxi,mini; 9 ll T; 10 11 double dis(double x1, double y1, double x2, double y2){ 12 return sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ); 13 } 14 15 int main(){ 16 scanf("%lld",&T); 17 while(T--){ 18 scanf("%lf%lf%lf%lf%lf%lf%lf",&x,&y,&r,&a1,&b1,&a2,&b2); 19 a3=a1; b3=b2; a4=a2; b4=b1; 20 double l1=dis(x,y,a1,b1),l2=dis(x,y,a2,b2), 21 l3=dis(x,y,a3,b3),l4=dis(x,y,a4,b4); 22 23 maxi=max( max(l1,l2) , max(l3,l4) ); 24 mini=min( min(l1,l2) , min(l3,l4) ); 25 26 if(x>a1 && x<a2){ 27 mini=min( mini, min( fabs(y-b1) , fabs(y-b2) ) ); 28 } 29 30 if(y>b1 && y<b2){ 31 mini=min( mini, min( fabs(x-a1) , fabs(x-a2) ) ); 32 } 33 34 if(mini<=r && maxi>=r){ 35 printf("YES"); 36 } 37 else printf("NO"); 38 printf("\n"); 39 } 40 return QAQ; 41 }