From 7b1e0f329e7e31f8051ce9fd05a4cf6642462259 Mon Sep 17 00:00:00 2001 From: xingyou wu <3050128610@qq.com> Date: Fri, 14 Mar 2025 22:39:32 +0800 Subject: [PATCH] Initial commit --- .DS_Store | Bin 0 -> 6148 bytes 14lanqiao/test1.cpp | 28 +++++++++ 14lanqiao/test2.cpp | 13 ++++ 14lanqiao/test3-1.cpp | 49 +++++++++++++++ 14lanqiao/test3-2.cpp | 26 ++++++++ 14lanqiao/test4.cpp | 50 ++++++++++++++++ 14lanqiao/test5-1.cpp | 33 +++++++++++ 14lanqiao/test5-2.cpp | 25 ++++++++ 15lanqiao/test1-1.cpp | 15 +++++ 15lanqiao/test1-2.cpp | 17 ++++++ 15lanqiao/test2.cpp | 19 ++++++ 15lanqiao/test3.cpp | 30 ++++++++++ 15lanqiao/test4.cpp | 34 +++++++++++ 15lanqiao/test5.cpp | 45 ++++++++++++++ 15lanqiao/test6.cpp | 57 ++++++++++++++++++ 15lanqiao/test7.cpp | 26 ++++++++ 15lanqiao/test8.cpp | 44 ++++++++++++++ test100.cpp | 9 +++ test99-1.cpp | 134 ++++++++++++++++++++++++++++++++++++++++++ test99-2.cpp | 44 ++++++++++++++ test99-3-1.cpp | 34 +++++++++++ test99-3-2.cpp | 31 ++++++++++ test99-3-3.cpp | 44 ++++++++++++++ test99-3-4 | Bin 0 -> 35144 bytes test99-3-4.cpp | 33 +++++++++++ test99-3-5 | Bin 0 -> 51768 bytes test99-3-5.cpp | 59 +++++++++++++++++++ test99-4-1 | Bin 0 -> 49768 bytes test99-4-1-1.cpp | 44 ++++++++++++++ test99-4-1-2.cpp | 45 ++++++++++++++ test99-4-2 | Bin 0 -> 34712 bytes test99-4-2.cpp | 37 ++++++++++++ test99-4-3 | Bin 0 -> 34840 bytes test99-4-3.cpp | 39 ++++++++++++ test99-4-4 | Bin 0 -> 34776 bytes test99-4-4.cpp | 23 ++++++++ test99-4-5 | Bin 0 -> 51688 bytes test99-4-5.cpp | 66 +++++++++++++++++++++ 38 files changed, 1153 insertions(+) create mode 100644 .DS_Store create mode 100644 14lanqiao/test1.cpp create mode 100644 14lanqiao/test2.cpp create mode 100644 14lanqiao/test3-1.cpp create mode 100644 14lanqiao/test3-2.cpp create mode 100644 14lanqiao/test4.cpp create mode 100644 14lanqiao/test5-1.cpp create mode 100644 14lanqiao/test5-2.cpp create mode 100644 15lanqiao/test1-1.cpp create mode 100644 15lanqiao/test1-2.cpp create mode 100644 15lanqiao/test2.cpp create mode 100644 15lanqiao/test3.cpp create mode 100644 15lanqiao/test4.cpp create mode 100644 15lanqiao/test5.cpp create mode 100644 15lanqiao/test6.cpp create mode 100644 15lanqiao/test7.cpp create mode 100644 15lanqiao/test8.cpp create mode 100644 test100.cpp create mode 100644 test99-1.cpp create mode 100644 test99-2.cpp create mode 100644 test99-3-1.cpp create mode 100644 test99-3-2.cpp create mode 100644 test99-3-3.cpp create mode 100755 test99-3-4 create mode 100644 test99-3-4.cpp create mode 100755 test99-3-5 create mode 100644 test99-3-5.cpp create mode 100755 test99-4-1 create mode 100644 test99-4-1-1.cpp create mode 100644 test99-4-1-2.cpp create mode 100755 test99-4-2 create mode 100644 test99-4-2.cpp create mode 100755 test99-4-3 create mode 100644 test99-4-3.cpp create mode 100755 test99-4-4 create mode 100644 test99-4-4.cpp create mode 100755 test99-4-5 create mode 100644 test99-4-5.cpp diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..020e7d6b589c6bbd36bcbc0919aeab787f86deb6 GIT binary patch literal 6148 zcmeHKu};H44E2=`saPt+z`$@TV5jSTSJjVPsKDsgX(`%9;@P%S0p{pWtKD&%=lh61a}-o@j~(d*mUCeQgVJ(t(b zlVbv$-$^^a`TeXcLMS=Ep5=1U+~n}R->aGa>f?0PNdMb$RrpH(XU}%}Pn@5LF<=ZB z16#)cYBo!+DHf!L2g Mq`?Mb;7=L&1nOH^i2wiq literal 0 HcmV?d00001 diff --git a/14lanqiao/test1.cpp b/14lanqiao/test1.cpp new file mode 100644 index 0000000..6c70da6 --- /dev/null +++ b/14lanqiao/test1.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; +const int N = 1e2 + 10; +int a[N] = { 0,5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2, +7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,1,6,3,4,6,7,0,7,8,2,7,6,8,9,5,6,5,6,1,4,0,1, +0,0,9,4,8,0,9,1,2,8,5,0,2,5,3,3 }; // 示例数组 + +int day[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; +int main(){ + int ans = 0; + for(int i = 1; i <=12; i++){ + for(int j = 1; j <= day[i]; j++){ + int date[] = {0, 2, 0, 2, 3, i/10, i%10, j/10, j%10 }; + int id = 1; + for(int i = 1; i<=100; i++){ + if(a[i] == date[id]){ + id++; + if(id>8){ + ans++; + break; + } + } + } + } + } + cout << ans << endl; + return 0; +} \ No newline at end of file diff --git a/14lanqiao/test2.cpp b/14lanqiao/test2.cpp new file mode 100644 index 0000000..3b943d9 --- /dev/null +++ b/14lanqiao/test2.cpp @@ -0,0 +1,13 @@ +#include +using namespace std; +int main(){ + double n = 23333333; + double res = 11625907.5798; + for(int a = 0; a <= n; a++){ // a为0出现的次数 + int b = n - a; // b为1出现的次数 + if(a>=b) continue; + double ans = (-1)*a*(a/n)*log2(a/n) + (-1)*b*(b/n)*log2(b/n); + if(fabs(ans - res) < 1e-4) cout << a << endl; + } + return 0; +} \ No newline at end of file diff --git a/14lanqiao/test3-1.cpp b/14lanqiao/test3-1.cpp new file mode 100644 index 0000000..fc5689e --- /dev/null +++ b/14lanqiao/test3-1.cpp @@ -0,0 +1,49 @@ +#include +using namespace std; +#define int long long +const int N = 1e4 + 10; +int a[N], b[N]; +//枚举法 +signed main(){ + int n; cin >> n; + int mxv = LLONG_MIN, miv = LLONG_MAX; + for(int i = 1; i <= n; i++){ + cin >> a[i] >> b[i]; + if(b[i] != 1) mxv = max(mxv, a[i]/(b[i] - 1)); + miv = min(miv, a[i]/(b[i] + 1)); + } + + for(int v = miv; v <= mxv; v++){ + bool flag = true; + for(int i = 1; i <= n; i++){ + if(a[i] / v != b[i]){ + flag = false; + break; + } + } + if(flag){ + cout << v << " "; + break; + } + } + for(int v = mxv; v >= miv; v--){ + bool flag = true; + for(int i = 1; i <= n; i++){ + if(a[i] / v != b[i]){ + flag = false; + break; + } + } + if(flag){ + cout << v << endl; + break; + } + } + return 0; +} +/* test samples +3 +75 3 +53 2 +59 2 +*/ \ No newline at end of file diff --git a/14lanqiao/test3-2.cpp b/14lanqiao/test3-2.cpp new file mode 100644 index 0000000..086989d --- /dev/null +++ b/14lanqiao/test3-2.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; +int main(){ + int n; cin >> n; + int mxv = INT_MIN; int miv = INT_MAX; + for(int i = 1; i <= n; i++){ + int a, b; cin >> a >> b; + miv = min(miv, a/b); + mxv = max(mxv, a/(b+1)+1); + } + cout << mxv << " " << miv << endl; + return 0; +} +/* +数学优化 +通过floor(A/V) = B,可以推出 A/V =[B,B+1) +进而得到B <= A/V < B+1,三个表达式同时被A除 +得到关于V的不等式即 A/B >= V > A/(B+1) +*/ + +/* test samples +3 +75 3 +53 2 +59 2 +*/ \ No newline at end of file diff --git a/14lanqiao/test4.cpp b/14lanqiao/test4.cpp new file mode 100644 index 0000000..f028207 --- /dev/null +++ b/14lanqiao/test4.cpp @@ -0,0 +1,50 @@ +#include +using namespace std; +const int N = 1e2 + 10; +struct node{ + int t, d, l; // 分别代表可以降落的时刻,盘旋时间,降落花费时间 +}a[N]; +bool vis[N]; +int t, n; +bool flag = false; +// lasttime: 之前完成降落的所有飞机中的最后一架飞机降落的时间 +void dfs(int dep, int lasttime){ + if(dep == n + 1){ + flag = true; + return; + } + for(int i = 1; i <= n; i++){ + if(!vis[i] && a[i].t + a[i].d >= lasttime){ + vis[i] = 1; + dfs(dep + 1, max(lasttime, a[i].t) + a[i].l); + // 遍历同级的另一个飞机的下一个深度的飞机前,需要将该飞机设置为未安排状态 + vis[i] = 0; + } + } +} +int main(){ + cin >> t; + while(t--){ + cin >> n; + for(int i = 1; i<=n; i++){ + cin >> a[i].t >> a[i].d >> a[i].l; + } + flag = false; + memset(vis, 0, sizeof(vis)); + dfs(1, 0); + if(flag) cout << "YES" << endl; + else cout << "NO" << endl; + } + return 0; +} +/* test samples +2 +3 +0 100 10 +10 10 10 +0 2 20 +3 +0 10 20 +10 10 20 +20 10 20 +*/ \ No newline at end of file diff --git a/14lanqiao/test5-1.cpp b/14lanqiao/test5-1.cpp new file mode 100644 index 0000000..08aa93b --- /dev/null +++ b/14lanqiao/test5-1.cpp @@ -0,0 +1,33 @@ +#include +using namespace std; +const int N = 1e5 + 10; +int ft[N], bk[N], dp[N]; +/* +ft[i]第i个元素的首数字、bk[i]第i个元素尾数字 +类LIS问题的DP解法-时间复杂度0(n^2) +状态 dp[i] 以第主个元素作为结尾的最长接龙数列的长度 +状态转移方程 dp[i] = max(dp[i], dp[j]+1); +*/ +int main(){ + int n; cin >> n; + string s; + for(int i = 1; i<=n; i++){ + cin >> s; + ft[i] = s.front() - '0', bk[i] = s.back() - '0', dp[i] = 1; + } + int mx = 1; + for(int i = 2; i <= n; i++){ + for(int j = 1; j < i; j++){ + if(bk[j] == ft[i]){ + dp[i] = max(dp[i], dp[j] + 1); + } + mx = max(mx, dp[i]); + } + } + cout << n - mx << endl; + return 0; +} +/* test samples 易超时 +5 +11 121 22 12 2023 +*/ \ No newline at end of file diff --git a/14lanqiao/test5-2.cpp b/14lanqiao/test5-2.cpp new file mode 100644 index 0000000..617338d --- /dev/null +++ b/14lanqiao/test5-2.cpp @@ -0,0 +1,25 @@ +#include +using namespace std; +int dp[10]; +/* +优化dp方案 +状态 dp[i] 以数字i结尾的最长接龙序列的长度 +状态转移方程 dp[bk]=max(dp[ft]+1, dp[bk]) +*/ +int main(){ + int n; cin >> n; + string s; + int mx = 1; + for(int i = 0; i < n; i++){ + cin >> s; + int ft = s.front() - '0', bk = s[s.size() - 1] - '0'; + dp[bk] = max(dp[ft] + 1, dp[bk]); + mx = max(mx, dp[bk]); + } + cout << n - mx << endl; + return 0; +} +/* test samples +5 +11 121 22 12 2023 +*/ \ No newline at end of file diff --git a/15lanqiao/test1-1.cpp b/15lanqiao/test1-1.cpp new file mode 100644 index 0000000..258e8e1 --- /dev/null +++ b/15lanqiao/test1-1.cpp @@ -0,0 +1,15 @@ +#include +using namespace std; + +int main() { + int tot = (50*49) / 2, cnt = (7*6) / 2; + cout << tot - cnt << endl; + return 0; +} + +/* +总共有50人参与会议,如果按照常规情况,即每个人与除了自己以外的所有人各握手一次 +握手总数tot=49+48+...+1=(50*49)/2 +现在有7个人没有互相握手,这7这个人本来应该握手的次数 cnt=6+5+...+1=(7*6)/2 +实际握手次数=总的握手次数tot-7人的情况cnt (tot - cnt) +*/ \ No newline at end of file diff --git a/15lanqiao/test1-2.cpp b/15lanqiao/test1-2.cpp new file mode 100644 index 0000000..8982a24 --- /dev/null +++ b/15lanqiao/test1-2.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; + +int main() { + int ans = 0; + for(int i = 1; i <=50; i++){ + for(int j = i + 1; j<=50; j++){ + if(!( (i >= 1 && i<= 7) && (j >= 1 && j <= 7) )) ans++; + // i和j不能同时满足都在[1, 7]范围内 + } + } + cout << ans << endl; + return 0; +} +/* 枚举法 + +*/ \ No newline at end of file diff --git a/15lanqiao/test2.cpp b/15lanqiao/test2.cpp new file mode 100644 index 0000000..4014a75 --- /dev/null +++ b/15lanqiao/test2.cpp @@ -0,0 +1,19 @@ +#include +using namespace std; + +int main() { + int x = 343720, y = 233333, dx = 15, dy = 17; + int p = y*dx, q = x*dy; + int g = gcd(p, q); + p /= g, q /= g; + int t = 2*p*x / dx; + double ans = t * (sqrt(15*15 + 17*17)); + printf("%.2lf\n", ans); + return 0; +} +/* +思路:针对前进的方向进行分解,分为x方向的运动和y方向的运动假设x方向走了p个来回,y反向走了q个来回, +经过了时间t,小球第一次回到原点则t*dx=2px,t*dy=2qy,结合1式/2式,得p/q=y/x*dx/dy +利用gcd对分式p,q进行约分,进而得到约分后的p,q +则时间 t = 2px/dx, 总路程 = t * sqrt(15*15 + 17*17) +*/ \ No newline at end of file diff --git a/15lanqiao/test3.cpp b/15lanqiao/test3.cpp new file mode 100644 index 0000000..fb13dde --- /dev/null +++ b/15lanqiao/test3.cpp @@ -0,0 +1,30 @@ +#include +using namespace std; +bool check(int n){ + int b = 1; //数位 + while(n){ + if(b % 2){ // 奇数位 + if(!(n % 10 % 2)) return false; + }else{ // 偶数位 + if(n % 10 % 2) return false; + } + n /= 10; + b++; + } + return true; +} + +int main() { + int n; cin >>n; + int ans = 0; + for(int i = 1; i <= n; i++){ + if(i % 10 % 2 == 0) continue; + if(check(i)) ans++; + } + cout << ans << endl; + return 0; +} +/* +一个整数如果按从低位到高位的顺序,奇数位为奇数,偶数位为偶数,则该数为好数 +24 -> 7, 2024 -> 150 +*/ \ No newline at end of file diff --git a/15lanqiao/test4.cpp b/15lanqiao/test4.cpp new file mode 100644 index 0000000..3c0d00c --- /dev/null +++ b/15lanqiao/test4.cpp @@ -0,0 +1,34 @@ +#include +using namespace std; +const int N = 2e3 + 10; +string s; int a[N]; +int main() { + int n; cin >> n >> s; + reverse(s.begin(), s.end()); + int pos = s.find("."); // 小数点位置 + s.erase(pos, 1); // 删除小数点, 方便后续计算 + int len = s.size(); + for(int i = 0; i < len; i++) a[i+1] = s[i] - '0'; +// a[1] = 4,a[2] = 1,a[3] = 3 + + //高精度*低精度模版 + for(int i = 1; i<=n; i++){ + // 顺序扫描每一位, 均乘2 + for(int j = 1; j <= len; j++) a[j] *= 2; + for(int j = 1; j <= len; j++){ + if(a[j] > 10){ + a[j+1]++; + a[j] %= 10; + if(j == len) len++; + } + } + } +// a[1] = 6,a[2] = 5,a[3] = 2,a[4] = 1 a[pos] = 5 + if(a[pos] >= 5) a[pos+1]++; + for(int i = len; i >= pos + 1; i--) cout << a[i]; + cout << endl; + return 0; +} +/* +2 3.14 +*/ \ No newline at end of file diff --git a/15lanqiao/test5.cpp b/15lanqiao/test5.cpp new file mode 100644 index 0000000..01dd4fe --- /dev/null +++ b/15lanqiao/test5.cpp @@ -0,0 +1,45 @@ +#include +using namespace std; +const int N = 1e5 + 10; +int a[N]; +vector fac[N], s[N]; + +int main() { + for(int i = 1; i <= 1e5; i++){ + for(int j = i; j <= 1e5; j += i){ + fac[j].push_back(i); + } + } + int n; cin>>n; + for(int i = 1; i<=n; i++) cin >> a[i]; + // 保证字典序最小 + sort(a+1, a+1+n); + for(int i = 1; i <=n; i++){ + for(int j = 0; j < fac[a[i]].size(); j++){ + s[fac[a[i]][j]].push_back(a[i]); + } + } + for(int i = 1e5; i>=0; i--){ + if(s[i].size() >= 3){ + cout << s[i][0] << " " << s[i][1] << " " << s[i][2] << endl; + break; + } + } + return 0; +} +/* test samples +5 +1 2 3 4 9 +*/ + +/* +排序后的宝石为 [1, 2, 3, 4, 9]。 +因数数组 fac 和宝石数组 s 的关系如下: +s[1] 包含所有宝石 [1, 2, 3, 4, 9]。 +s[2] 包含 [2, 4]。 +s[3] 包含 [3, 9]。 +s[4] 包含 [4]。 +s[9] 包含 [9]。 +最终,s[1] 中有5个宝石,满足条件。 +输出前三个宝石:1 2 3。 +*/ \ No newline at end of file diff --git a/15lanqiao/test6.cpp b/15lanqiao/test6.cpp new file mode 100644 index 0000000..8efd5a1 --- /dev/null +++ b/15lanqiao/test6.cpp @@ -0,0 +1,57 @@ +#include +using namespace std; +const int N = 20; +int a[N][N]; // 迷宫数组 +int vis[N][N]; // 标记数组 +int n, k; + // 方向数组 0 1 2 3 4 5 6 7 +int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1}; +int dy[] = { 0, 1, 1, 1, 0, -1, -1, -1}; +string res; // 结果字符串 + +void dfs(int x, int y, int pre, string s, int dep){ + if(x == n && y == n && dep == n*n){ + if(res.empty()) res = s; // 字典需最小的 + return; + } + for(int i = 0; i < 8; i++){ + int bx = x + dx[i], by = y + dy[i]; + if(bx < 1 || bx > n || by < 1 || by > n) continue; + if(vis[bx][by]) continue; + // 防止交叉搜索 + if(i == 1 && vis[x-1][y] && vis[x][y+1]) continue; + else if(i == 3 && vis[x+1][y] && vis[x][y+1]) continue; + else if(i == 5 && vis[x+1][y] && vis[x][y-1]) continue; + else if(i == 7 && vis[x-1][y] && vis[x][y-1]) continue; + // 保证路径数值为0 1 ... k-1 + if((a[bx][by] < k && a[bx][by] == pre + 1) || (pre + 1 == k && a[bx][by] == 0)){ + vis[bx][by] = 1; + dfs(bx, by, a[bx][by], s + to_string(i), dep + 1); + // 最优性剪枝 + if(!res.empty()) return; + vis[bx][by] = 0; //回溯 + } + } +} + +int main() { + cin >> n >> k; + for(int i = 1; i <= n; i++){ + for(int j = 1; j <= n; j++){ + cin >> a[i][j]; + } + } + string emp; + vis[1][1] = 1; + dfs(1, 1, 0, emp, 1); + if(res.empty()) cout << -1 << endl; + else cout << res << endl; + return 0; +} + +/* test samples +3 3 +0 2 0 +1 1 1 +2 0 2 +*/ \ No newline at end of file diff --git a/15lanqiao/test7.cpp b/15lanqiao/test7.cpp new file mode 100644 index 0000000..8454f54 --- /dev/null +++ b/15lanqiao/test7.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; +const int N = 1e5 + 10; +int main(){ + priority_queue pq; // 大根堆 + int n, p ,q; cin >> n >> p >> q; + for(int i = 1; i <= n; i++){ + int x; cin >> x; + pq.push(x); + } + while(p || q){ + int cur = pq.top(); // 最大值 + pq.pop(); + if(p){ cur = sqrt(cur); p--; } + else if(q) { cur = cur / 2; q--; } + pq.push(cur); + } + int s = 0; // 总的消耗 + while(!pq.empty()) { s += pq.top(); pq.pop(); } + cout << s << endl; + return 0; +} +/* test samples +4 1 1 +4 5 6 49 +*/ \ No newline at end of file diff --git a/15lanqiao/test8.cpp b/15lanqiao/test8.cpp new file mode 100644 index 0000000..9d1d97b --- /dev/null +++ b/15lanqiao/test8.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; +#define int long long +const int N = 1e3+10; +int a[N], s[N]; // s为前缀和数组 +multiset ms; + +signed main(){ + int n; cin>>n; + for(int i = 1; i<=n; i++){ + cin >> a[i]; + s[i] = s[i-1] + a[i]; + } + // 使用set数组去维护所有的区间和 + for(int i = 1; i<=n; i++){ + for(int j = 1; j<=n; j++){ + ms.insert(s[j] - s[i-1]); + } + } + int ans = LLONG_MAX; + + // 时间复杂度为 O(n^log2n) + for(int i = 1; i<=n; i++){ + for(int j = 1; j +using namespace std; + +int main(){ + int n; + n++; + cout << n << endl; + return 0; +} \ No newline at end of file diff --git a/test99-1.cpp b/test99-1.cpp new file mode 100644 index 0000000..46076da --- /dev/null +++ b/test99-1.cpp @@ -0,0 +1,134 @@ +#include +using namespace std; + +typedef struct LNode{ + int data; + struct LNode *next; +}LNode, *LinkList; + +bool InitList(LinkList &L){ + L = (LNode *)malloc(sizeof(LNode)); // 带头节点 + if(L == NULL) return false; + L->next = NULL; + return true; +} + +void InputList(LinkList &L){ + int x; cin>>x; + LinkList tail = L; + while(x != -99999){ // 输入 -99999 结束输入 + LNode *newNode = (LNode*)malloc(sizeof(LNode)); + newNode->data = x; newNode->next = NULL; + tail->next = newNode; + tail = newNode; + cin >> x; + } +} + +void PrintList(LinkList &L){ + LinkList p = L->next; + while(p != NULL){ + cout << p->data << ",\n"[p->next == NULL]; + p = p->next; + } +} + +LinkList p1, p2, p3, tmp; +void MergeList1(LinkList &L1, LinkList &L2, LinkList &L3){ + // 升序合并并去重 + p1 = L1->next; p2 = L2->next; + L3 = p3 = L1; + while(p1 && p2){ + if(p1->data < p2->data){ + p3->next = p1; p3 = p1; p1 = p1->next; + }else if(p2->data < p1->data){ + p3->next = p2; p3 = p2; p2 = p2->next; + }else{ + p3->next = p1; p3 = p1; p1 = p1->next; + tmp = p2->next; delete p2; p2 = tmp; + } + } + p3->next = p1?p1:p2; + delete L2; +} + +void MergeList2(LinkList &L1, LinkList &L2, LinkList &L3){ + // 降序合并 + p1 = L1->next; p2 = L2->next; + L3 = L1; + L3->next = NULL; + while(p1 || p2){ + if(!p1) { tmp = p2; p2 = p2->next; } + else if(!p2) { tmp = p1; p1 = p1->next; } + else if(p1->data <= p2->data) { tmp = p1; p1 = p1->next; } + else { tmp = p2; p2 = p2->next; } + + tmp->next = L3->next; L3->next = tmp; + } + delete L2; +} + +void MixList(LinkList &L1, LinkList &L2, LinkList &L3){ + // 两链表相交 + p1 = L1->next; p2 = L2->next; + L3 = p3 = L1; + while(p1 && p2){ + if(p1->data == p2->data){ + p3->next = p1; p3 = p1; p1 = p1->next; + tmp = p2; p2 = p2->next; delete tmp; + }else if(p1->data < p2->data){ + tmp = p1; p1 = p1->next; delete tmp; + }else{ + tmp = p2; p2 = p2->next; delete tmp; + } + } + while(p1) { tmp = p1; p1 = p1->next; delete tmp; } + while(p2) { tmp = p2; p2 = p2->next; delete tmp; } + + p3->next = NULL; + delete L2; +} + +void DiffList(LinkList &L1, LinkList &L2, int &n){ + // 两链表相差 + p1 = L1->next; p2 = L2->next; + p3 = L1; + while(p1 && p2){ + if(p1->data < p2->data){ + p3 = p1; p1 = p1->next; n++; + }else if(p1->data > p2->data){ + p2 = p2->next; + }else{ + p3->next = p1->next; + tmp = p1; p1 = p1->next; delete tmp; + } + } +} + +int main(){ + LinkList L1, L2, L3; InitList(L1); InitList(L2); InitList(L3); + InputList(L1); InputList(L2); // PrintList(L1); PrintList(L2); // 初始化并输入输出两个链表 + MergeList1(L1, L2, L3); + cout << "两链表升序合并并去重: "; PrintList(L3); + + LinkList L4, L5, L6; InitList(L4); InitList(L5); InitList(L6); + InputList(L4); InputList(L5); // PrintList(L4); PrintList(L5); // 初始化并输入输出两个链表 + MergeList2(L4, L5, L6); + cout << "两链表降序合并: "; PrintList(L6); + + LinkList L7, L8, L9; InitList(L7); InitList(L8); InitList(L9); + InputList(L7); InputList(L8); + MixList(L7, L8, L9); + cout << "两链表相交: "; PrintList(L9); + + LinkList L10, L11; InitList(L10); InitList(L11); + InputList(L10); InputList(L11); int n = 0; + DiffList(L10, L11, n); + cout << "两链表相差: "; PrintList(L10); + cout << "元素个数位: " << n << endl; + return 0; +} +/* test samples +1 3 5 7 9 13 15 -99999 +2 4 6 8 10 11 13 14 15 -99999 +*/ \ No newline at end of file diff --git a/test99-2.cpp b/test99-2.cpp new file mode 100644 index 0000000..ecc4855 --- /dev/null +++ b/test99-2.cpp @@ -0,0 +1,44 @@ +// 主元素寻找 +#include +#include + +using namespace std; + +int findMajorityElement(const vector& nums) { + int candidate = -1; + int count = 0; + + // 第一次遍历:找出候选主元素 + for (int num : nums) { + if (count == 0) { + candidate = num; + } + count += (num == candidate) ? 1 : -1; + } + + // 第二次遍历:验证候选主元素 + count = 0; + for (int num : nums) { + if (num == candidate) { + count++; + } + } + + // 如果候选元素出现次数超过数组长度的一半,则为所求主元素 + if (count > nums.size() / 2) { + return candidate; + } else { + return -1; + } +} + +int main() { + vector nums = {0, 5, 3, 5, 5, 7, 5, 5}; + int result = findMajorityElement(nums); + if (result != -1) { + cout << "主元素是: " << result << endl; + } else { + cout << "没有主元素" << endl; + } + return 0; +} \ No newline at end of file diff --git a/test99-3-1.cpp b/test99-3-1.cpp new file mode 100644 index 0000000..26cdea1 --- /dev/null +++ b/test99-3-1.cpp @@ -0,0 +1,34 @@ +#include +using namespace std; + +vector> results; + +void backtrack(vector& current, vector& used, int n){ + if(current.size() == n){ + results.push_back(current); + return; + } + for(int i = 1; i <= n; i++){ + if(!used[i]){ + current.push_back(i); + used[i] = true; + backtrack(current, used, n); + current.pop_back(); + used[i] = false; + } + } +} + +int main(){ + int n; cin >> n; + vector current; + vector used(n+1, false); + backtrack(current, used, n); + for(const auto& perm:results){ + for(int num:perm){ + cout << num << " "; + } + cout << endl; + } + return 0; +} \ No newline at end of file diff --git a/test99-3-2.cpp b/test99-3-2.cpp new file mode 100644 index 0000000..1424374 --- /dev/null +++ b/test99-3-2.cpp @@ -0,0 +1,31 @@ +#include +using namespace std; + +const int N = 1e2 + 10; // 定义最大数组大小 +int a[N]; // 存储排列结果 +bool vis[N]; // 标记数字是否被访问过 +int n; // 排列的大小 + +// 回溯函数,dep表示当前处理到第几个数字 +void dfs(int dep) { + if (dep == n + 1) { // 如果已经处理完所有数字 + for (int i = 1; i <= n; i++) { // 输出排列 + cout << a[i] << " \n"[i==n]; + } + return; + } + + for (int i = 1; i <= n; i++) { // 尝试将1到n的每个数字放入当前位置 + if (vis[i]) continue; // 如果该数字已经被使用,跳过 + vis[i] = true; // 标记该数字为已使用 + a[dep] = i; // 将数字放入当前位置 + dfs(dep + 1); // 递归处理下一个位置 + vis[i] = false; // 回溯,恢复状态 + } +} + +int main() { + cin >> n; // 输入排列的大小 + dfs(1); // 从第一个位置开始递归 + return 0; +} \ No newline at end of file diff --git a/test99-3-3.cpp b/test99-3-3.cpp new file mode 100644 index 0000000..8a50380 --- /dev/null +++ b/test99-3-3.cpp @@ -0,0 +1,44 @@ +// lanqiao1508 N皇后问题 +#include +using namespace std; +const int N = 15; +int n, ans; +int vis[N][N]; + +void dfs(int dep){ + if(dep == n + 1){ + ans++; + return; + } + for(int i = 1; i <= n; i++){ // 为什么下面只标记同一行,因为每次搜寻时只会在同一行(深度)寻找一个皇后 + if(vis[dep][i]) continue; // 所以只需要排除某行某个元素的同一列即可 + // 修改状态 + for(int _i = 1; _i <= n; _i++) vis[_i][i]++; // 标记同一列 + // 表壳 X 形模版 + for(int _i = dep, _j = i; _i >= 1 && _j >= 1; _i--, _j--) vis[_i][_j]++; // 标记左上对角线 + for(int _i = dep, _j = i; _i <= n && _j >= 1; _i++, _j--) vis[_i][_j]++; // 标记右上对角线 + for(int _i = dep, _j = i; _i >= 1 && _j <= n; _i--, _j++) vis[_i][_j]++; // 标记左下对角线 + for(int _i = dep, _j = i; _i <= n && _j <= n; _i++, _j++) vis[_i][_j]++; // 标记右下对角线 + + // 搜查下一深度 + dfs(dep + 1); + + // 恢复现场 + for(int _i = 1; _i <= n; _i++) vis[_i][i]--; + for(int _i = dep, _j = i; _i >= 1 && _j >= 1; _i--, _j--) vis[_i][_j]--; + for(int _i = dep, _j = i; _i <= n && _j >= 1; _i++, _j--) vis[_i][_j]--; + for(int _i = dep, _j = i; _i >= 1 && _j <= n; _i--, _j++) vis[_i][_j]--; + for(int _i = dep, _j = i; _i <= n && _j <= n; _i++, _j++) vis[_i][_j]--; + } +} + +int main(){ + ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); + cin >> n; + dfs(1); + cout << ans << '\n'; + return 0; +} +/* test samples +5 +*/ \ No newline at end of file diff --git a/test99-3-4 b/test99-3-4 new file mode 100755 index 0000000000000000000000000000000000000000..256c9ed723f09e841488e8d48daca42e1150c77d GIT binary patch literal 35144 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 HcS`&ZmwlK7 literal 0 HcmV?d00001 diff --git a/test99-3-4.cpp b/test99-3-4.cpp new file mode 100644 index 0000000..9319e15 --- /dev/null +++ b/test99-3-4.cpp @@ -0,0 +1,33 @@ +// lanqiao182 小朋友崇拜圈 +#include +using namespace std; +const int N = 1e5 + 10; +int n, a[N], dfn[N], idx, mindfn; + +int dfs(int x){ + dfn[x] = ++idx; + if(dfn[a[x]]){ + if(dfn[a[x]] >= mindfn) return dfn[x] - dfn[a[x]] + 1; + return 0; + } + return dfs(a[x]); +} + +int main(){ + ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); + cin >> n; + for(int i = 1; i <= n; i++) cin >> a[i]; + int ans = 0; + for(int i = 1; i <= n; i++){ + if(!dfn[i]){ + mindfn = idx + 1; + ans = max(ans, dfs(i)); + } + } + cout << ans << endl; + return 0; +} +/* test samples +9 +3 4 2 5 3 8 4 6 9 +*/ \ No newline at end of file diff --git a/test99-3-5 b/test99-3-5 new file mode 100755 index 0000000000000000000000000000000000000000..8394495cf53a13842258f12a8beac7fb9b655eb0 GIT binary patch literal 51768 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 literal 0 HcmV?d00001 diff --git a/test99-3-5.cpp b/test99-3-5.cpp new file mode 100644 index 0000000..a4b9a58 --- /dev/null +++ b/test99-3-5.cpp @@ -0,0 +1,59 @@ +// lanqiao178 全球变暖 +#include +using namespace std; +const int N = 1e3 + 10; +char mp[N][N]; +int n, scc, col[N][N]; +bool vis[N*N]; +// 移动向量 +int dx[] = {0, 0, 1, -1}; +int dy[] = {1, -1, 0, 0}; + +void dfs(int x, int y){ + col[x][y] = scc; + for(int i = 0; i < 4; i++){ + int nx = x + dx[i], ny = y + dy[i]; + if( col[nx][ny] || mp[nx][ny] == '.') continue; // 不需要判断nx, ny是否在地图里面,因为地图边缘都是海洋 + dfs(nx ,ny); + } +} + +int main(){ + ios::sync_with_stdio, cin.tie(0), cout.tie(0); + cin >> n; + for(int i = 1; i <= n; i++) cin >> mp[i] + 1; + for(int i = 1; i <= n; i++){ + for(int j = 1; j <= n; j++){ + if(col[i][j] || mp[i][j] == '.') continue; + scc++; // scc表示当前颜色编号 + dfs(i, j); + } + } + int ans = 0; + for(int i = 1; i <= n; i++){ + for(int j = 1; j <= n; j++){ + if(mp[i][j] == '.') continue; + bool tag = true; + for(int k = 0; k < 4; k++){ + int x = i + dx[k], y = j + dy[k]; + if(mp[x][y] == '.') tag = false; + } + if(tag){ + if(!vis[col[i][j]]) ans++; + vis[col[i][j]] = true; + } + } + } + cout << scc - ans << '\n'; + return 0; +} +/* test samples +7 +....... +.##.... +.##.... +....##. +..####. +...###. +....... +*/ \ No newline at end of file diff --git a/test99-4-1 b/test99-4-1 new file mode 100755 index 0000000000000000000000000000000000000000..ead04f4d95b7557f35671078b8f8eee59d6353d4 GIT binary patch literal 49768 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 X_{S5<|7UOH literal 0 HcmV?d00001 diff --git a/test99-4-1-1.cpp b/test99-4-1-1.cpp new file mode 100644 index 0000000..9941ced --- /dev/null +++ b/test99-4-1-1.cpp @@ -0,0 +1,44 @@ +// lanqiao2942 数字王国之军训排队 +#include +using namespace std; +const int N = 15; +int a[N], n; +vector v[N]; + +bool dfs(int cnt, int dep){ + if(dep == n+1){ + // 检查当前方案的合法性 + for(int i = 1; i <= cnt; i++){ + for(int j = 0; j < v[i].size(); j++){ + for(int k = j+1; k < v[i].size(); k++){ + if(v[i][k] % v[i][j] == 0) return false; + } + } + } + return true; + } + // 枚举每个人所属的队伍 + for(int i = 1; i <= cnt; i++){ + v[i].push_back(a[dep]); + if(dfs(cnt, dep + 1)) return true; + // 恢复现场 + v[i].pop_back(); + } + return false; +} +int main(){ + cin >> n; + for(int i = 1; i <= n; i++) cin >> a[i]; + sort(a+1, a+1+n); + for(int i = 1; i <= n; i++){ + if(dfs(i, 1)){ + cout << i << '\n'; + break; + } + } + return 0; +} +/* test samples +4 +2 3 4 4 +*/ \ No newline at end of file diff --git a/test99-4-1-2.cpp b/test99-4-1-2.cpp new file mode 100644 index 0000000..9683e58 --- /dev/null +++ b/test99-4-1-2.cpp @@ -0,0 +1,45 @@ +// lanqiao2942 数字王国之军训排队 +#include +using namespace std; +const int N = 15; +int a[N], n; +vector v[N]; + +// 剪枝 +bool dfs(int cnt, int dep){ + if(dep == n+1){ + return true; + } + // 枚举每个人所属的队伍 + for(int i = 1; i <= cnt; i++){ + bool tag = true; + for(const auto &j:v[i]){ + if(a[dep] % j == 0){ + tag = false; + break; + } + } + if(!tag) continue; + v[i].push_back(a[dep]); + if(dfs(cnt, dep + 1)) return true; + // 恢复现场 + v[i].pop_back(); + } + return false; +} +int main(){ + cin >> n; + for(int i = 1; i <= n; i++) cin >> a[i]; + sort(a+1, a+1+n); + for(int i = 1; i <= n; i++){ + if(dfs(i, 1)){ + cout << i << '\n'; + break; + } + } + return 0; +} +/* test samples +4 +2 3 4 4 +*/ \ No newline at end of file diff --git a/test99-4-2 b/test99-4-2 new file mode 100755 index 0000000000000000000000000000000000000000..4d018d6c785bb6eceed9eeeec879ed1f60690c9f GIT binary patch literal 34712 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 S&c6;``22~D8_u6Cp#K5s4FaVA literal 0 HcmV?d00001 diff --git a/test99-4-2.cpp b/test99-4-2.cpp new file mode 100644 index 0000000..ab598f3 --- /dev/null +++ b/test99-4-2.cpp @@ -0,0 +1,37 @@ +// 蓝桥 3008 特殊的三角形 +#include +using namespace std; +const int N = 1e6+9; +int cnt[N], prefix[N]; + +void dfs(int dep, int st, int mul, int sum){ + if(mul > 1e6) return; + if(dep == 4){ + cnt[mul]++; + return; + } + int up = pow(1e6 / mul, 1.0/(4-dep)) + 3; + for(int i = st + 1; i < (dep == 3?sum:up); i++){ + dfs(dep+1, i, mul * i, sum + i); + } +} + +int main(){ + dfs(1, 0, 1, 0); + for(int i = 1; i <= 1e6; i++){ + prefix[i] = prefix[i-1] + cnt[i]; + } + int q; cin >> q; + while(q--){ + int l, r; cin >> l >> r; + cout << prefix[r] - prefix[l-1] << '\n'; + } + return 0; +} +/* test samples +4 +1 10 +30 50 +60 200 +200 400 +*/ \ No newline at end of file diff --git a/test99-4-3 b/test99-4-3 new file mode 100755 index 0000000000000000000000000000000000000000..d5c80c05f2b20ca05af23c2729c562ec13b42b30 GIT binary patch literal 34840 zcmeI5e{2-T702g(@Y^INxPjnuK2VdkVEo(2lq5a>xPXOY9NVf8Q8S$H*7k<;oqM;2 z1H0j@BqULjwocuKR)w4ik_m#=ia^CtLrp7HO{*%{*GU@65W?KHh&@58w5#5l{*4DUYz-^|# z6P7=>HJ|i!f45uxb|qyn8i`+BaHhXgmcKcc0qN=fY(I7_rPeN6V}TA$^^r-G!5{ccH0-#l-FGlDQha5D`oZi`X+_SXKgCfX340@CkeeK8zN;}^y(^a?5_cH z&ElIH7q+aJp+?Ln#q|zE#g#UYwBxcfmNtf_9hc2e%9i-m-Em`o7Ottzpk?+`K07+1 z5qn~0eD0*OsVl!4pB)R?Wcs`Meb&|1uk+W`+8cEwOU?C>6-v^4iiI;(O@7jSm0dO5ib~Mug*YHWkQddae2T2a z?q#UV^^uP91+0(!?7Q1kCm-})S`Uqx+?UX5W{ARQr%~7*?a*3c+E!C(3kJ>Ls1A0; zVp_x?J#K`8%a<3dEI`nDi@A=9G=I)eC4SBvSJ#F~P21vz)=^MpnP9dMpGACL)D({| z91VoDnCuJ~?NH4^#Sj`#?!@nqNNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOyK{Fzc-;a0yV*iLso*wT$rnm=1 z-&-zm0CU0CH`WQiZ$qc|JHUF>Ew+c8kiu^%R5t3qrP3u0RbTRO%#Bo_L{a7wSg(vfV$@#cQYC9Q|{ zBrzPFF_mdAm=FAI>WGk4{VsVO}5g;rJbLi}mzAuX1?Y%AvBogj|ewt3K?zp=>AK z>&!cCwx_4HXQ#DqPiuS9+Dp^gcd2$e&MUvT(;*zHh#Uk&#kIXrI1(O5b`}VsfFGT) z6#4&}FiQf#n*|>M&W{%Dp1x_cToXF|=Q-k0qzf`((ONfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60VZ(M1iY|lfFvNZ zA@-F9XbN@ipIYi~Vyl+b_Te@FpWUPE#&Lnb_#(7%If0`E(hq$<>eHxkL4k9lLpZnK z4N`8bZ_;CNf1|G2(Qw>vHH`{A8ka4BxK>sh(T(b2{}weTW1z+wXfjHJdW5E+)uBgf zb${c!X4zCi|5SHbFxq9PW;kBkWE2+%+XFFa!~(hzuMPVBjp!@IEA^m^#*LU3=%@`g zOMg?j48lwX69E}8w1f^PozbmWkQ8mSbeA}|MY!DWbz^O%q1L#LB4%ALj$6#T6`UKz z{El|1CA46dp~-fQ{NT>TSNWYJCT;_1f((kwQGnU?K>3^{F zBbNTArC+r4vzERH?<9YJwDc-VKWFK2OFwVvgQU}?5lIyfRBtNE=B5S3A;Z>_-nJg^`c6JiOy5f4O z>YI!T32P&uhf9kjTpL=Oh98Qkq#um9)Z?-%64%=zTB!D6zyGFfIzEBTHf4ifs1igJ zmoZwW+=8F6a0BT z+7o*D`KL;DO{*Kq{cBzQ< +using namespace std; +const int N = 1e5+9; +int n, cnt[N], prefix[N]; + +void dfs(int dep, int st, int mul, int sum){ + // 剪枝1 + if(mul > 1e5) return; + if(dep == n + 1){ + cnt[mul]++; + return; + } + // 剪枝2 + int up = pow(1e5 / mul, 1.0/(n - dep + 1)) + 3; + for(int i = st + 1; i < (dep == n?min(sum, up):up); i++){ + dfs(dep+1, i, mul * i, sum + i); + } +} + +int main(){ + int q; cin >> q >> n; + dfs(1, 0, 1, 0); + for(int i = 1; i <= 1e5; i++){ + prefix[i] = prefix[i-1] + cnt[i]; + } + while(q--){ + int l, r; cin >> l >> r; + cout << prefix[r] - prefix[l-1] << '\n'; + } + return 0; +} +/* test samples +4 3 +1 10 +30 50 +60 200 +200 400 +*/ \ No newline at end of file diff --git a/test99-4-4 b/test99-4-4 new file mode 100755 index 0000000000000000000000000000000000000000..484766daa1d16a83241cd51722acb6c887eb634e GIT binary patch literal 34776 zcmeI5e{fXA9l-b99S}8!6rv(RbD>kErTKB>U_y=Z0y#-EO=2#8WHP1eqwIWQwnIaT5?evFfwZsmiGo>?D{86V=CeYTxsMC^|l4Lm2?|0w6 z4}j`NyHE|!=nLxFR{>}WA&Oqua^-)+T12AEJ!jh7|k0Yi~E*Q2`0W38=*W7iT(Ujtsqt=>c01!d7>gRS6V8k`BIDt@VM5($6+iKpbFGcH#sd+}s?LlzA>(D) z{4(O*z*t*qU|iQHK{&6hXsqDt>uUYh>Z)>6K`v58j$=f@ZgN35-xQmj<(1>rLtBy5 z^m)RTWhi#Sah(OR#${U}PuSzKS1hFtiuSndHQ~I)nB5&$jwf-Y2LmnBj_VnT#G-b? z%<*LwtVz zs3?`X`mlBWk;fvCAAx=wHrozefD!fsv)ANCD5K!s{u0RbAXiE%_>2BB8svcP2Eo}E zcNp>Fu-;M}>JEoM$Ao?3IPTbg&-w@(w!R7{0Kp4X)R#~viUh4Wf z=&AiJhbds3k-MF9_)z6wWx`@ zVTOV$Ruru+fc8sq#1~PlIO=DO1Ae!I;JQ8bFk@Mee@*JR4>2tT!Fsh1{)eo^M>8cNKm>>Y z5g-CYfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y z5g-CYfCvx)B0vO)01+SpM1Tko0U|&IhyW4zf)YsfymTn(Wc_1)<;J4{TKUBR5TtKEqMRnzuJoD7a0<`6;LodRZXY7kCJ6x|D zELfsW!X3=raQ(0$+4D!)$5GLTh|5?%+)3R%GCe&A_b2<&27dh_ey%!s6V&Cqoo^?5 zUP<%)5Aa%@f5Nm%8vi;;y;7 z=ls~^dJBrD-h2Daw`3TGwYT}X=$G*QR;LFt!gdBJ5|G43=!9JlRfHOo!F8bQiUh&!*4i+i(>qc_^| z4nF4A9qZhLb&WVTfw9njoyb|j%IKE}5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx) zB0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx) zB0vO)01+SpM1Tko0U|&IhyW3|RswEts0Zl+!Ebh3Zvj97l6CLjD&se??Ig-7yau4! z7RxUQ4+ta|gWz}M8$sZ^%*u-(e+Jtb_@;KV!W^B@1Lw`Pem!pZ8g#213md-rdm8*P zKljaAx~!sErpFB45->DxbyPRkdwiXrSWzh}{AOuTk75(Q=?%s@Oj*>Tp>TE3Z+bkz zwm_Vl@qlg`)j^-H0c@oZUk~z_VaByUq`HwemT;ecH3wfF>mqGj>(YW9rpDVe{C+pfak0nXfdwZU>4El~EeN%0^|Mm1lKO{Iuao+JrM_M2=cWEz zsgFwi1F4TmeF;nn`}UZ3?27zYI{9H-Xw4=1lkgs&~tye|vdH)epXL@M`sAmnL3&dF%cU zem%bDAD#JaKWjSk>U}4Re;%K@aN(}sZ~M;njpzK&KlJY(eske-kDuImL+?QOSMOe| zy?(Iog~#uF_T;IbeE(|kKX1KrH0Onl$GlU?<*$`?pI`ilZ@m2I&~2?>Y5wRh8 +using namespace std; +using ll = long long; +const ll p = 1e9+7; +const int inf = 1e9, N = 1e5+3; +ll dp[N]; +ll f(int n){ + if( n <= 2) return 1; + if(dp[n] != -1) return dp[n]; + + return dp[n] = (f(n -1 ) + f(n - 2)) % p; +} + +int main(){ + memset(dp, -1, sizeof dp); + int n; cin >> n; + cout << f(n) << endl; + return 0; +} +/* test samples 976496506 +5000 +*/ \ No newline at end of file diff --git a/test99-4-5 b/test99-4-5 new file mode 100755 index 0000000000000000000000000000000000000000..b85776446085331235937b52b122c6aab5d9828b GIT binary patch literal 51688 zcmeI4e{fXQ701upU4AGCE23C_C9$+9k^CS*uu{7LQivijNlIfnoy%r-Lsqi8arZ@o zP4!IO_ivxPen|G&5pNE z$Mfm&tY^l%OxxW`sZb)G8caAlUZ;-7?~M!VUZ?qqPsB@^$!L6y?#+(Zt>cZ+{j6uk z%UmlDQ7Y1)>XX4(#Bs=u*Q4X*>P^CWW<1Q(pr^7c-Y452N-Zv{E>nwEEU$8QOF(Z@ z)ON|LIVKBF$T8#oNc-b7+5slS;Oo_ggHMh`VF6*Ehp* zVm(``^Toi-J&_%6@cdX-vHZsJ#TCxmBwb%Q-DQB>+C${XTAgVJzf4la37?S%iYg#qnAvFCW7_o?*m+DNvE8b~)q{z+l2M8HZCze< ztZ)5+pY?gEtv!d*yQWZj_asW&{ymQWt{lfd&y9OR+ow48ppJW?K@+>C(+O&w+O}(w zmEMzMrFT!U(xGozN4~qkyQ7Xgn-}(OJX%J^W@-s`=J==>7gws!$_EU3Mm;zgmv$!n z8+jZoq;xlGd%Z+$y9%u|$L2M|Hl{sa=Mu>1!@BLhnaFo$Al;rHNI%ry{}Upr*RNE z6Bv5H-ko=sGp{}0>a6$UuEX*UpV1Zkep~W7&z0%+0hVXTv%}c~d0;%;ym@VI-l1XS z-E-k*m-jb@oA)r@Z)ToX4I|I?&+z@?eND{C_5P{7Fpwr6UEGfEhub-0>DJ?K^bh-6 z%sG!e*0=t5d!2LVxAwW?NpC;0aD4lF23Zr_eS0_2R^C^Jea_*#8XGu?yNz34_tGP_ z9cNpQ*YgN2Cl1=MC)pNteY<#%I=;A*H#n}_8K*LBJ&vt5({{qKea((%Rr2|WJ6t$x z(8f7=G1`0#uId`DKs6oc0)-1IFmH`1pVNt8F`S^upI}BQK7_=L_bX)#LTf+H}f3*X;Af z!udjkUyi_a@ZsM8v{zr(Hn2W_;3VQ~EiaE=`YY>3xEqXQ=|MIZ06zV%NI@qHKHf@||*tltwjNuHczc6($-`?8GoLyvjB&*Z0&pVJ_Y~D#>V>ZurOIlt-BX;X9zM zz5R9>xVY%^!8*?GTg??wDXPVgZauDrySX^yiXIrbbA;WzXqvAPeXst_nSlK^K>U49 z{6`ITLUH_ZAMow;x_<5G%k&Bjzk zm04UIY6vEknG8nFR7I$~yb`t&#EynkB4s8c!B|D8T9sGLRV!}{otq=OsZdK$1{O$RHnCmIu#PJjvTci(2T0b+pn)owoT2HhWqqxQ^ENsLQrJil>)O zw7_exD(!kk)Io{vFnRM4ejSr1dVXZ_)Z8t#8-*vs!;a>(6Q3z%n`B z^ID&)^*?C6Uh99<`h8k|LF)&#{-W03XC0e7*K*bmmBwSv-g%CGk=9$a&U=2m;m6bI zznb+6iDta@Wjp^O))|cD^p|Sgul4z?WBh!rFVOk|tp~Io(E1{+U#<18YW+&BSFn!t zHX#ryTA}-ASdLz)^&+jW(t4@ZYoWuBUF}kjXQsX}OW&5I@6OU6%hKP>(x*AW8M9sT zv-GL3PJ`q@u7G?VG6Uk;r=y(%$%SN(feCgT0Pc5%ru$_nb@~^j!cC;YEs%Aj>QUFD zZXmT5-!A_1XQJ>wg`O08{$CF$rc|s{$_$z~4x>10qrt}L9ncbS6^w^fID#XxIb`ca zd;b`C!493T81%)yFMD#>}P+wh|?*KSrU zYb-8@6uG5*m=41k=f*7J8MMRlsCW}gSgoI-8u^MIU^p9LcIoW7)Ozsg-edmz=GCbWrZg^n zXyfA}mflaNzpP0-{Z4(C@6U%1ul1~`8PUIC--bKxdilWS zrJJsP_)Pt?`kN1V{&Dz?FYVtSKl*mlL&vuq*}lXxiUJ+SbM~!SP+IV~H_^9h-sSTT zeLYa+TlHr1$Zd&jv5vc6dfTcWwPND_GsQpO{vW;f(Gz?2S3lf+P2GmWCr)|2e?9v5 z{sTK+e!i*py}dh@+<(6D&*cAlSN~hF0`J5J=M}&H>)L5cewf;MOYB#_zxU=}JlAXX I9y&(<1uqUU6aWAK literal 0 HcmV?d00001 diff --git a/test99-4-5.cpp b/test99-4-5.cpp new file mode 100644 index 0000000..2d8e897 --- /dev/null +++ b/test99-4-5.cpp @@ -0,0 +1,66 @@ +#include +using namespace std; +using ll = long long; +const ll p = 1e9 + 7; +const int inf = 1e9, N = 1e3 + 3; + +int n, m, k, sx, sy, fx, fy, h[N][N]; +int dx[] = {0, 0, 1, -1}; +int dy[] = {1, -1, 0, 0}; + +int dp[N][N][2]; + +bool inmp(int x, int y){ + return x >= 1 && x <= n && y >= 1 && y <= m; +} +// 返回值表示能否到达终点(fx, fy), t表示当前使用的喷气背包的次数 +bool dfs(int x, int y, int t){ + if(x == fx && y == fy) return true; + + if(dp[x][y][t] != -1) return dp[x][y][t]; + + for(int i = 0; i < 4; i++){ + int nx = x + dx[i], ny = y + dy[i]; + if(!inmp(nx, ny)) continue; + if(!t){ // 没用过背包 + // 不用 + if(h[x][y] > h[nx][ny] && dfs(nx, ny, 0)) return dp[x][y][t] = true; + // 用 + if(h[x][y] + k > h[nx][ny] && dfs(nx, ny, 1)) return dp[x][y][t] = true; + }else{ // 已经用过一次背包了 + // 不用 + if(h[x][y] > h[nx][ny] && dfs(nx, ny, 1)) return dp[x][y][t] = true; + } + } + return dp[x][y][t] = false; +} +int main(){ + memset(dp, -1, sizeof dp); + cin >> n >> m >> k; + cin >> sx >> sy >> fx >> fy; + for(int i = 1; i <= n; i++){ + for(int j = 1; j <= m; j++){ + cin >> h[i][j]; + } + } + cout << (dfs(sx, sy, 0)?"Yes":"No") << '\n'; + return 0; +} +/* test samples 1 -> YES +5 5 30 +1 1 5 5 +3 20 13 12 11 +19 17 33 72 10 +12 23 12 23 9 +21 43 23 12 2 +21 34 23 12 1 +*/ +/* test samples 1 -> NO +5 5 10 +1 1 5 5 +3 2 13 12 11 +1 17 33 72 10 +12 23 12 23 9 +21 43 23 12 2 +21 34 23 12 1 +*/ \ No newline at end of file