2026勰码金牌夏令营济南A-营模拟赛二补题报告
2026勰码金牌夏令营济南A-营模拟赛二补题报告S12316 明宗亮一、比赛过程1、赛前估分赛前估分T1 双数组构造T2 染色T3 动态规划T4 分形图总分10 pts10 pts10 pts16pts46 pts2、实际分数实际分数T1 双数组构造T2 染色T3 动态规划T4 分形图总分10 pts10 pts10 pts0 pts30 pts3、赛时简述这一次模拟赛自我感觉不及格但是比赛难度还是有的。第一题比较难比赛时只想到了特殊性质的分对于正解想到了可能是dp但是最终并没有成功写出。最终只拿到了10分。第二题难度小于第一题但是比赛时并没有成功AC。我先做出了特殊性质的分后开始想正解思路比赛时正解思路灵光一现但是比赛时不知道怎么回事被我想出反例了最终也没有做出来。第三题的结论并不难推但是求解的过程我只想到了用DFS。时间复杂度很高最终也只拿到了10分的暴力分。第四题题意较为好懂考试时还画出了图比赛时还是先做特殊性质成功推了15分钟后结论推对了结果被高精度直接单杀了。二、题目分析T1、双数组构造/construct1、题目大意2、赛时思路比赛时看到构造心凉了一半读了下题之后一点思路没有看到特殊性质直接上了。老师很善良的给了两个的数据我们不难使用瞪眼发得出这种情况下的答案其实就是。3、特殊性质正解#includebits/stdc.h #define int long long using namespace std; int n,m,p; int ans,num,answ; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); freopen(construct.in,r,stdin); freopen(construct.out,w,stdout); cinnmp; if(n1){ int res((1m)*m/2)%p; coutres%p; return 0; } return 0; }4、正解思路根据“对于“任意的均满足”这个限制可得出又因为题意中所给的分别单调不降、单调不增的条件可以看成将序列反过来然后与拼接即。这样题意就转化成了长度为值域在的单调不降整数序列计数问题直接设代表前个数组成的序列中第个数是的方案数就有转移 显然求和的这个式子可以前缀和优化。结论其实这题的答案就是所以在保证是大质数的情况下可以做到。5、正解#includebits/stdc.h using namespace std; char s[2][200005]; int main(){ cin.tie(0)-sync_with_stdio(0); int t;cint; while(t--){ int n;cinn; for(int i0;i2;i){ cins[i]; for(int j0;jn;j) s[i][j]^48; } for(int i0;in;i) if(!s[0][i]!s[1][i]){ for(int ji-1;ji1;j2) if(0jjn){ bool flag0; for(int k0;k2;k) if(!s[k][j]){ s[0][i]s[1][i]s[k][j]flag1;break; } if(flag) break; } } int ans0; for(int i0;i2;i) for(int j0;jn;j) anss[i][j]; coutans\n; } return 0; }T2、染色/color1、题目大意2、赛时思路比赛时想到了用贪心但是考试时总觉得正解思路不靠谱。结果考完试讲题后又有验证了他的正确性。我在考试时只做出了所有单元格都是白色的做法。思路是能放就尽量多放放不了就放一个题意中的图形这样能达到最优。3、赛时代码#includebits/stdc.h #define int long long using namespace std; const int N2e55; char a[5][N]; int n,t; bool flag0; //char a[5][2][2]{{1,0,1,1},{1,1,1,0},{1,1,0,1},{0,1,1,1}}; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); freopen(color.in,r,stdin); freopen(color.out,w,stdout); srand(time(0)); cint; while(t--){ cinn; for(int i1;i2;i){ for(int j1;jn;j){ cina[i][j]; if(a[i][j]1) flag1; } } if(!flag){ int cn,res0/,res22n*/; while(1){ if(c-30){ c-3; res6; } else if(c-20){ c-2; res3; } else break; } coutres\n; continue; } cout(rand%(2*n))\n; } return 0; }4、正解思路这一道题的正解有两种做法贪心做法按列枚举对于每一列它能够填入L需要这列的两个位置均为空之后枚举该列相邻的个位置至少需要一个位置为空但是此时可能有多种填入情况。我们的策略是能填就填。正确性可以分类讨论如果填到了左侧不影响右侧的操作。否则填到了右侧如果右侧只有一个空位置那么方案是唯一的填入一定不劣。否则右侧两个位置均为空会消掉一个位置另一个位置能填当且仅当它右侧那一列均为空。这种情况它上下是对称的填入哪个位置都一样。故该贪心得到的即为最优答案时间复杂度。状压 DP 做法:设表示处理完前列后最多放置的形数量其中是第列每个格子是否为剩余可用白格的状态。由于任意两个相邻列最多只能提供个格子而一个形需要个格子因此两列之间最多只能新形成一个形。从转移到时枚举每一个变量分为种1. 不在两列之间形成形要求第列的格子原封不动保留不与第列结合。2. 两列之间形成顺时针旋转的形要求第列上下均为白格且第列下方为白格。3. 两列之间形成顺时针旋转的形要求第列上下均为白格且第列上方为白格。4. 两列之间形成顺时针旋转的形要求第列上下均为白格且第列上方为白格。5. 两列之间形成顺时针旋转的形要求第列上下均为白格且第列下方为白格。转移的时候将这种情况取最大值最终答案是初始棋盘上的黑格总数的最大值。 时间复杂度。T3、动态规划/dp1、题目大意2、赛时思路这一道题的结论其实是比较好推的。令那么最后求的就是与哪些无关。 这相当于贡献到的次数是的倍数。所以我在比赛时DFS暴搜并统计每个的出现次数最后判断有多少不能整除即可。3、暴力代码#includebits/stdc.h #define int long long using namespace std; const int N1e55; int n,m; //int t[N],ans; setint st; int t[N]; vectorint ans; void dfs(int i,int j){ if(i1){ t[j]; // st.insert(j); return ; } if(!(2i2jinjnij)) return ; dfs(i-1,j); dfs(i-1,j-1); } signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); freopen(dp.in,r,stdin); freopen(dp.out,w,stdout); cinnm; // ansn; dfs(n,n); // coutn-st.size()\n; for(int i2;in;i){ if(t[i]%m0) ans.push_back(i); } coutans.size()\n; for(auto i:ans) couti ; // for(auto i:st) couti ; return 0; }4、正解思路这个递推式能够让我想到组合数递推。我们发现对于第行第列的元素它要么会贡献到上一行的第列要么贡献到上一行的列。而对于它会向上贡献轮但因为要贡献到所以它要在这步中选择轮向左贡献。那么把的每次贡献看成一条从自己到的路线那么一共就有种。那么其实就是一次性判断哪些组合数是的倍数即可。可以直接采用暴力求组合数的方法每次从的时候需要乘一个数再除一个数如果直接维护组合数的值只要除数与不互质可能会有问题。但是我们只关心每一个组合数是否被整除我们先将分解质因数变成的形式每次做乘法的时候我们也只需要将该数质因数分解然后在对应质因子上加次数除法就是减去判断是否是的倍数的条件就是对于每个都应满足的次数即可。虽然对分解质因数的复杂度是但一次性对分解质因数的复杂度是可以做到的只需要管的质因子即可所以总时间复杂度为。4、正解代码#includebits/stdc.h using namespace std; using lllong long; using uintunsigned int; using ullunsigned long long; #define endl \n #define lb lower_bound #define ub upper_bound #define ne nth_element #define mie min_element #define mae max_element #define eb emplace_back #define ump unordered_map #define pq priority_queue #define clz __builtin_clz #define ctz __builtin_ctz #define sz(x) (int)x.size() #define np next_permutation #define clzl __builtin_clzll #define ctzl __builtin_ctzll #define ppc __builtin_popcount #define all(x) x.begin(),x.end() #define ppcl __builtin_popcountll #define fpi(x) freopen(x,r,stdin) #define fpo(x) freopen(x,w,stdout) #define Time cerr\nTime: clock() #define uid uniform_int_distribution #define me(x,y) memset(x,y,sizeof(x)) #define seed chrono::system_clock::now().time_since_epoch().count() #ifdef Nuj templateclass T void _dbg(T h){ string stypeid(T).name(); cerr ; bool fsPKc||sPc||sSs; if(f) cerr;if(sc) cerr(char)39; cerrh; if(f) cerr;if(sc) cerr(char)39; } templateclass T void _dbg(int l,const char *c,T h){ if(l) cerrfixedsetprecision(10)In Line l ; cerrc,_dbg(h),cerrendl; } templateclass T,class...H void _dbg(int l,const char *c,T h,H... a){ if(l) cerrfixedsetprecision(10)In Line l ; int t0;bool f0,g0; while(*c^44||f|g|t){ if(*c39) f!f;if(*c34) g!g; if(!f!g) t(*c40)-(*c41)(*c91)-(*c93)(*c{)-(*c}); cerr*c; } _dbg(h),cerr, ,_dbg(0,c,a...); } #define dbg(...) _dbg(__LINE__,#__VA_ARGS__,__VA_ARGS__) #else #define dbg(...) 0 #define assert(...) 0 #endif #define mod 998244353 #define inf 0x3f3f3f3f bool no[100005]; int lim[100005][6],now[6],ans[100005],cnt; pairint,int d[6]; inline void add(int x,int v){ for(int i0;icnt;i) now[i]v*lim[x][i]; } int main(){ // fpi(); // fpo(); #ifndef Nuj cin.tie(0)-sync_with_stdio(0); #endif int n,m;cinnm; for(int i2;i*im;i) if(!(m%i)){ int tim0; while(!(m%i)) tim,m/i; d[cnt]{i,tim}; } if(m^1) d[cnt]{m,1}; for(int i1;in;i){ int tmpi; for(int j0;jcnt;j) while(!(tmp%d[j].first)) lim[i][j],tmp/d[j].first; } int tot0; for(int i1;in;i){ add(n-i,1),add(i,-1); bool yes1; for(int j0;jcnt;j) if(now[j]d[j].second){ yes0;break; } if(yes) ans[tot]i1; } couttotendl; for(int i1;itot;i) coutans[i] ; return 0; }T4、分形图/fractal1、题目大意2、赛时思路比赛时只想了特殊性质的正解。我们不难画出这一道题数据较小时的图。接着我们寻找普遍规律对于时答案是。对于时答案是。所以我们不难得出在这种情况下的答案是。比赛时被高精度单杀了。3、正解思路考虑这张画板在表示什么意思对于阶画板若位二进制数中的最高位是的最高位是那么就会被涂黑否则就去掉第位继续递归。换言之若存在某一二进制位使得是是那么它就会被涂黑否则就会被涂白。那么问题就变成了有多少对同时满足对于任意二进制位要么是要么是且也满足要么是要么是。这是个裸的数位 dp设代表从低到高是否有来自上一位的进位的方案数转移是平凡的。但是本题的答案可能会达到位所以你需要高精时间复杂度。4、正解#includebits/stdc.h using namespace std; using lllong long; using uintunsigned int; using ullunsigned long long; #define endl \n #define lb lower_bound #define ub upper_bound #define ne nth_element #define mie min_element #define mae max_element #define eb emplace_back #define ump unordered_map #define pq priority_queue #define clz __builtin_clz #define ctz __builtin_ctz #define sz(x) (int)x.size() #define np next_permutation #define clzl __builtin_clzll #define ctzl __builtin_ctzll #define ppc __builtin_popcount #define all(x) x.begin(),x.end() #define ppcl __builtin_popcountll #define fpi(x) freopen(x,r,stdin) #define fpo(x) freopen(x,w,stdout) #define Time cerr\nTime: clock() #define uid uniform_int_distribution #define me(x,y) memset(x,y,sizeof(x)) #define seed chrono::system_clock::now().time_since_epoch().count() #ifdef Nuj templateclass T void _dbg(T h){ string stypeid(T).name(); cerr ; bool fsPKc||sPc||sSs; if(f) cerr;if(sc) cerr(char)39; cerrh; if(f) cerr;if(sc) cerr(char)39; } templateclass T void _dbg(int l,const char *c,T h){ if(l) cerrfixedsetprecision(10)In Line l ; cerrc,_dbg(h),cerrendl; } templateclass T,class...H void _dbg(int l,const char *c,T h,H... a){ if(l) cerrfixedsetprecision(10)In Line l ; int t0;bool f0,g0; while(*c^44||f|g|t){ if(*c39) f!f;if(*c34) g!g; if(!f!g) t(*c40)-(*c41)(*c91)-(*c93)(*c{)-(*c}); cerr*c; } _dbg(h),cerr, ,_dbg(0,c,a...); } #define dbg(...) _dbg(__LINE__,#__VA_ARGS__,__VA_ARGS__) #else #define dbg(...) 0 #define assert(...) 0 #endif #define mod 998244353 #define inf 0x3f3f3f3f #define fr(i,l,r) for(int i (l);i (r);i) #define rf(i,l,r) for(int i (l);i (r);--i) #define fo(i,l,r) for(int i (l);i (r);i) const int base 1000000000; const int base_digits 9; struct Bint { vectorint a; int sign; Bint() : sign(1) { } Bint(long long v) { *this v; } Bint(const string s) { read(s); } void operator(const Bint v) { sign v.sign; a v.a; } void operator(long long v) { sign 1; if (v 0) sign -1, v -v; for (; v 0; v v / base) a.push_back(v % base); } Bint operator(const Bint v) const //Addition Operation { if (sign v.sign) { Bint res v; for (int i 0, carry 0; i lt; (int) max(a.size(), v.a.size()) || carry; i) { if (i (int) res.a.size()) res.a.push_back(0); res.a[i] carry (i lt; (int) a.size() ? a[i] : 0); carry res.a[i] gt; base; if (carry) res.a[i] - base; } return res; } return *this - (-v); } Bint operator-(const Bint amp;v) const //Subtraction Function { if (sign v.sign) { if (abs() gt; v.abs()) { Bint res *this; for (int i 0, carry 0; i lt; (int) v.a.size() || carry; i) { res.a[i] - carry (i lt; (int) v.a.size() ? v.a[i] : 0); carry res.a[i] lt; 0; if (carry) res.a[i] base; } res.trim(); return res; } return -(v - *this); } return *this (-v); } void operator*(int v) //Multiplication Function { if (v lt; 0) sign -sign, v -v; for (int i 0, carry 0; i lt; (int) a.size() || carry; i) { if (i (int) a.size()) a.push_back(0); long long cur a[i] * (long long) v carry; carry (int) (cur / base); a[i] (int) (cur % base); //asm(divl %%ecx : a(carry), d(a[i]) : A(cur), c(base)); } trim(); } Bint operator*(int v) const { Bint res *this; res * v; return res; } friend pairlt;Bint, Bintgt; divmod(const Bint amp;a1, const Bint amp;b1) { int norm base / (b1.a.back() 1); Bint a a1.abs() * norm; Bint b b1.abs() * norm; Bint q, r; q.a.resize(a.a.size()); for (int i a.a.size() - 1; i gt; 0; i--) { r * base; r a.a[i]; int s1 r.a.size() lt; b.a.size() ? 0 : r.a[b.a.size()]; int s2 r.a.size() lt; b.a.size() - 1 ? 0 : r.a[b.a.size() - 1]; int d ((long long) base * s1 s2) / b.a.back(); r - b * d; while (r lt; 0) r b, --d; q.a[i] d; } q.sign a1.sign * b1.sign; r.sign a1.sign; q.trim(); r.trim(); return make_pair(q, r / norm); } Bint operator/(const Bint amp;v) const //Division Function { return divmod(*this, v).first; } Bint operator%(const Bint amp;v) const //Modulus Operation { return divmod(*this, v).second; } void operator/(int v) //Shorthand Operation { if (v lt; 0) sign -sign, v -v; for (int i (int) a.size() - 1, rem 0; i gt; 0; --i) { long long cur a[i] rem * (long long) base; a[i] (int) (cur / v); rem (int) (cur % v); } trim(); } Bint operator/(int v) const { Bint res *this; res / v; return res; } int operator%(int v) const { if (v lt; 0) v -v; int m 0; for (int i a.size() - 1; i gt; 0; --i) m (a[i] m * (long long) base) % v; return m * sign; } void operator(const Bint amp;v) { *this *this v; } void operator-(const Bint amp;v) { *this *this - v; } void operator*(const Bint amp;v) { *this *this * v; } void operator/(const Bint amp;v) { *this *this / v; } bool operatorlt;(const Bint amp;v) const { if (sign ! v.sign) return sign lt; v.sign; if (a.size() ! v.a.size()) return a.size() * sign lt; v.a.size() * v.sign; for (int i a.size() - 1; i gt; 0; i--) if (a[i] ! v.a[i]) return a[i] * sign lt; v.a[i] * sign; return false; } bool operatorgt;(const Bint amp;v) const { return v lt; *this; } bool operatorlt;(const Bint amp;v) const { return !(v lt; *this); } bool operatorgt;(const Bint amp;v) const { return !(*this lt; v); } bool operator(const Bint amp;v) const { return !(*this lt; v) amp;amp; !(v lt; *this); } bool operator!(const Bint amp;v) const { return *this lt; v || v lt; *this; } void trim() { while (!a.empty() amp;amp; !a.back()) a.pop_back(); if (a.empty()) sign 1; } bool isZero() const { return a.empty() || (a.size() 1 amp;amp; !a[0]); } Bint operator-() const { Bint res *this; res.sign -sign; return res; } Bint abs() const { Bint res *this; res.sign * res.sign; return res; } long long longValue() const { long long res 0; for (int i a.size() - 1; i gt; 0; i--) res res * base a[i]; return res * sign; } friend Bint gcd(const Bint amp;a, const Bint amp;b) //GCD Function(Euler Algorithm) { return b.isZero() ? a : gcd(b, a % b); } friend Bint lcm(const Bint amp;a, const Bint amp;b) //Simple LCM Operation { return a / gcd(a, b) * b; } void read(const string amp;s) //Reading a Big Integer { sign 1; a.clear(); int pos 0; while (pos lt; (int) s.size() amp;amp; (s[pos] - || s[pos] )) { if (s[pos] -) sign -sign; pos; } for (int i s.size() - 1; i gt; pos; i - base_digits) { int x 0; for (int j max(pos, i - base_digits 1); j lt; i; j) x x * 10 s[j] - 0; a.push_back(x); } trim(); } friend istreamamp; operatorgt;gt;(istream amp;stream, Bint amp;v) { string s; stream gt;gt; s; v.read(s); return stream; } friend ostreamamp; operatorlt;lt;(ostream amp;stream, const Bint amp;v) { if (v.sign -1) stream lt;lt; -; stream lt;lt; (v.a.empty() ? 0 : v.a.back()); for (int i (int) v.a.size() - 2; i gt; 0; --i) stream lt;lt; setw(base_digits) lt;lt; setfill(0) lt;lt; v.a[i]; return stream; } static vectorlt;intgt; convert_base(const vectorlt;intgt; amp;a, int old_digits, int new_digits) { vectorlt;long longgt; p(max(old_digits, new_digits) 1); p[0] 1; for (int i 1; i lt; (int) p.size(); i) p[i] p[i - 1] * 10; vectorlt;intgt; res; long long cur 0; int cur_digits 0; for (int i 0; i lt; (int) a.size(); i) { cur a[i] * p[cur_digits]; cur_digits old_digits; while (cur_digits gt; new_digits) { res.push_back(int(cur % p[new_digits])); cur / p[new_digits]; cur_digits - new_digits; } } res.push_back((int) cur); while (!res.empty() amp;amp; !res.back()) res.pop_back(); return res; } typedef vectorlt;long longgt; vll; static vll karatsubaMultiply(const vll amp;a, const vll amp;b) //Multiplication using Karatsuba Algorithm { int n a.size(); vll res(n n); if (n lt; 32) { for (int i 0; i lt; n; i) for (int j 0; j lt; n; j) res[i j] a[i] * b[j]; return res; } int k n gt;gt; 1; vll a1(a.begin(), a.begin() k); vll a2(a.begin() k, a.end()); vll b1(b.begin(), b.begin() k); vll b2(b.begin() k, b.end()); vll a1b1 karatsubaMultiply(a1, b1); vll a2b2 karatsubaMultiply(a2, b2); for (int i 0; i lt; k; i) a2[i] a1[i]; for (int i 0; i lt; k; i) b2[i] b1[i]; vll r karatsubaMultiply(a2, b2); for (int i 0; i lt; (int) a1b1.size(); i) r[i] - a1b1[i]; for (int i 0; i lt; (int) a2b2.size(); i) r[i] - a2b2[i]; for (int i 0; i lt; (int) r.size(); i) res[i k] r[i]; for (int i 0; i lt; (int) a1b1.size(); i) res[i] a1b1[i]; for (int i 0; i lt; (int) a2b2.size(); i) res[i n] a2b2[i]; return res; } Bint operator*(const Bint amp;v) const { vectorlt;intgt; a6 convert_base(this-gt;a, base_digits, 6); vectorlt;intgt; b6 convert_base(v.a, base_digits, 6); vll a(a6.begin(), a6.end()); vll b(b6.begin(), b6.end()); while (a.size() lt; b.size()) a.push_back(0); while (b.size() lt; a.size()) b.push_back(0); while (a.size() amp; (a.size() - 1)) a.push_back(0), b.push_back(0); vll c karatsubaMultiply(a, b); Bint res; res.sign sign * v.sign; for (int i 0, carry 0; i lt; (int) c.size(); i) { long long cur c[i] carry; res.a.push_back((int) (cur % 1000000)); carry (int) (cur / 1000000); } res.a convert_base(res.a, 6, base_digits); res.trim(); return res; } }dp[5005][2][2],x,y; bool X[5005],Y[5005]; int main(){ // fpi(); // fpo(); #ifndef Nuj cin.tie(0)-sync_with_stdio(0); #endif int K;cinKxy; for(int i0;iK;i) X[i]x%2,Y[i]y%2,x/2,y/2; if(x!0||y!0) return cout0,0; ***dp1; for(int i0;iK;i) for(int j0;j2;j) for(int k0;k2;k) for(int l0;l2;l) for(int p0;p2;p) if((l||!p)(j^l^X[i]||!(k^p^Y[i]))){ dp[i1][(jlX[i])1][(kpY[i])1]dp[i][j][k]; } cout**dp[K]; return 0; }三、赛后总结本次模拟赛最终得分 30 分T1:10, T2:10, T3:10, T4:0与赛前估分 46 分存在一定差距主要失分点在 T4 的高精度实现和 T1、T2 的正解推导上。以下是对本次比赛的整体反思1. 比赛表现评估优点策略执行到位按照“特殊性质优先”的策略成功拿到了 T1、T2、T3 的特殊性质分数保证了基础得分。题目理解准确对四道题目的题意把握基本正确没有因误解题意而浪费时间和代码。暴力分稳拿T3 的 DFS 暴力搜索实现正确拿到了应有的 10 分暴力分。不足正解转化能力不足T1 虽然想到了可能是 DP但未能成功将“单调不降/不增序列拼接”转化为“长度为 2n 的单调不降序列计数”这一关键模型。贪心验证不充分T2 比赛时已经想到了贪心思路却因自我怀疑而放弃赛后验证该贪心确实是正解之一。高精度准备不足T4 推对了特殊性质结论2^(2k-2)但因高精度实现不熟练而直接放弃导致 16 分丢失。时间分配欠佳在 T4 的高精度调试上花费了过多时间影响了其他题目正解的思考。2. 各题得失分析T1双数组构造特殊性质n1的公式推导正确但正解的 DP 状态设计和前缀和优化未能独立完成。需要加强组合计数与 DP 模型之间的转化训练。T2染色“全白棋盘”贪心正确但扩展到一般情况时对“按列枚举、能填就填”的贪心策略缺乏信心。今后应对直觉正确的贪心多进行小数据验证而非轻易否定。T3动态规划成功将问题转化为组合数C(n-1, i-1)是否被 m 整除的判断但比赛时仅停留在暴力 DFS未进一步想到利用质因数分解维护组合数模 m 的倍数的判定方法。数论与组合计数的结合是薄弱点。T4分形图成功推出特殊性质公式但高精度模板不熟、调试时间不足导致最终得分为 0。暴露出在高精度、大数运算方面的代码实现能力和时间管理问题。3. 技术收获模型转化T1 的“单调序列拼接”转化为经典 DP 计数问题。贪心证明T2 的贪心策略需要分类讨论证明锻炼了贪心算法的证明思维。组合数模判定T3 学习了如何通过质因数分解判断组合数是否为给定数的倍数避免了直接求组合数取模的逆元问题。数位 DP 与高精度结合T4 展示了数位 DP 如何与高精度大数计算结合对复杂问题的完整解决方案有了更深理解。4. 后续训练方向加强高精度/大数模板熟练度准备一套可靠的高精度加减乘除模板并熟练应用于数位 DP、组合计数等场景。提升贪心证明与验证能力对比赛中的贪心思路要快速编写小程序对拍验证减少自我怀疑导致的丢分。深化组合计数与数论结合针对 T3 这类问题系统复习组合数模运算、Lucas 定理、质因数分解技巧。优化时间分配策略设定每道题的“止损时间”如超过 30 分钟无法推出正解先确保暴力分拿满再回头攻坚。模拟赛复盘常态化每次模拟赛后坚持撰写补题报告尤其要补全所有题目的正解思路与代码弥补知识漏洞。总结本次比赛虽然分数不高但通过补题全面理解了四道题目的正解思路暴露了在高精度、贪心验证和模型转化方面的不足。后续训练中应针对性强化这些薄弱环节同时保持对特殊性质的敏感度争取在下次比赛中实现分数突破。2026/7/15

