T1 | T2 | T3 | T4 |
---|---|---|---|
\(\color{#52C41A} 普及+/提高\) | \(\color{#3498DB} 提高+/省选-\) | \(\color{#9D3DCF} 省选/NOI-\) | \(\color{#0E1D69} NOI/NOI+\) |
参赛网址:https://oj.33dai.cn/d/TYOI/contest/689ad798c5d9c2f14c20b17f
T2,T4未完成搭建
T1 寄希地【NOIP2025模拟赛T1】
题目传送门
题目难度:\(\color{#52C41A} 普及+/提高\)
算法标签:搜索,搜索与剪枝
~首先说 《我将 100 AC 改为 0 RE 这件事》!~
:::info[来源]
来源:2024ICPC亚洲区域赛昆明站G
cf链接:https://codeforces.com/gym/105588/problem/G
2024ICPC亚洲区域赛昆明站G题面:https://codeforces.com/gym/105588/attachments/download/28814/2-statement-chinese.pdf
2024ICPC亚洲区域赛昆明站G题解:https://codeforces.com/gym/105588/attachments/download/28803/tutorial.pdf
:::
思路
由于具有明显提示性,本题没有大样例。
首先考虑打表,通过 \(\text {Dp}\) 或搜索。
然后我们发现答案在 \(17\) 以内,搜索时间复杂度 \(O(2^{17})\) ,结案。
复杂度的证明
标准题解证明详细过程
设两数分别为 \(x\),\(y\)。
-
情况1:\(x\) 和 \(y\) 奇偶性不同,
\(\because\) \(x\) 和 \(y\) 奇偶性不同.
\(\therefore\) \(\gcd(x,y) \equiv 1 \pmod{2}\).
设 \(x \equiv 1 \pmod{2}\).
则如果使 \(x-\gcd(x,y)\).
那么 \(x\) 和 \(y\) 在二进制下末尾都为 \(0\),即 \(x \equiv y \equiv 0 \pmod{2}\),我们可以视为 同时删除 \(x\) 和 \(y\) 的末尾.
-
情况2:\(x\) 和 \(y\) 奇偶性相同,
\(\because\) \(x\) 和 \(y\) 奇偶性相同.
\(\therefore\) \(\gcd(x,y) \equiv 0 \pmod{2}\).
那么 \(x\) 和 \(y\) 在二进制下末尾都为 \(0\),即 \(x \equiv y \equiv 0 \pmod{2}\),同时删除 \(x\) 和 \(y\) 的末尾对答案相当于 \(+2\).
所以答案最大为 \(2 \times log_2 a+1+1\).
AC Code
std:2ms
#include <bits/stdc++.h>
#define int long long
using namespace std;int T;
int n,m;
struct node{int n,m,dis;};
queue<node> Q;int bfs(){while (Q.size()>0) Q.pop();Q.push({n,m,0});while (Q.size()>0){node t=Q.front();Q.pop();int x=t.n,y=t.m;if (x==0&&y==0) return t.dis;int gcd=__gcd(x,y);if (x==0) gcd=y;if (y==0) gcd=x;Q.push({x-gcd,y,t.dis+1});Q.push({x,y-gcd,t.dis+1});}
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cin>>T;while (T--){cin>>n>>m;cout<<bfs()<<"\n";}return 0;
}
T2 后缀的前缀之和【NOIP2025模拟赛T2】
题目传送门
题目难度:\(\color{#3498DB} 提高+/省选-\)
算法标签:字符串,Trie树,后缀数据结构,数据结构,Hashing,其他,二分查找,分治
T3 大金币【NOIP2025模拟赛T3】
题目传送门
题目难度:\(\color{#9D3DCF} 省选/NOI-\)
算法标签:模拟,递推,其他,二分查找,数学,分块
:::info[来源]
来源:2024ICPC亚洲区域赛昆明站C
cf链接:https://codeforces.com/gym/105588/problem/C
2024ICPC亚洲区域赛昆明站题面:https://codeforces.com/gym/105588/attachments/download/28814/2-statement-chinese.pdf
2024ICPC亚洲区域赛昆明站题解:https://codeforces.com/gym/105588/attachments/download/28803/tutorial.pdf
:::
思路
https://oj.33dai.cn/d/TYOI/p/N0740/solution
考虑第 \(i\) 轮淘汰的第一个人,\(a_i=\lceil \frac{a_{i-1}\times k}{k-1} \rceil\)。
可以通过打表得知,为什么我没发现。
直接暴力太慢了,时间复杂度 \(O(n)\)。
\(a_i=\lceil \frac{a_{i-1}\times k}{k-1} \rceil=a_{i-1}+\lceil \frac{a_{i-1}}{k-1} \rceil\)
所以可以每次考虑增量 \(c=\lceil \frac{a_{i-1}}{k-1} \rceil\)。
二分即可。
AC Code
#include <bits/stdc++.h>
#define int long long
using namespace std;const int maxn=1e7+5;
int T;
int n,k;
int dp[maxn];signed main(){ios::sync_with_stdio(false);cin.tie(0);cin>>T;while (T--){cin>>n>>k;dp[1]=1;int x=1,num=0,d=0;while (1){d=(x+k-2)/(k-1);int l=0,r=(n-x+d)/d,ans=0;while (l<=r){int mid=(l+r)>>1;if ((x+mid*d+k-2)/(k-1)<=d){l=mid+1;ans=mid;}else r=mid-1;}num=ans+1;if (x+num*d>=n){x+=((n-x)/d)*d;break;}x+=num*d;}cout<<x<<"\n";}return 0;
}
T4 道路定向【NOIP2025模拟赛T4】
题目传送门
题目难度:\(\color{#0E1D69} NOI/NOI+\)
算法标签:贪心,搜索,折半搜索,动态规划,树形DP