门户网站整改情况报告,长沙软件开发公司,网站开发工具安卓版,新手编程入门先学什么目录
A.小红的同余
B.小红的三倍数
C.小红充电
D.小红的gcd E.小红走矩阵
F.小红的数组 这次周赛题目比较简单#xff0c;算法题也基本上是板子题#xff0c;出得很好(#xff5e;#xffe3;▽#xffe3;)#xff5e; A.小红的同余 思路#xff1a;签到题算法题也基本上是板子题出得很好(▽) A.小红的同余 思路签到题别看成逆元题就行
#includeiostream
#define int long long
using namespace std;int32_t main()
{int m;cinm;cout(m1)/2;
}
B.小红的三倍数 思路签到题如果这个数能被三整除则这个数每一位的数相加得到的和也能被三整除
#includeiostream
#includecstring
using namespace std;
int main()
{int n;cinn;int sum0;for(int i0;in;i){string s;cins;for(int j0;js.size();j){sums[j]-0;}}if(sum%30)puts(YES);else puts(NO);
}
C.小红充电 思路总共分两种情况讨论 ① xt 时使用超级快充即可 ② xt 时计算先玩到电量为t时启用超级快充更快还是直接充电更快
#includeiostreamusing namespace std;
int main()
{double x,y,t,a,b,c;cinxytabc;if(xt){printf(%.9lf,(100*1.0-x)/c);}else{double wanx-t;double t11.0*wan/y;//这个地方分母要乘1.0double t2(100*1.0-t)/c;double t3(t1t2);double t4(100*1.0-x)/b;printf(%.9lf,min(t3,t4));}
}
D.小红的gcd 思路可以迭代线性遍历a来求解a%b的值然后在求gcd(a%b, b)
#includeiostream
#define int long long
using namespace std;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
int32_t main()
{string a;cina;int b;cinb;int res0;for(auto t:a){res(res*10(t-0))%b;}coutgcd(res,b);
} E.小红走矩阵 思路用Dijkstra来写优先队列每次弹出所有路径最大值的最小值
#includeiostream
#includevector
#includequeue
#define x first
#define y second
using namespace std;
typedef pairint,int PII;
typedef pairint,PII PIII;
const int N505;
int ne[4][2]{{0,1},{0,-1},{1,0},{-1,0}};
int a[N][N],n,dist[N][N];
bool st[N][N];
void Dijkstra()
{priority_queuePIII,vectorPIII,greaterPIII heap;heap.push({a[1][1],{1,1}});dist[1][1]a[1][1];while(heap.size()){auto itheap.top();heap.pop();int xxit.y.x,yyit.y.y,mait.x;if(st[xx][yy]) continue;st[xx][yy]true;for(int i0;i4;i){int txxxne[i][0],tyyyne[i][1];if(tx1txnty1tyn!st[tx][ty]){dist[tx][ty]max(ma,a[tx][ty]);heap.push({dist[tx][ty],{tx,ty}});}}}
}
int main()
{cinn;for(int i1;in;i)for(int j1;jn;j) cina[i][j];Dijkstra();coutdist[n][n];
}
F.小红的数组 思路 线段树板题跟“你能回答这些问题吗”做法一样只是多了一个要存储每个区间的最小线段和这里得用scanf输入才不会超时关闭流用cincout还是会超时
#includeiostream
#define int long long
using namespace std;
const int N5e55;
int w[N];
struct node{int l,r;int sum,sum_min;int lmax,lmin;int rmax,rmin;int tmax,tmin;
}tr[4*N];void pushup(node u,node l,node r)
{u.suml.sumr.sum;u.lmaxmax(l.lmax,l.sumr.lmax);u.rmaxmax(r.rmax,r.suml.rmax);u.tmaxmax(max(l.tmax,r.tmax),l.rmaxr.lmax);u.sum_minl.sum_minr.sum_min;u.lminmin(l.lmin,l.sum_minr.lmin);u.rminmin(r.rmin,r.sum_minl.rmin);u.tminmin(min(l.tmin,r.tmin),l.rminr.lmin);
}void pushup(int u)
{pushup(tr[u],tr[u1],tr[u1|1]);
}void build(int u,int l,int r)
{if(lr) tr[u]{l,l,w[l],w[l],w[l],w[l],w[l],w[l],w[l],w[l]};else{tr[u]{l,r};int mid(lr)1;build(u1,l,mid),build(u1|1,mid1,r);pushup(u);}
}node query(int u,int l,int r)
{if(tr[u].lltr[u].rr) return tr[u];else{int mid(tr[u].ltr[u].r)1;if(midr) return query(u1,l,r);else if(midl) return query(u1|1,l,r);else{node Lquery(u1,l,r);node Rquery(u1|1,l,r);node res;pushup(res,L,R);return res;}}
}int32_t main()
{int n;scanf(%lld,n);for(int i1;in;i) scanf(%lld,w[i]);build(1,1,n);int q;scanf(%lld,q);while(q--){int l,r;scanf(%lld %lld,l,r);node resquery(1,l,r);printf(%lld\n,max(abs(res.tmax),abs(res.tmin)));}
}