相关新闻

从零到一:揭秘开源H5编辑器的技术架构与创作哲学

从零到一:揭秘开源H5编辑器的技术架构与创作哲学

从零到一:揭秘开源H5编辑器的技术架构与创作哲学 【免费下载链接】h5maker h5编辑器类似maka、易企秀 账号/密码:admin 项目地址: https://gitcode.com/gh_mirrors/h5/h5maker 在移动互联网内容创作领域,H5页面已成为连接品牌与用户的…

2026/7/16 4:16:26阅读更多 →
想找专业的aigeo优化公司?这里为你揭秘靠谱之选!

想找专业的aigeo优化公司?这里为你揭秘靠谱之选!

在当下,企业传统推广方式的局限性越发明显。像竞价推广成本逐年上涨,短视频营销竞争激烈,地推效率低下,而且流量高度依赖付费投放,一旦停止推广,客源就会立刻中断。而在AI大模型时代,GEO生成式搜…

2026/7/16 4:16:26阅读更多 →
C++设计模式与Qt框架融合实战:从原理到GUI应用开发

C++设计模式与Qt框架融合实战:从原理到GUI应用开发

1. 项目概述:一本将C设计模式与Qt4框架深度融合的实战指南 如果你是一名C开发者,尤其是那些在桌面应用、嵌入式图形界面或者需要跨平台部署的项目中摸爬滚打的同行,那么“设计模式”和“Qt”这两个词对你来说一定不陌生。前者是构建健壮、可…

