随笔分类 - 数论
摘要:##题意 中文题,自行理解。 ##思路 给出的和数据还有点大的,, 又涉及到公约数,也就是 __gcd(x,y)函数, 所以我们不能对这些数的因子去做素数打表, 所以,凭借常识,我们可以用map去进行标记; 为了再减少时间,我们对于其因数,可以直接用cmath下的sqrt去
阅读全文
摘要:##题意 给出一个长度为的数组,次询问。每一次询问给出两个数和,表示在区间内,查询在给定区间内有多少个数字,该数字出现次 数等于它本身。 ##思路 题目中的ai最大,而数组范围,所以如果数据大于了,这个数就不可能为所求的忽略
阅读全文
摘要:##题目链接 https://www.luogu.com.cn/problem/P3865 ##适用范围 主要是处理区间最值问题。 ##时间复杂度 的时间内进行预处理,的时间进行查询。(线段树解决可能会超时) 即列数:最大是(计算机上默认
阅读全文
摘要:##题意 给出一个N和M,输入-1 -1结束。 N代表N个人,Haha开始围绕这N个人丢手绢,每次丢在间隔为M-1的人身边,比如M=2,那么Haha从扔给A,下一次就应该扔给C。 如果每个人全部都能被丢到一次,那么输出“YES”,否则输出“POOR Haha”。 ##思路 如果N和M不存在公因数,即
阅读全文
摘要:题意: 给出n朵六角雪花的六条边长, 问:是否存在相同的两片雪花 思路:利用Hash,保存每多雪花的 边长总和 和 编号。 AC代码: 1 #include<stdio.h> 2 #include<cmath> 3 #include<queue> 4 #include<vector> 5 #incl
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5976 题意: 把一个数拆成几个不相同的数,求这些数的乘积的最大值。 思路: 使一个数n乘积最大,拆成两个数x、y > 则x、y接近n/2,再去进行拆分; 但是题意给的是不相同的多个数,所以最优解则是
阅读全文
摘要:用n条直线,划分平面,最多能够划分为多少块? (n+1)*n/2+1 3->7 3047 位移运算 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=3047 题意: 给出两个数a,b。问a能否只通过位移运算( >>和 << 可以多
阅读全文
摘要:lower_bound() 大于等于 upper_bound()大于
阅读全文
摘要:我太难了,被两道最大流困住了, 我知道思路,代码也写出来了,也过了样例啊, 但是一直报错,超时啊,RT啊,wa啊,哪错了啊啊 两道题我写了七八个小时,唉,我好菜。 那两题之后再补叭,先空着。 任何数和0异或是该数本身:x^0=x 做到和平行四边行相关的问题的时候,应该联想到:平行四边形的对角线是角平
阅读全文
摘要:输入输出外挂: 适合类似莫队这样输入量比较大的情况 输入:利用fread去读取 inline char gc() //用fread读入加快读入速度,比一般read读入要快 { static char buf [100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(
阅读全文
摘要:离线算法和在线算法: 离线算法:在开始时就需要知道问题的所有输入数据,而且在解决一个问题后就要立即输出结果。(例如选择排序) 在线算法:可以以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入。(例如插入排序) 暴力分块: 可以看一下 洛谷P1816 忠诚 https://ww
阅读全文
摘要:##01背包 概念:给定n种物品的价值和重量,每种物品最多只能取一次。求出当背包容量为m时能够装下的最大价值 代码:一维的写法,dp数组代表的是当前状态能够放下的最大价值 for(int i=0;i<n;i++) { for(int j=m;j>=w[i];j--) dp[j]=max(dp[j],
阅读全文
摘要:Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concate
阅读全文
摘要:样例 样例输入 4 add Inside C# find Effective Java add Effective Java find Effective Java 样例输出 no yes 数据范围与提示 n<=30000 1 #include<stdio.h> 2 #include<algorit
阅读全文
摘要:参考公众号:https://mp.weixin.qq.com/s?src=11×tamp=1576558053&ver=2039&signature=mN7nJghjPUfRJJ16i67HUNkjeTL5gz3ietls7XFab6PuX*ZA2Em-YMBe4s7CZkVxWjbHRI
阅读全文
摘要:double定义的变量输入的时候一定要%lf输入,要是%f输入的话,得到的结果会是0 float输入的时候是%f 但是在输出的时候%lf和%f都可以输出 建议使用double类型时,用%lf输入,%f输出避免出错。
阅读全文
摘要:思路 谁面临平衡态势,必输。 x和所有a[i]异或好之后所得到的x,如果x=0的话,说明后手赢。 需要知道一个异或规则:x^y^y=x。 代码中第二个for循环的时候,(a[i]>(a[i]^x) ,前面的a[i]代表当前堆,后面的 x^a[i] 代表当前a[i]没有被取,代表除了当前堆,其他所有堆
阅读全文
摘要:题意 有n堆石子,每堆石子里面至少有一个石子,有A、B两人。A先取,取完所有石子的一方获胜,问当双方都采取最优策略时,谁能获胜。 思路 Nim博弈模板,谁面临平衡态势谁就会输。 特判一种情况:当每一堆石子的个数全部都为1的时候,这个时候只能每次拿一个,根据1的奇偶性进行判断。 AC代码 #inclu
阅读全文
摘要:题解 素数筛模板题,不能用单纯暴力来解。 AC代码 #include<iostream> #include<stdio.h> #include<string.h> using namespace std; const int N=5e6+10; //int book[N]; //int pri[N/
阅读全文
摘要:n条折线最多将平面分成几个部分:2*n*n-n+1 n条直线最多将平面分成几个部分:1+(1+n)n/2
阅读全文