标签:bre 奇数 mem print long img none 个数 组成
温馨提示,这套题的所有题目都可以百度的到。B题还没补,I题正在试图弄懂。
F读错题wa了三个小时。自闭了,不然I题有可能能出的。。已经想到组合数也敲完组合数板子了。
A:这。。。**题吧,第一眼看的这个就秒了
1 #include<bits/stdc++.h> 2 #define pii pair<int,int> 3 #define mk(a,b) make_pair(a,b) 4 using namespace std; 5 typedef long long ll; 6 int a[11],b[11]; 7 void slove(int n,int id){ 8 if(id==1) { 9 int k = 0; 10 while (n) { 11 k++; 12 a[k] = n % 10; 13 a[k]*=pow(10,k-1); 14 n /= 10; 15 } 16 } else{ 17 int k = 0; 18 while (n) { 19 k++; 20 b[k] = n % 10; 21 b[k]*=pow(10,k-1); 22 n /= 10; 23 } 24 } 25 } 26 int t,x,y; 27 vector<pii>ans; 28 int main(){ 29 ios::sync_with_stdio(false); 30 cin>>t; 31 while (t--){ 32 memset(a,0, sizeof(a)); 33 memset(b,0, sizeof(b)); 34 ans.clear(); 35 cin>>x>>y; 36 slove(x,1); 37 slove(y,2); 38 for(int i=1;i<=10;i++){ 39 if(a[i]==0) 40 continue; 41 for(int j=1;j<=10;j++){ 42 if(b[j]==0) 43 continue; 44 ans.push_back(mk(a[i],b[j])); 45 } 46 } 47 for(int i=0;i<ans.size();i++){ 48 if(i==ans.size()-1){ 49 cout<<ans[i].first<<" x "<<ans[i].second<<endl; 50 } else{ 51 cout<<ans[i].first<<" x "<<ans[i].second<<" + "; 52 } 53 } 54 } 55 }
B:留坑
C:又卡cin。。。小学数学题
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t; 5 double a,b,c,x; 6 int main(){ 7 //ios::sync_with_stdio(false); 8 scanf("%d",&t); 9 while (t--){ 10 scanf("%lf%lf%lf%lf",&a,&b,&c,&x); 11 double ans = 0; 12 ans+=sqrt(a*a+(b+c+c)*(b+c+c)); 13 x/=100; 14 ans += sqrt(b*b+a*a)*x; 15 ans+=sqrt((c+c+b*(1.0-x))*(c+c+b*(1.0-x))+a*(1.0-x)*a*(1.0-x)); 16 printf("%.10f\n",ans); 17 } 18 }
D:**
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t,n,x,y; 5 int main(){ 6 ios::sync_with_stdio(false); 7 cin>>t; 8 while (t--){ 9 cin>>n>>x>>y; 10 if(n%2==0){ 11 if(x>=n/2&&y>=n/2) 12 cout<<"YES"<<endl; 13 else 14 cout<<"NO"<<endl; 15 } else{ 16 if(y>=n/2&&x>=n/2+1) 17 cout<<"YES"<<endl; 18 else 19 cout<<"NO"<<endl; 20 } 21 } 22 }
E:我做的很麻烦,可以不开那个数组,直接记录当前已知的最大测试数据就行
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t,k,n,m; 5 char c[10005]; 6 int vis[10005]; 7 void slove(int st,int en){ 8 for(int i=st;i<=en;i++) 9 vis[i]=(c[i]==‘S‘); 10 } 11 int main(){ 12 ios::sync_with_stdio(false); 13 cin>>t; 14 while (t--){ 15 memset(vis,0, sizeof(vis)); 16 memset(c,0, sizeof(c)); 17 cin>>n>>m>>k; 18 for(int i=1;i<=n;i++) 19 cin>>c[i]; 20 int mx = k; 21 slove(1,mx); 22 int ans = 0; 23 char op;int x; 24 while (m--){ 25 cin>>op; 26 if(op==‘A‘){ 27 slove(mx+1,n); 28 mx = n; 29 } else{ 30 cin>>x; 31 if(x>mx){ 32 slove(mx+1,x); 33 mx = x; 34 } else{ 35 if(vis[x]) 36 ans++; 37 } 38 } 39 } 40 cout<<ans<<endl; 41 } 42 }
F:我以为必须要全部用完,也就是“恰好”才可以。。。******************
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll a[27],t,s1,s2,minn,ans,sum; 5 int main() { 6 ios::sync_with_stdio(false); 7 cin>>t; 8 while(t--) { 9 minn=1e12; 10 ans=s1=s2=sum=0; 11 for(int i=1;i<=26;i++) { 12 cin>>a[i]; 13 if(a[i]==1)s1++; 14 if(a[i]>=2) { 15 s2++; 16 minn=min(a[i]/2,minn); 17 } 18 } 19 ans=s2*2; 20 if(s1>0) { 21 ans++; 22 sum=min(minn,s1); 23 } 24 else 25 sum=minn; 26 if(minn==1e12)sum=s1; 27 cout<<ans<<‘ ‘<<sum<<endl; 28 } 29 return 0; 30 }
G:从四个角分别维护一下然后枚举删掉的行列
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t,n,m; 5 int a[505][505]; 6 int plu[505][505]; 7 int pru[505][505]; 8 int pld[505][505]; 9 int prd[505][505]; 10 void init(){ 11 memset(plu,0, sizeof(plu)); 12 memset(pru,0, sizeof(pru)); 13 memset(pld,0, sizeof(pld)); 14 memset(prd,0, sizeof(prd)); 15 memset(a,0, sizeof(a)); 16 } 17 int main(){ 18 ios::sync_with_stdio(false); 19 cin>>t; 20 while (t--) { 21 init(); 22 cin >> n >> m; 23 for (int i = 1; i <= n; i++) 24 for (int j = 1; j <= m; j++) 25 cin >> a[i][j]; 26 for(int i=1;i<=n;i++){ 27 for(int j=1;j<=m;j++){ 28 plu[i][j]=max(max(plu[i-1][j],plu[i][j-1]),a[i][j]); 29 } 30 } 31 for(int i=1;i<=n;i++){ 32 for(int j=m;j>=1;j--){ 33 pru[i][j]=max(max(pru[i][j+1],pru[i-1][j]),a[i][j]); 34 } 35 } 36 for(int i=n;i>=1;i--){ 37 for(int j=1;j<=m;j++){ 38 pld[i][j]=max(max(pld[i+1][j],pld[i][j-1]),a[i][j]); 39 } 40 } 41 for(int i=n;i>=1;i--){ 42 for(int j=m;j>=1;j--){ 43 prd[i][j]=max(max(prd[i+1][j],prd[i][j+1]),a[i][j]); 44 } 45 } 46 int ans = 1e9+1; 47 for(int i=2;i<n;i++){ 48 for(int j=2;j<m;j++){ 49 ans = min(ans,max(max(max(plu[i-1][j-1],prd[i+1][j+1]),pru[i-1][j+1]),pld[i+1][j-1])-min(min(min(plu[i-1][j-1],prd[i+1][j+1]),pru[i-1][j+1]),pld[i+1][j-1])); 50 } 51 } 52 cout<<ans<<endl; 53 } 54 }
H:暴力统计出来所有的字母对就行。我是直接维护个前缀
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t,n,m,k; 5 string a,b; 6 int pre[26]; 7 int cnt[26][26]; 8 int vis[26][26]; 9 int main(){ 10 ios::sync_with_stdio(false); 11 cin>>t; 12 while (t--){ 13 cin>>n>>m>>k>>a>>b; 14 a="*"+a;b="*"+b; 15 memset(pre,0, sizeof(pre)); 16 memset(cnt,0, sizeof(cnt)); 17 memset(vis,0, sizeof(vis)); 18 for(int i=1;i<=m;i++){ 19 pre[b[i]-‘a‘]=pre[b[i]-‘a‘]+1; 20 for(int j=0;j<26;j++){ 21 cnt[b[i]-‘a‘][j]+=pre[j]; 22 } 23 } 24 int l=1,r=k; 25 ll ans = 0; 26 while (r<=n){ 27 if(vis[a[r]-‘a‘][a[l]-‘a‘]){} 28 else 29 ans+=cnt[a[r]-‘a‘][a[l]-‘a‘],vis[a[r]-‘a‘][a[l]-‘a‘]=1; 30 l++,r++; 31 } 32 cout<<ans<<endl; 33 } 34 }
I:正在看,想到了锁的求法,这个钥匙怎么出来的还在理解。
J:遇见过,hdu上的好像是,问你杨辉三角第n行奇数的个数,这个是有规律的,一百度啥都有,就直接秒了
那个,,你要是看不出来这公式就是组合数就当我啥都没说。。。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t; 5 ll n; 6 int main(){ 7 ios::sync_with_stdio(false); 8 cin>>t; 9 while (t--){ 10 cin>>n; 11 int num = 0; 12 ll tmp = n; 13 while (n){ 14 if(n&1) 15 num++; 16 n>>=1; 17 } 18 cout<<((tmp+1)-(1ll<<num))<<endl; 19 } 20 }
K:一开始又看错了感觉奇难无比,但是A题那么**的题竟然人数跟K差不多,就重新看了下,,发现他这个只能按照顺序平移一位。。。
我一开始看成只要是能组成一个环就可以。。。然后头痛欲裂。。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int na[26],nb[26]; 5 int t; 6 string a,b; 7 int main(){ 8 ios::sync_with_stdio(false); 9 cin>>t; 10 while (t--){ 11 memset(na,0, sizeof(na)); 12 memset(nb,0, sizeof(nb)); 13 int x;cin>>x; 14 cin>>a>>b; 15 string aa="",bb=""; 16 for(int i=0;i<x;i++){ 17 if(a[i]!=b[i]){ 18 aa+=a[i]; 19 bb+=b[i]; 20 } 21 } 22 int n = aa.length(); 23 int flag = 1; 24 for(int i=1;i<n;i++){ 25 if(aa[i]!=bb[i-1]) { 26 flag = 0; 27 break; 28 } 29 } 30 if(aa[0]!=bb[n-1]) 31 flag = 0; 32 if(flag) 33 cout<<"YES"<<endl; 34 else 35 cout<<"NO"<<endl; 36 } 37 }
这个B题感觉有点硬核,主要是我也没去想B题咋做。除此之外失误太多了。理论10题实际8题。。。另外3星场水题也太多了。。。说实话我们出的新生赛的那些水题都比大多数的三星场难很多。。。
滚回宿舍了。明天下午尽量快点做完计组实验然后去新生赛现场凑热闹嘿嘿嘿。
标签:bre 奇数 mem print long img none 个数 组成
原文地址:https://www.cnblogs.com/MXang/p/10085672.html