2026/7/16 4:16:26阅读更多 →
【HarmonyOS 5 入门系列】鸿蒙 HarmonyOS 示例项目讲解

【HarmonyOS 5 入门系列】鸿蒙 HarmonyOS 示例项目讲解

前言对于刚开始学习 HarmonyOS 的开发者来说,官方 Sample(示例项目) 是最好的学习资料。很多开发者都有这样的困惑:学了 ArkTS 语法,不知道如何写完整项目会写页面,不知道如何组织工程DataPreferences、Rou…

2026/7/16 5:26:32阅读更多 →
从茄子5EPL比赛解析CSGO职业选手的决策逻辑与实战技巧

从茄子5EPL比赛解析CSGO职业选手的决策逻辑与实战技巧

如果你是一名CSGO玩家,最近一定在各大平台刷到过"茄子"这个名字。这位前职业选手转型主播,以其极具辨识度的嗓音、真实的游戏反应和过硬的技术实力,在短短时间内成为了CSGO圈的现象级人物。但问题来了:为什么同样是看直…

2026/7/16 5:26:32阅读更多 →
SpringBoot Actuator端点安全加固实战:从风险识别到配置修复

SpringBoot Actuator端点安全加固实战:从风险识别到配置修复

1. 项目概述:为什么Actuator端点会成为安全重灾区?如果你在用SpringBoot,那你大概率也接触过Actuator。这个组件简直是开发者的“瑞士军刀”,健康检查、指标监控、环境信息、线程dump,动动手指调用几个HTTP端点就能拿到…

