摘要: #include<bits/stdc++.h> using namespace std; int poww(int a,int b) { int c=1; while(b) { if(b&1) c=a*c; a=a*a;b>>=1; } return c; } int T,n,zs[110],t,a 阅读全文
posted @ 2020-02-06 17:05 Cduiz 阅读(111) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; struct fs { double a,b; fs(){a=0;b=0;} fs(double x,double y){a=x;b=y;} inline fs operator * (const fs &tm 阅读全文
posted @ 2020-02-04 16:59 Cduiz 阅读(87) 评论(0) 推荐(0)
摘要: 这是一道置换练习题,学过置换就是一道较简单的DP题; 首先,观察到题目中要求的操作其实就是置换,让求置换多少次变回去; 根据置换的知识点(或直觉)得出结论——层数等于置换中各个循环的长度的LCM; 又可以转化成把n个元素分成m个集合,让你求各集合大小的LCM的情况数; 由于LCM与质数的关系,不难想 阅读全文
posted @ 2020-02-03 17:14 Cduiz 阅读(150) 评论(0) 推荐(0)
摘要: T1: 题意:在第一象限有n个点,问最少需要几个经过(0,0)的抛物线才可以包含所有点(数据范围小); 思路:由于二次函数不是很好,一开始看到这道题是先跳过了的。做完第二题后再来看这题,发现数据范围非常小,于是想暴力拿分,就将每个可以用一条线包含的点存在那个线的数组里,每一次都取最大的那一组; 题解 阅读全文
posted @ 2019-10-05 22:03 Cduiz 阅读(97) 评论(0) 推荐(0)
摘要: T1: 题意:一个序列,每个数有p值和h值,求有多少对p值相同的数之间有一个数的h值小于m 思路:简单题,先求前缀和,在扫一遍得出答案(但调试花了一些时间); 题解:同上; T2: 题意:给出n,m,d,表示一开始有n个为m的数,每次操作将一个非(非0最小值)的数变成[最小值-d,最小值],问将n个 阅读全文
posted @ 2019-10-03 23:20 Cduiz 阅读(106) 评论(0) 推荐(0)
摘要: T1: 题意:求一棵树上两条点不交路径,使它们的点权之和最大; 思考过程:联想到了一个相似的问题——树上求k条边不交路径的最大边权和,想到了拆点为边,很快发现不对。考虑到仅有两条边于是先求出一条直径,再分类讨论看第二条路是否经过第一条直径,不经过则bfs求最大值,经过则对直径上每一个点求一个最长的、 阅读全文
posted @ 2019-10-02 23:24 Cduiz 阅读(201) 评论(0) 推荐(0)