网站制作及排名优化,wordpress中文cms主题模板下载,建设集团网站方案设计,免费的制作网站程序第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB
1KB 1024byte
1byte8bit
// cout2…第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB
1KB 1024byte
1byte8bit
// cout256*1024*1024/4; // 记住 1024 即可2、卡片 往简单的讲就是一个排列组合的问题因为可以选自身所以n张卡片最多有 n C2n中方案。 我们可以把它想象成一个开口向上的二次函数然后根据x去求最小的y值。
#includeiostream
#define ll long long
using namespace std;
ll n,k;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cinn;// (x^2x)/2 n// 2n x^2x// x^2x-2n0 求xfor(ll i1;i1e9;i){if(i*ii2*n){couti;return 0; }} return 0;
}3、直线 #includeiostream
#includeset
#define pii pairdouble,double
#define ll long long
using namespace std;
int x20,y21;
setpii st;
void check(int x1,int y1,int x2,int y2){if(x1x2||y1y2)return;double k(y2-y1)*1.0/(x2-x1);// y1k*x1b y2k*x2b// k(y2-y1)/(x2-x1)替代即可算出b(x2*y1-x1*y2)/(x2-x1) double b(x2*y1-x1*y2)*1.0/(x2-x1);st.insert({k,b});
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);for(int i0;iy;i){for(int j0;jx;j){for(int k0;ky;k){for(int t0;tx;t){check(j,i,t,k);}}}}coutst.size()xy; return 0;
}4、货物摆放 先去找到这个数的所有因子再去枚举这些因可能成为的结果。最后计算这些结果。
#includeiostream
#includecmath
#define ll long long
using namespace std;
ll n 2021041820210418;
ll a[50001],cnt0;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);for(int i1;isqrt(n);i){if(n%i0){a[cnt]i;if(i*i!n)a[cnt]n/i;}}int res0;for(int l1;lcnt;l)for(int w1;wcnt;w)for(int h1;hcnt;h)if(a[l]*a[w]*a[h]n)res;coutres;return 0;
}5、路径 #includeiostream
#define ll long long
using namespace std;
const int n 2025;
//ll d[n][n];
ll INF 1e17;
// 循环遍历超时辗转相除法高效
int gcd(int a,int b){if(a%b0)return b;return gcd(b,a%b);
}
int lcm(int a, int b){return a / gcd(a, b) * b;}
//void floyd(){
// for(int k1;kn;k)
// for(int i1;in;i)
// for(int j1;jn;j)
// if(d[i][k]!INFd[k][j]!INF)d[i][j]min(d[i][j],d[i][k]d[k][j]);
//}int d[n];
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);for(int i0;in;i)d[i]INF;d[1]0;for(int i1;in;i)for(int ji1;jnj-i21;j){d[j]min(d[j],lcm(i,j)d[i]);}coutd[2021];return 0;
}6、时间显示 时间换算思维创新。
#includeiostream
#define ll long long
using namespace std;
ll n,h,m,s;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cinn;nn/1000;//舍弃毫秒 1s 1000ms nn%(24*60*60);// 一天24小时 hn/3600;m(n-h*3600)/60;sn-3600*h-60*m;if(h10){cout0h:;}else{couth:;}if(m10){cout0m:;}else{coutm:;}if(s10){cout0s;}else{couts;}return 0;
}7、砝码称重 #includeiostream
#includequeue
#includecmath
#includecstring
using namespace std;
const int N 1e510;
queueint q;
int n,w,cnt;
bool ans[N];
int main(){memset(ans,0,sizeof(ans));cinn;q.push(0);for(int i0;in;i){cinw;queueint tmp_q;while(!q.empty()){int xq.front();q.pop();if(ans[xw]false){ans[xw]true;cnt;tmp_q.push(xw);}if(ans[abs(x-w)]false){ans[abs(x-w)]true;cnt;tmp_q.push(abs(x-w));}tmp_q.push(x);}qtmp_q;}cout cnt-1;//为0的情况不要return 0;
}8、杨辉三角形 只会写朴素算法优化的算法还没看懂。。。。。 这个只能过40%。
#includeiostream
#define ll long long
using namespace std;
const int N 2e35;
int dp[N][N],n;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cinn;if(n1){cout1;return 0;} dp[1][1]dp[2][1]dp[2][2]1;for(int i3;iN-1;i){for(int j1;ji;j){if(j1||ji){dp[i][j]1;}else{dp[i][j]dp[i-1][j]dp[i-1][j-1];}if(dp[i][j]n){// a1an)/2 a1i,ani-1,多出来的 j couti*(i-1)/2j;return 0;}}}return 0;
}9、双向排序 直接暴力截决。只能过60%。
#includeiostream
#includealgorithm
#includevector
#define ll long long
using namespace std;
int n,m;
vectorint v;
bool cmp(int a,int b){return ab;
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cinnm;for(int i1;in;i)v.push_back(i);for(int i1;im;i){int p,q;cinpq;if(p0)sort(v.begin(),v.begin()q,cmp);else sort(v.begin()q-1,v.end());}for(const auto x:v)coutx ;return 0;
}10、括号序列 这题没看懂。。。