2026/7/16 5:26:32阅读更多 →
利用正则表达式实现JDBC URL参数的安全校验与风险防护

利用正则表达式实现JDBC URL参数的安全校验与风险防护

1. JDBC URL安全校验的必要性数据库连接是Java应用中最关键也最脆弱的环节之一。去年我们团队在金融项目中就遇到过真实案例:攻击者通过精心构造的JDBC URL参数,利用autoDeserialize特性成功注入恶意代码,导致整个支付系统沦陷。事后分析发现…

2026/7/16 5:26:32阅读更多 →
【HarmonyOS 5】鸿蒙组件模板服务详解 —— 助力高效开发的利器(HarmonyOS NEXT)

【HarmonyOS 5】鸿蒙组件模板服务详解 —— 助力高效开发的利器(HarmonyOS NEXT)

面向 HarmonyOS 5(NEXT)开发者,从基础概念到项目实战,全面解析组件与模板服务,帮助开发者快速构建高质量应用。一、HarmonyOS 5 新特性概览1.1 什么是 HarmonyOS NEXT去除 AOSP原生鸿蒙ArkTSArkUIDevEco Studio1.2 Har…

2026/7/16 5:26:32阅读更多 →
基于Unity AR Foundation实现AR合影:从环境感知到高质量渲染的完整实践

基于Unity AR Foundation实现AR合影:从环境感知到高质量渲染的完整实践

1. 项目概述:为什么AR合影是AR应用的最佳切入点?最近在做一个挺有意思的AR项目,核心功能就是让用户能和虚拟角色或者场景进行合影。听起来好像挺简单,不就是把个3D模型放到摄像头画面里吗?但真做起来,你会发…

2026/7/16 5:21:32阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/15 6:42:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/15 6:12:45阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/15 10:54:00阅读更多 →
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代…

2026/7/16 0:00:38阅读更多 →
遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…

2026/7/16 0:00:38阅读更多 →
5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…

2026/7/16 0:00:38阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/15 15:50:47阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/15 8:52:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/15 14:06:23阅读更多 →