2019年11月6日

摘要:参考: https://www.cnblogs.com/tonyyy/p/10433460.html https://www.cnblogs.com/wkfvawl/p/9377441.html (double保留两位小数: System.out.println(String.format("%.2 阅读全文
posted @ 2019-11-06 15:00 nimphy 阅读 (34) 评论 (0) 编辑
 
摘要:题意:给定大数A和B,求gcd。所有数字都是二进制。 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出。 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化。 import java.math.BigInteger; import java.util.Sc 阅读全文
posted @ 2019-11-06 12:59 nimphy 阅读 (18) 评论 (0) 编辑
 
摘要:题意:给定数字A和数字B,问是否满足gcd(A,B)==1。 思路:可以直接写函数gcd。也可以用大数自带的gcd功能。 代码1: /* @author nimphy @create 2019-11-06-12:07 about: */ import java.io.*; import java.u 阅读全文
posted @ 2019-11-06 12:45 nimphy 阅读 (22) 评论 (0) 编辑

2019年11月5日

摘要:A: 题意:给定A个N元,B个一元,问是否可以凑成S元。 思路:A*i+j=S 即 A*I<=S<=A*I+B 即min(S/N,A)+B>=S; /* @author nimphy @create 2019-11-05-10:34 about:CF1256A */ import java.util 阅读全文
posted @ 2019-11-05 11:39 nimphy 阅读 (30) 评论 (0) 编辑
 
摘要:刷点水题练习java 题意:给定N点,M边的无向图,问有多少个连通块。 思路:可以搜索; 可以并查集。这里用并查集练习java的数组使用,ans=N,合并一个连通块ans--; 以及函数的调用: 经验1:C++声明数组是int fa[1024];而java则是int[] fa=new int[102 阅读全文
posted @ 2019-11-05 10:10 nimphy 阅读 (22) 评论 (0) 编辑

2019年10月21日

摘要:金了金了,今年可以退役了。 阅读全文
posted @ 2019-10-21 16:40 nimphy 阅读 (159) 评论 (2) 编辑

2019年10月9日

摘要:牛客G: 给定大小为N的数组a[],给定M组关系,让你重排a[],使得sum{M队关系的绝对值之差}最小。首先将a排序,然后依次把a填入数组。 假设i在二进制下有x个1,用dp[i]更新dp[i|(1<<j)],表示的是,将a[x+1]填在第j个位置。注意到a[]已经排序了,那么a[x]的贡献就是: 阅读全文
posted @ 2019-10-09 14:56 nimphy 阅读 (78) 评论 (0) 编辑

2019年9月29日

摘要:题意:有N座山,M条道路。山有山高,路有困难值(即点权和边权)。现在Q次询问,每次给出(v,p),让求从v出发,只能结果边权<=p的边,问能够到达的山中,第K高的高度(从大到小排序)。 思路:显然,最小化最大边权,需要先得到生成树,三种思路。 第一种:离线+启发式合并,这里先不管。 第二种:Krus 阅读全文
posted @ 2019-09-29 17:06 nimphy 阅读 (67) 评论 (0) 编辑

2019年9月28日

摘要:题意:给定数组a[]的生成方式,然后b[i]=∑a[j] ,(i%j==0),求所有b[i]的异或和。所有运算%2^32; 思路:高维前缀和的思想,先筛出所有素数,然后把每个素数当成一维,那么分开考虑即可。复杂度O(NloglogN); 如果有这一维就加进去就可以了~神奇。 阅读全文
posted @ 2019-09-28 11:07 nimphy 阅读 (61) 评论 (1) 编辑
 
摘要:题意:给定N点,M边,每条边有两个属性(a,b),现在让你选N-1条边出来,然后使得∑a*∑b最小。N<200,M<1e4; 思路:我们把∑a看成x,∑b看成y,那么一个方案对应一个二维坐标(x,y)。假设我知道了其中两个方案[A,B],那么,如果另外一个方案C更优,则在二维平面上,C至少要满足在A 阅读全文
posted @ 2019-09-28 09:59 nimphy 阅读 (47) 评论 (0) 编辑