A.
签到
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m,k,r,c; 4 int Ans[50005]; 5 int main() 6 { 7 scanf("%d%d%d%d%d",&n,&m,&k,&r,&c); 8 for(int i=1;i<=n;++i) 9 for(int j=1;j<=m;++j) 10 { 11 int x; 12 scanf("%d",&x); 13 if(x)Ans[x+abs(r-i)+abs(c-j)]++; 14 } 15 int tot=0; 16 for(int i=1;i<=50000;++i)if(Ans[i])tot++; 17 printf("%dn",tot); 18 for(int i=1;i<=50000;++i)if(Ans[i])printf("%d %dn",i,Ans[i]); 19 }
View Code
C.
签到
1 #include<bits/stdc++.h> 2 using namespace std; 3 int T; 4 int a[8],d; 5 int main() 6 { 7 scanf("%d",&T); 8 while(T--) 9 { 10 for(int i=0;i<7;++i) 11 { 12 scanf("%d",&a[i]); 13 } 14 scanf("%d",&d); 15 int j=d; 16 vector<int> A; 17 A.push_back(j); 18 for(int i=d-1;i>=0;--i)if(a[i]<a[j])A.push_back(i),j=i; 19 sort(A.begin(),A.end()); 20 for(int x:A)printf("%d ",x); 21 puts(""); 22 } 23 }
View Code
G.
物理题
对于每个折线上的点以其和起点终点求个抛物线
但这不一定是最优的
另一种可能的最优解可以通过斜抛运动的方程变形,以(v_0=f(theta))求导得出,角度是(tan(2theta)=-frac{x_n}{y_n})
然后对每个抛物线判一下合法取个最优
1 #include<bits/stdc++.h> 2 using namespace std; 3 const double eps = 1e-5; 4 struct Point 5 { 6 double x,y; 7 Point(double X=0,double Y=0):x(X),y(Y){} 8 }p[100005]; 9 int m,n; 10 double basx,basy,tx,ty; 11 int main() 12 { 13 scanf("%d",&m); 14 scanf("%lf%lf",&basx,&basy); 15 for(int i=2;i<m;++i) 16 { 17 double x,y; 18 scanf("%lf%lf",&x,&y); 19 p[++n]=Point(x-basx,y-basy); 20 } 21 scanf("%lf%lf",&tx,&ty); 22 tx-=basx;ty-=basy; 23 long double mna=1e10,tb=0; 24 for(int i=1;i<=n;++i) 25 { 26 long double xn=tx,yn=ty,xi=p[i].x,yi=p[i].y; 27 long double a=(yn*xi-yi*xn)/(xi*xn*(xn-xi)); 28 if(a>0)continue; 29 if(a<mna) 30 { 31 mna=a; 32 tb=(xn*xn*yi-yn*xi*xi)/(xn*xi*(xn-xi)); 33 } 34 } 35 long double B; 36 if(abs(ty)>eps) 37 { 38 if(tx*ty<0) 39 { 40 long double si=atan(-tx/ty)/2; 41 B=tan(si); 42 } 43 else 44 { 45 long double si=(atan(-tx/ty)+acos(-1))/2; 46 B=tan(si); 47 } 48 } 49 else B=1; 50 long double A=(ty-B*tx)/(tx*tx); 51 bool yes=1; 52 for(int i=1;i<=n;++i) 53 { 54 long double x=p[i].x; 55 if((long double)p[i].y>A*x*x+B*x){yes=0;break;} 56 } 57 if(yes) 58 { 59 //long double v=min(sqrt(-5*(1+tb*tb)/mna),sqrt(-5*(1+B*B)/A)); 60 long double v=sqrt(-5*(1+B*B)/A); 61 printf("%.10fn",(double)v); 62 } 63 else 64 { 65 long double v=sqrt(-5*(1+tb*tb)/mna); 66 printf("%.10fn",(double)v); 67 } 68 }
View Code
I.
注意字典序
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,k; 4 string change(int x) 5 { 6 string c;c.clear(); 7 while(x) 8 { 9 c.push_back(x%10+'0'); 10 x/=10; 11 } 12 reverse(c.begin(),c.end()); 13 return c; 14 } 15 bool cmp1(int A,int B) 16 { 17 return change(A)<change(B); 18 } 19 bool cmp(pair<int,int> A,pair<int,int> B) 20 { 21 return make_pair(change(A.first),change(A.second))<make_pair(change(B.first),change(B.second)); 22 } 23 int a[100005]; 24 int main() 25 { 26 scanf("%d%d",&n,&k); 27 if((n-1)%k==0) 28 { 29 puts("Yes"); 30 for(int i=1;i<=n;++i)a[i]=i; 31 sort(a+1,a+n+1,cmp1); 32 int cnt=1; 33 for(int i=1;i<=(n-1)/k;++i) 34 { 35 for(int j=1;j<=k;++j)printf("%d %d ",a[i],a[++cnt]); 36 } 37 } 38 else puts("No"); 39 }
View Code
原文链接: https://www.cnblogs.com/uuzhateteee/p/12667667.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/341029
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!