随笔分类 - ACM_codeforces
codeforces题目,持续更新呦
摘要:A.数数 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5; const ll mod=1e9+7; int main(){ int t; cin>>t; while(t--){
阅读全文
摘要:A . Fence 给与三个数字,返回一个数,使得能组成一个四边形 众所周知跟三角形一样就可以。 D=A+B+C-1 即可。 int main(){ int t; scanf("%d",&t); while(t--){ int a,b,c; scanf("%d%d%d",&a,&b,&c); int
阅读全文
摘要:这道题的n限制在500以内,那当然可以使得暴力,优雅得度过这道题。 但是我们都知道,算法是要挑战极限的。如果n变得很大,该如何做这道题呢? 我们发现要产生这么一个符合条件的四元组,最重要的要寻得 符合条件的b,c,那么a就在c之前比b小,d就在c之后比b大。 因此这道题用主席树能够很好的优美的度过这
阅读全文
摘要:这道题啊,精妙。 第一会发现环是想走就走的。因此需要找到环,然后把环的异或值加入线性基。 再者发现只要将刚开始的 链的异或 在线性基里找到最大值就行。但是这条链是需要去寻找的吗?发现并不需要,因为可以发现如果有别的路径,那么两条路径就必定会产生一个环,那么在线性基里就可以通过异或(想当于改变初始认定
阅读全文
摘要:这道题,属实将我搞懵了,看了好久才将题意看懂。 刚开始因为认为除了特判情况下,每一行每一列都要存在#,然后当#之间存在’ . ‘时便直接为-1. 后来发现存在情况,当行和列都存在空行时也符合条件。 最基本例子: 当第一行和最后一列都为.,反而能在(1,n)处放N极,且不影响,因此只要将这个条件判过,
阅读全文
摘要:一般来说对于单一的数,进行判断。 bool isprime(long long x){ if(x<=3) return x>1; if(x%6!=1&&x%6!=5) return false; long long k=sqrt(x); for(int i=5;i<=k;i+=6){ if(x%i=
阅读全文
摘要:运用线性方程求乘法逆元应该算是数论中最基础的了,现在就要分析其代码。 现有模板: int exgcd(int a,int b,int &x,int &y){ if(b==0){ x=1;y=0;return a;//此时的a为最大公约数; } int n=exgcd(b,a%b,&x,&y); in
阅读全文
摘要:对于素数p: 如果p%4==1 则p是两个平方数的和。 如果余3,则不是。 三角数:前n项和,即3、6、 10 之类。 完全数:所有因数和为本身。例如 6,28,496. 若 p+2为素数,则城 其为孪生素数。 存在无限个p,使p+2 p+4为素数吗?这个问题的答案是不可能,因为总有一个余三。 本原
阅读全文
摘要:对于A题,因为它的k是有限的,就没必要去管n的范围,只要在[n-1500,n+1500]加入k然后循环一遍就行,当然1500是随便的,想2000也行。 一下为代码: #include<iostream> #include<cmath> #include<cstring> using namespac
阅读全文
摘要:这道题通过简化方程可得,当n为平方数的时候,解为无穷,当%4不为0时为0 0;计算 但是要小心,这道题的代码要经过优化。一下为两种代码,一个tle,一个accept。 #include<iostream> #include<cmath> using namespace std; typedef lo
阅读全文
摘要:这道题目提示了波兰特-切比雪夫定理,然后可以知道 在[n,2n]之间必然存在一个素数。 而题目给的n,k; 即从k+1开始,传向[2,n+1]; 那么必然存在一个素数p 在 [(n+1)/2,n+1]之间,只要传到这个p,下一步即可覆盖整个区间. 随后的步骤就可以确定了,就是判断k+1是[n+1/2
阅读全文
摘要:这道题目要求给定一组数据,选出最多个数使数字两两互质,数据的个数小于14个。 对于这么小的范围,暴力解肯定能过。 用0.1表示是否选该数。 则一共有2^n次选法,遍历即可。 以下为代码 #include<iostream> #include<queue> #include<string> #incl
阅读全文
摘要:这个题目,讲的是给一个数X,它要求得两个数a,b,使ab的最小公倍数为x,因为x的范围在10的12次之内,所以说通过sqrt过后暴力解是可行的。 然后要明白,当x是素数的时候输出的就是本身即可。 以下为代码 #include<iostream> #include<queue> #include<st
阅读全文
摘要:题目讲的是给一组数据,X得到的所有数据之和,Y得到的是一个区间的总和,但这个区间不能是[1,n];要求如果X大于Y就输出YES 反之 NO 这种题目如果不想麻烦就从[1,n-1]和[2,n]求最大值。 求连续区间最大值的方法就是建一个新的数组,下标i代表这以i为结尾的连续区间的最大值。 则 maxn
阅读全文
摘要:题目解析:核心的部分就在于进制的转化,懒得多说,就放代码。 #include<iostream> #include<string> #include<queue> #include<cmath> #include<algorithm> #include<cstring> #define ll lon
阅读全文

浙公网安备 33010602011771号