
基本算法==思维
不会
Helium_wild
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
cf701D. As Fast As Possible(小学数学推导)
题目 题意 已知n个人,一段路程为 l,走路v1,坐车v2,每车最多坐k人(每人最多做一次车),求所有人到终点的最小时间。上下车不需要时间,车转弯不需要时间,但是只有一辆车,车回去需要时间。 思路 所有人到达终点的时间是一样的。所以每个人坐车行走的距离都是一样的. 第一组上车的人在0处上车,设在坐车行走距离 l1 然后下车。 第二组此时走到了l1/v2*v1, 人和车此时相距(l1-l1/v2*v...原创 2019-11-07 11:19:42 · 321 阅读 · 0 评论 -
cf701E. Connecting Universities(树上2*k个点分成k对 路径长度和的最大值)
题目 题目 给你一个n个顶点的树和2*k个点,可以组成k对,问k对的道路和最大是多少。 思路 考虑每条边的贡献的最大值,每条边都贡献最大也一定可以构造出这样的对,猜的。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+5; struct Edge{int to,nex;...原创 2019-11-07 14:33:09 · 214 阅读 · 0 评论 -
cf1168B. Good Triple(挺好的一道题!!思维灵活的不像尺取sl=smid=sr)
题目 按正常的尺取就不会做。哭了。 对于右端点取r找到一个l。 符合要求以r为右端点的点对有l个。 对于右端点r+1。l 应该从之前的l+1开始遍历。假如以r为右端点的时候没有s[l]==s[r]==s[(l+r)/2]的点对,那么符合要求以r为右端点的点对个数为之前的p。这是最靠右的p. 代码很好懂。 #include<bits/stdc++.h> using namespace ...原创 2020-01-20 20:52:56 · 309 阅读 · 0 评论 -
cf1172B. Nauuo and Circle(全排列在圆上画边不相交的生成树 的种数)
题目 #include<bits/stdc++.h> using namespace std; const int N=2e5+5,mod=998244353; typedef long long ll; int deg[N]; int main(){ int n;scanf("%d",&n); ll ans=1; for(int i=1,x,y;i...原创 2020-01-20 18:19:40 · 317 阅读 · 0 评论 -
cf1175D. Array Splitting(将数组分成k部分 所有数的值*他所在的第几个部分 和最大 拆式子)
题目 我就是个弱智。哭了。唉。怎么就是想不到拆开式子呢? 拆开之后很简单。 sum=s[r1]*1+(s[r2]-s[r1])*2+(s[r3]-s[r2])*3+....+(s[rk-1]-s[rk-2])*(k-1)+(s[n]-s[rk-1])*k; 把括号打开 sum=k*s[n]-s[r1]-s[r2]-...s[rk-1]; 为了使sum尽可能大就选前k-1个前缀和即可 那么就对前...原创 2020-01-20 17:36:15 · 420 阅读 · 0 评论 -
cf1176D. Recover it!(给个2n序列打乱顺序找到长为n的原序列)
题目 答案难道不是唯一的吗? 我觉着是唯一的 代码第20行: 先从大到小,合数不能由合数变成,假如可以变成的话这个合数就不会剩余,遍历到比他大的那个可变成他的合数的时候–vis[它]了。 代码第21行: 经过上一行的处理,剩下的数都是质数了。 #include<bits/stdc++.h> #define m(a,b) memset(a,b,sizeof a) using nam...原创 2020-01-20 15:27:39 · 276 阅读 · 0 评论 -
cf1176E. Cover it!(将连通图选出不超过一半的点 使剩点与已选某或多个相邻 生成树奇偶层)
题目 题意: 给你一张n个点m条边的连通图,无自环和重边。输出k和k个点的编号。 k<=[n/2]。使得没被选的点一定会和这k个点里至少一个有边相连。 思路: 直接将图生成一棵树,第一种涂色方法是将奇数层全涂色,若这种方法涂色节点数大于⌊n/2⌋,那么将偶数层全涂色肯定可行。 #include<bits/stdc++.h> #define m(a,b) memset(a,b,s...原创 2020-01-20 13:08:23 · 316 阅读 · 0 评论 -
cf1189A. Keanu Reeves(一个01串最少分割成多少串 使得每个串01数量不同)
题目 题意: 一个01串最少分割成多少串 使得每个串01数量不同。 思路: 要么不分割,要么分割成两个串。。 #include<bits/stdc++.h> using namespace std; const int N=100+5; char s[N]; int main(){ int n;scanf("%d%s",&n,s+1); int num0=...原创 2020-01-19 21:39:01 · 218 阅读 · 0 评论 -
codeforces-675D-Tree Construction(思维 用set模拟二叉搜索树)
题目 给定一个有 N 个数组成的序列,在此基础上构建一棵二叉排序树,求每个节点(根节点除外)的父节点的编号是多少。 输入输出样例 输入样例#1 3 1 2 3 输出样例#1: 1 2 输入样例#2: 5 4 2 3 1 6 输出样例#2: 4 2 2 4 说明 题解:自己造一个二叉搜索树 TLE了。 一个节点的父节点是它前面的数中 比它大的的最小的,比它小的最大的。两个谁出现的位置晚。就是它的父...原创 2019-03-04 14:26:24 · 209 阅读 · 0 评论 -
CF622(C. Not Equal on a Segment 简单思维)
题目 题意: 给一个长度为n的序列。m个询问。询问:[l,r] x。输出[l,r]中不等于x的下标(任意输出一个即可)。 思路: 我现在笨的已经不行了。 #include<bits/stdc++.h> using namespace std; const int N=2e5+5; int a[N],pre[N]; int main(){ int n,m;scanf("%d%d...原创 2019-10-16 12:47:15 · 331 阅读 · 3 评论