随笔分类 -  解题记录

摘要:linkkk 题意: 给出长度为$n$的序列和$k$,问有多少个数对$(i,j)$满足$ai*aj=x^k$ 思路: 首先,对所有的数分解质因子。当$a_i$和$a_j$的质因子对应的指数之和$\mod k==0$的时候,是一对合法的数对。 问题就转化成了如何快速判断。 大概有两种方法,一是选择用$ 阅读全文
posted @ 2021-11-10 17:25 OvO1 阅读(59) 评论(0) 推荐(0)
摘要:2021女生赛B 点击查看代码 // Problem: B. 攻防演练 // Contest: Codeforces - 2021年中国大学生程序设计竞赛女生专场 // URL: https://codeforces.com/gym/103389/problem/B // Memory Limit: 阅读全文
posted @ 2021-11-10 16:34 OvO1 阅读(53) 评论(0) 推荐(0)
摘要:原题链接 题意中说所有的点肯定会落在某条横线或纵线上,或者落在横线和纵线交点上,这是个很重要的性质。 如果点在横线和纵线交点上的话,他和其他点的曼哈顿距离就是最短距离。 如果某个点落在某条横线上,并且在两条纵线之间,那么在两条纵线之间并且不在同一条横线的点都可以跟他有贡献。 用map标记一下,计算贡 阅读全文
posted @ 2021-09-09 10:21 OvO1 阅读(106) 评论(0) 推荐(0)
摘要:link 思路: 先来想想暴力的写法: $n^{2}$枚举左上角的顶点,$k^{2}$求最小值。 考虑优化: $1.$答案有单调性,可以二分答案,省去枚举左上角顶点的复杂度。 $2.$每次$check$的时候,将大于该数的设为$1$,小于该数的设为$0$,这样就可以在$k^{2}$枚举的时候用二维前 阅读全文
posted @ 2021-07-21 17:44 OvO1 阅读(86) 评论(0) 推荐(0)
摘要:A 汽水瓶 思路: 模拟,其实也可以考虑贡献,每次都相当于少了两个汽水瓶,所以$res=n/2$ ##代码: int main(){ int n; while(cin>>n){ if(!n) break; int res=0; while(n>=2){ if(n==2){ res++;break; 阅读全文
posted @ 2021-07-19 20:53 OvO1 阅读(66) 评论(0) 推荐(0)
摘要:传送门 A.Chuanpai int main(){ int _=read; while(_--){ int n=read,res=0; rep(i,1,6) rep(j,1,i) if(i+j==n) res++; cout<<res<<endl; } return 0; } B.Hotpot i 阅读全文
posted @ 2021-07-17 18:36 OvO1 阅读(635) 评论(0) 推荐(0)
摘要:#题意: 给一个数组,求元组个数满足: \(l<=a[i]+a[j]<=r,i<j\) #思路: 移项后:\(l-a[i]<=a[j]<=r-a[i]\) 二分查找即可。 注意最后答案会爆$int$ #代码: const int maxn=2e5+100; int n,a[maxn],l,r; in 阅读全文
posted @ 2021-07-10 13:48 OvO1 阅读(113) 评论(0) 推荐(0)
摘要:传送门 #思路 首先,将对应的位置变成相同的字母的代价是固定的,可以预处理出来。 接着,根据p所在的位置分类讨论,如果p在左半边,一定是将左半边变成跟右半边一样的代价是最小的,因为这样省去了移动指针的代价。 处理两个指针l,r,表示该部分中需要处理的左端点跟右端点,根据p的位置分类讨论就可以了。 # 阅读全文
posted @ 2021-05-28 11:31 OvO1 阅读(72) 评论(0) 推荐(0)
摘要:传送门 #A Paint the Numbers ##思路: 排序后从小到大枚举,每次都将当前数的倍数并且未染色的数跟该数染同一种颜色。 ##代码: int n,a[maxn],res; int vis[maxn]; int main(){ cin>>n; for(int i=1;i<=n;i++) 阅读全文
posted @ 2021-05-11 14:10 OvO1 阅读(92) 评论(0) 推荐(0)
摘要:题目链接 CF1305A Kuroni and the Gifts 思路: 将两个数组都从小到大排序,因为数组里不会有重复元素,所以和也不会重复。 代码: int main(){ int _=read; while(_--){ int n;cin>>n; vector<int>a,b; int x; 阅读全文
posted @ 2021-05-09 21:47 OvO1 阅读(76) 评论(0) 推荐(0)
摘要:Incredible Chess 题解 Left Right 思路: nim模板题。 代码: #include<bits/stdc++.h> using namespace std; const int maxn=510; int a[maxn],b[maxn]; int main(){ int T 阅读全文
posted @ 2021-05-02 09:23 OvO1 阅读(117) 评论(0) 推荐(0)
摘要:CF4D Mysterious Present(二维LIS) 原题链接 思路: 一维的话考虑n^2和nlogn两种写法,二维的话先对第一维进行排序,再对第二位做LIS。 注意是严格单调上升子序列 代码: const int maxn=5100; struct node{ int w,h,id; }a 阅读全文
posted @ 2021-04-26 21:34 OvO1 阅读(88) 评论(0) 推荐(0)
摘要:动态规划 4.26 CF2B The least round way(数论+dp) 原题链接 题意: 题目描述 给定由非负整数组成的n×n 的正方形矩阵,你需要寻找一条路径: 以左上角为起点 每次只能向右或向下走 以右下角为终点 并且,如果我们把沿路遇到的数进行相乘,积应当是最小“round”,换句 阅读全文
posted @ 2021-04-26 20:38 OvO1 阅读(70) 评论(0) 推荐(0)
摘要:Gym - 101908L Subway Lines (树链剖分+线段树) 原题链接 题意: 给定一棵树,求a-b的路径和c-d的路径 思路: 树链剖分后,用线段树维护。 在a-b的路径权值全部加1,再查询c-d的区间和就是答案。 每次统计完后记得消除影响。 代码: #pragma GCC opti 阅读全文
posted @ 2021-04-26 19:49 OvO1 阅读(110) 评论(0) 推荐(0)