乱搞
acblacktea
永不放弃
展开
-
codeForces-Longest Subsequence
#include<cstdio>#include<cstring>using namespace std;int a[1100000],b[1100000],n,k, c[1100000];int main(){ while(scanf("%d%d",&n,&k)!=EOF) { memset(b,0,sizeof(b)); int i1 =原创 2016-03-15 21:04:09 · 315 阅读 · 0 评论 -
BestCoder 2nd Anniversary Arrange
利用第一个单减函数和第二个单增函数的性质 从头到尾扫一遍设立一个维护此时最大最小值之间可以用的变量一次次累乘就行了#include<cstdio>#include<set>#define LL long long#define mod 998244353using namespace std;int a[100005],b[100005],n;int main(){ int t原创 2016-07-18 22:45:59 · 244 阅读 · 0 评论 -
Codeforces Round #353 Money Transfers
1.是个环。 2.保证有解。 3.要求最少步骤使每个点为0,即分段为0; 4.当分为K段时,每段的值都移到一个点所以最后的总步骤为n-k,即K最大总步骤最小 5.储存1到n个数进行累加和,看哪个和出现的最多就是分的最多段。 6,注意long long#include<cstdio>#include<algorithm>#include<map>#define LL long long原创 2016-05-23 18:30:03 · 346 阅读 · 0 评论 -
hdu-5668- Circle 逆元+卡特兰数知识模板
(a/b)%mod = (a%mod*(b的逆元))%mod 逆元求法: //1: 通用扩展欧几里得;long long extend_gcd(long long a,long long b,long long &x,long long &y) { if(a==0&&b==0) return -1;//无最大公约数 if(b==0){x=1;y=0;retu原创 2016-05-16 23:41:10 · 636 阅读 · 0 评论 -
BestCoder Round #79 (div.1) Claris and XOR 题解。。。
题意没看清以为d>b…..结果比赛时没做出来 从高位往地位递推,递推时贪心选择最优解。 结论 1:递推到x位时,b此位的数必定>=a此位的数。d此位的数必定>=c此位的数。 证明:因为递推的过程不断刷新上下限,a和b的上一位一定相同,c和d的上一位一定相同,又因为b>=a,d>=c,所以可证 注意取模1LL!!!#include<cstdio>#define LL long longi原创 2016-04-10 15:23:49 · 387 阅读 · 0 评论 -
BestCoder Round #78 (div.1) CA Loves GCD
因子分解,然后把约数为1到1000的方案都求出来,比如约数为2的方案为2^(n个数中能被2整除的个数)-1,然后从1000到1逆推,推的过程要更更新小约数的值比如推完am[8]时,am[2],am[4],am[1]都要减去am[8](因为m个数的公约数为8时那公约数一定也为2和4,)逆推可以保证最大公约数。 这么水的题都要想很长时间我真是太渣了。。。#include<cstdio>#includ原创 2016-04-02 22:56:06 · 296 阅读 · 0 评论 -
Codeforces Round #346 (Div. 2)E. New Reform 乱搞dfs
#include<cstdio>#include<cstring>#include<map>#include<algorithm> using namespace std;map<int,int>mp[110000];int next[200000],link[200000],n,m,co[200000],l,last[200000];bool sym[200000],sym2;vo原创 2016-04-01 12:18:20 · 371 阅读 · 0 评论 -
codeforces-Goodbye2015- New Year and Ancient Prophecy
第一次做这种难度的题刚开始做一点思路没有,看完别人的思路做出来以后感觉好简单我居然当时没有思路! 1.先求最长连续子串。因为后面要比较两个字串的大小如果在下面DP的时候在一次次比较两个数的大小妥妥会爆的。 2.DP (1)dp[i][j]代表最末尾为s[i]s[i+1]…s[j]这个数时的方案数,如果末尾为s[i]s[i+1]…s[j]这个数的方案可以,那这些方案同样适用s[i]s[i+1]原创 2016-03-20 15:12:16 · 345 阅读 · 0 评论 -
codeforces-Good Bye 2015-New Year and Domino
有点容斥原理的意思。。。#include<cstdio>long long dp[505][505],n,m;char mp[505][505];int main(){ while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) scanf("%s",mp[i]+1); for(in原创 2016-03-19 19:53:44 · 307 阅读 · 0 评论 -
Hdoj-5637Transform
题意 s^t^w = 0, w为选取a1,a2,a3。。。an.2的0次方,2的1次方,2的2次方。。。2的16次方 选几个数异或出来的,w = s^t;最多31个数用bfs把生成w(0-100000)的步骤都求出来。#include<cstdio>#include<queue>#include<cstring>using namespace std;int a[50],n,m,no1,no原创 2016-03-08 11:47:56 · 239 阅读 · 0 评论 -
BestCoder 2nd Anniversary Wool 区间合并模板
抽象出各个区间然后区间合并 区间合并算法 按左端点从小到大进行排序,并设立一个变量记录此时的最右端,从1->n扫一遍 每次分情况讨论且刷新最右端值这个比较好想#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<utility>#include<vector>#define LL原创 2016-07-18 22:52:26 · 263 阅读 · 0 评论