摘要:
思路一 筛出$10^7$以内素数 判断素数表中的数是否为回文数 注意点 如果一个回文数的位数是偶数,则它的奇数位上的数字和与偶数位上的数字和必然相等,这样的数能被11整除,不可能是素数(11自己除外)。 由上条性质,素数表只要筛到$10^7$即可。 USACO上提交居然MLE?遂放弃记录素数表,直接 阅读全文
摘要:
思路 将$32$位二进制数转换为十进制数,用long long存储$n+1$和$n+3$的结果(不超过$33$位),再将结果转成二进制即可。 void solve(LL n) { for(int i=32;i>=0;i--) { int t=n>>i & 1; if(i == 32 && !t) c 阅读全文
摘要:
经典问题,直接暴搜出所有方案即可。 const int N=25; bool vis[N][N][N]; int a,b,c; vector<int> ans; void dfs(int x,int y,int z) { if(vis[x][y][z]) return; vis[x][y][z]=t 阅读全文
摘要:
预处理出双平方数集合 枚举双平方数中的一对数作为等差数列的首项和第二项 剪枝: 计算出当前等差数列的末项,last=x+(n-1)*d比双平方数集合中最大的数还要大,则无需判断其是否能构成长度为$n$的等差数列。 如果当前公差比双平方数集合中最大的数还要大,那么比当前公差还要大的公差显然也没有枚举的 阅读全文
摘要:
将$1 \sim n^2$放置在$n\times n$的棋盘当中,要求当前格子中的数字与其四连通的格子中的数字不相邻。 考虑将当前格子染成黑色,与其四连通的格子染成白色,即下标$(i,j)$的格子,当$i+j$为偶数时染成黑色,$i+j$为奇数时染成白色,则颜色不同的格子中的数字不能相邻。 按从左至 阅读全文
摘要:
统计满足$i<j$并且$a_j-a_i=j-i$的数对的数量。 变形,\(a_j-j=a_i-i\)。 开哈希表,对原数组扫描一遍即可。 const int N=2e5+10; int a[N]; int n; int main() { int T; cin>>T; while(T--) { cin 阅读全文
摘要:
货仓选址变形题。 将所有星号聚拢到中间的星号上,总花费最小。 移动每个星号的花费是其与中间星号间的距离并减去二者之间的星号数量。 const int N = 1e6+10; char s[N]; int a[N]; int n; int main() { int T; cin >> T; while 阅读全文
摘要:
模拟。 string s,t; int m; int main() { cin>>s>>m; while(m--) { string op; cin>>op; if(op == "COPY") { int l,r; cin>>l>>r; t=s.substr(l,r-l+1); } else if( 阅读全文
摘要:
找出所有约数,约数$x$所在的第$x$行存在一个$m$需满足条件: $x$不超过$n$ $m/x$不超过$n$。 int n, m; int main() { int T; cin >> T; while(T--) { cin >> n >> m; vector<int> divisor; for( 阅读全文
摘要:
零比特填充法。 int main() { int T; cin >> T; while(T--) { string s; cin >> s; int cnt = 0; // 记录连续的1的个数 for(int i = 0; i < s.size(); i++) { if(cnt == 5) { cn 阅读全文