![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforces
文章平均质量分 61
pizzaaaaa
这个作者很懒,什么都没留下…
展开
-
codeforces div2 round#231 C
做完B题的时候差不多只剩下45分钟了,当时心里比较着急。没什么思路,一开始想往dp上面靠。自己dp又烂得一腿,想想又放弃了。之后想到了配对,比如说11和00配对,10和01配对,这样的话考虑的种数太多。最后还剩下来20分钟的时候确定了贪心的思路,也就是首先,我们一定要放11,11之后再考虑10和01,如果我们放置了11的话,就说明对应的列上至少加了1,那么我们将10,01的组合起来,也原创 2014-02-21 13:20:52 · 494 阅读 · 0 评论 -
403 D. Beautiful Pairs of Numbers
/* 题意:给定n和k,问满足1<=a1<=b1<a2<=b2<a3<=b3<...<ak<=bk<=n,并且b1-a1,b2-a2,b3-a3...bk-ak互不相同的组数. 假设x1=b1-a1,x2=b2-a2,x3=b3-a3,...,xk=bk-ak 则可以得到a1+x1+...+xk+k-1<=n,我们要求它的非负整数解 也就是要求x1+x2+...+xk<=n-a1+1的正整原创 2014-08-04 00:53:43 · 453 阅读 · 0 评论 -
444 C DZY Loves Colors
/* 线段树,注意传递参数的写法 */#include #include using namespace std;#define LL long longconst int maxn = 1e5 + 10;LL lazy[maxn<<2];LL delta[maxn<<2];//代表一个根节点的历史改变量之和,解决一个区间被多次覆盖的问题LL sum[maxn<<2];/原创 2014-08-04 00:58:31 · 532 阅读 · 0 评论 -
449 C. Jzzhu and Apples
/* 贪心算法,对于大素数的倍数,如果倍数的个数是奇数个,可以考虑将2*素数这个值空开,留给2来匹配 */#include #include using namespace std;//线性素数筛法const int N = 100010;int prime[N] = {0},num_prime = 0;int isNotPrime[N] = {1, 1};void prod原创 2014-08-04 01:01:51 · 369 阅读 · 0 评论 -
Codeforces 441 E. Valera and Number
/* Codeforces 441 E. Valera and Number 题意:给定三个整数,x,k,p.进行k轮操作,每轮有p%的可能性将x乘上2,有(100-p)%的可能性把x加上1,问最后x的二进制表示中末尾有多少个零的期望. 解法:dp解决,dp[k][i][j]表示进行k轮后,后八位是j并且后八位之前连续的1或者0的长度.(之所以定义为八位是因为考虑到加法操作再怎么影响,也只有原创 2014-08-04 00:54:09 · 477 阅读 · 0 评论 -
451 E. Devu and Flowers
/* 生成函数题. 题意:有n份物品(n<=20),每份物品为fi个. 问从中取s个的方法种数. 总的方法数可以利用生成函数表示: (1+x+x^2+...+x^f1)*...(1+x+x^2+...+x^fn)中x^s的系数即为所求 该生成函数可化简为(利用几何级数):(1-x^(f1+1))*..(1-x^(fn+1))/(1-x)^n 其中分母可以表示为(1-x)^n=(1+x原创 2014-08-04 00:58:10 · 415 阅读 · 0 评论 -
477 D. Dreamoon and Binary
好久不写CSDN了,原创 2014-11-02 22:14:17 · 674 阅读 · 0 评论 -
482 A. Diverse Permutation
构造#include #include const int MAXN = 100005;int a[MAXN];int main(){ int n, k; scanf("%d%d", &n, &k); a[1] = 1; int sgn = 1; for (int i = 2; i <= k + 1; i ++) { a[原创 2014-11-02 22:25:10 · 353 阅读 · 0 评论 -
482 B. Interesting Array
构造,ST表.#include #include const int MAXN = 100005;const int MAX_LOG = 17;struct query{ int l, r, v;};int n, m;query q[MAXN];int a[30][MAXN];int pre_log[MAXN];int st[MAXN][MAX_LOG];原创 2014-11-02 22:24:10 · 374 阅读 · 0 评论 -
477 C. Dreamoon and Strings
题意:给定字符串s,t.问s串删除k个字符后,最多有多少个互不相交的子序列和p相等.解法:dp[i][j]:字符s[i]之前删除了j个字符后的答案.对于s[i]的每一位设置一个转移位点to[i],表示以s[i]开始的串匹配t的最后一个位置加上1.dp转移方程:dp[i+1][j]=max(dp[i+1][j],dp[i][j])//这一步主要是为了那些不在to[]中的位点更新值.原创 2014-11-02 22:16:01 · 842 阅读 · 0 评论 -
477 B. Dreamoon and Sets
没什么好说的。#include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;int MAIN(){ ll n, k; cin >> n >> k;原创 2014-11-02 22:18:03 · 417 阅读 · 0 评论 -
482 D. Random Function and Tree
题意:给定一棵树,初始状态下所有树的节点都是红色,现在按照下述程序递归对树进行染色,问所有染色的方法数.染色方法:int p(){}//等可能地返回0和1int count;//全局变量,初始值为0.void paint(s){ int v = p(); if(v == 0) 将点s染为白色. else 将点s染为黑色. v = p(); if(v ==原创 2014-11-02 22:20:39 · 555 阅读 · 0 评论 -
477 A. Dreamoon and Sums
没什么好说的。原创 2014-11-02 22:18:49 · 447 阅读 · 0 评论 -
482 C. Game with Strings
题意:给定n个长度为m的串(n<=50,m<=20),保证每个串互不相同.每次可以问目标串一个位置上的字母,问最终猜出目标串的期望次数.解法:状态压缩dp.Let dp[mask] be the expected number of questions from state mask. When we try to ask question pos in state mask, the c原创 2014-11-02 22:22:10 · 503 阅读 · 0 评论 -
432 D. Prefixes and Suffixes
简单的后缀数组.原创 2014-11-03 22:16:18 · 417 阅读 · 0 评论 -
432 C. Prime Swaps
题意:给定一个n的排列(n解法:每次把i和在i位置上的数尝试交换.由哥德巴赫猜想,一个数最多被分为3个质数之和.按照这个进行构造.原创 2014-11-03 22:17:34 · 616 阅读 · 0 评论 -
Codeforces Round #263 (Div. 1)
56.Codeforces 461 A. Appleman and Toastman:简单的贪心.57.Codeforces 461 B. Appleman and Tree题意:给定一棵包含n个节点的树,这棵树的一些节点(至少一个)被染成黑色,现在可以删除一些边,使得删完边后的每个联通分量中恰好只有一个黑色节点.问满足条件的方案数一共有多少(对1e9+7取mod).解法:树形原创 2014-11-05 11:05:02 · 519 阅读 · 0 评论 -
448 E. Divisors
#include #include #include using namespace std;const int maxn = 1e5;#define LL long longvector divi;vector ans;void solve(LL x,LL k){ if(x==1) { ans.push_back(1);原创 2014-08-04 01:05:21 · 668 阅读 · 0 评论 -
431 D. Random Task
/* 简单组合数与二分. 我们二分判定答案n. 对于一个n,我们判定从n+1到2*n的满足条件的数 其实我们就是求一个前缀,就是f(2*n)-f(n). 这一步可以直接模拟并组合数解决 */#include #include #include #define LL long longusing namespace std;LL m;int k;int a[100];原创 2014-07-26 00:05:55 · 384 阅读 · 0 评论 -
451 B. Sort the Array
/* 直接模拟判断即可,也可以排序进行判断 注意边界情况 */#include #include #include using namespace std;int a[100100];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&a[i]);原创 2014-07-25 23:56:12 · 341 阅读 · 0 评论 -
codeforces div2 round#231 A
很水的一道题目。在输入时计算出对应的a,b,c的大小。然后分四种情况讨论。如果a+b=c,直接输出字符串。如果a+b-2=c,将a和b中比1大的那个移到右边去。这也是这道题目唯一的cha点。。。如果a+b+2=c,将c移一个到a,b中任何一个。否则输出impossible。#include "cstdio"#include "cstring"#include "cmath"原创 2014-02-21 12:52:24 · 393 阅读 · 0 评论 -
codeforces div2 round#230 B
很水的题目,推出两个矩阵之间的关系然后直接输入就好了。#include "cstdio"#include "cstring"#include "cmath"#include "algorithm"using namespace std;double w[222][222];double a[222][222];double b[222][222];int main(){原创 2014-02-22 09:25:42 · 514 阅读 · 0 评论 -
codeforces div2 round#231 B
算是做过的比较难的第二题了吧。一开始是从数学的角度上看,想要通过公式将唯一解算出来。但是看到位数是100W位左右,想想不可能。后来就想到了模拟原创 2014-02-21 13:01:18 · 504 阅读 · 0 评论 -
codeforces div2 round#230 E
算是对数学有点兴趣吧,看了看E题,觉得自己努力一下可能是做得出来的。这题的数据范围是关键,n很大,k很小,一开始做这题目的没考虑到这一点。我们令我们要求的和为Sn,那么Sn=Sn-1+An,考虑矩阵的表示方式。An+1=Fn+1*(n+1)^k,再将(n+1)^k二项式展开,并且利用Fn+1=Fn+Fn-1,就可以构造出这个矩阵了。代码基本是用YXM学长的,自己懒得再实现一个矩阵乘原创 2014-02-22 09:49:43 · 556 阅读 · 0 评论 -
codeforces div2 round#230 D
算是经典模型和比较简单的一道dp吧,比赛完之后看到题目我这种dp渣都有点感动。我们用dp[i][j][k]来表示将i个盘子从j号柱子移到k号柱子的最小花费,那么最终我们所求的就是dp[n][1][3]。状态转移方程也比较好想,dp[n][a][c]=min(dp[n-1][a][b]+cost[a][c]+dp[n-1][b][c],dp[n-1][a][c]+cost[a][b]+dp[原创 2014-02-22 09:41:08 · 470 阅读 · 0 评论 -
codeforces div2 round#230 C
不得不说这题目把我坑得不行。一开始读题的时候就没理解清楚题意。后来大概理解了内容,却把握错了题目的方向。我始终认为这货是有特定的公式的,所以就忽略了题目给的数据范围。考虑到圆的对称性,我们只需要扫描1/8圆就可以了。。。注意一下精度啥的,直接暴力这题就可以过。打的比赛还是太少,对cf的出题方向啥的还不是很熟悉。#include "cstdio"#include "cmath"u原创 2014-02-22 09:30:30 · 495 阅读 · 0 评论 -
codeforces div2 round#230 A
这次的cf打得也是很差。。。请叫我绿名狗。第一题是属于水题,开数组记录一下对应的字符个数。但是要注意一下'n',这个字母是可以重复利用的。#include "cstdio"#include "cstring"#include "cmath"#include "algorithm"using namespace std;int main(){ char s[1111];原创 2014-02-22 09:23:37 · 549 阅读 · 0 评论 -
451 C. Predict Outcome of the Game
/* 注意到对于k场比赛,如果a,b,c队胜场差是x1,x2,x3时,设a队胜场为t,则有t+t-x1+t-x1-x2=k,判断即可 注意是绝对值 */#include #define LL long longbool judge(LL n,LL k,LL d1,LL d2){ if((k+2*d1+d2)%3!=0) return 0; LL x=(k+2*原创 2014-07-25 23:54:28 · 406 阅读 · 0 评论 -
451 A. Game With Sticks
#include #include #include using namespace std;int solve(int n,int m){ if(n<m) swap(n,m); if(m==1) return 1; return 1-solve(n-1,m-1);}int main(){ int n,m; scanf("%d%d",&原创 2014-07-25 23:59:28 · 428 阅读 · 0 评论 -
439 E. Devu and Birthday Celebration
/* 题目大意:有n个物品,分成f份,这f份的最大公约数是1的种类数目 记答案为P(n,f,1) 则有sigma(P(n,f,i)) = C(n-1,f-1)(n件物品分为f份的总方法数) 注意到P(n,f,i) = P(n/i,f,1). 我们可以记P(n,f,1)为g(n,f) 则有sigma(d|n) g(d,f) = C(n-1,f-1). 令右边为f(n,f) 则可以利用原创 2014-07-25 23:53:41 · 454 阅读 · 0 评论 -
447 C. DZY Loves Sequences
/* 题意,给定序列,问如果给你一次机会修改一个数,则该序列的最长上升子串是什么 对于ai,我们可以预处理出ai-1往左的最长下降序列,以及ai+1向右的最长上升序列 直接维护答案即可. */#include #include #include using namespace std;const int maxn = 100000 + 100;int a[maxn];in原创 2014-07-26 00:00:50 · 447 阅读 · 0 评论 -
424 B. Megacity
/* 按距离排序后直接模拟 */#include #include #include #include using namespace std;#define LL long longstruct point{ LL x,y; int k;};bool cmp(const point &p,const point &q){ return p.x*原创 2014-07-26 00:07:12 · 617 阅读 · 0 评论 -
439 D. Devu and his Brother
/* 简单三分法解决,也可以排序后简单贪心. */#include #include #include using namespace std;const int maxn = 100000 + 100;#define LL long longint n,m;LL a[maxn],b[maxn];bool cmp(int a,int b){ return a>b;原创 2014-07-26 00:09:31 · 471 阅读 · 0 评论 -
446 C. DZY Loves Fibonacci Numbers
/* 感叹自己的代码能力实在是很差. 非常不错的题目 给定一列数,定义操作: 从一段数从头开始逐次加上f1,f2,f3,...,f(r-l+1). 利用线段树解决. 首先将连续的Fibonacci数通项公式转化为离散化的,利用二次剩余以及乘法逆元. 那么,对于一个区间的加和操作可以理解为对一个区间几何级数系数的维护. 这个可以利用线段树轻松解决. */#include #inc原创 2014-07-26 00:05:46 · 613 阅读 · 0 评论 -
449 D. Jzzhu and Numbers
/* 容斥原理... 题意:给定n个数(n<=10^6),ai<=10^6.问有多少种选取方式使得ai1^ai2^...^aik=0. i1<i2<...<ik 考虑对x,有多少个ai使得ai&x=x,令此等于f(x),再令g(x) = x二进制表示中1的个数 则最后的答案为sigma(0<=x<(1<<20))(-1)^g(x)*2^(f(x)). 是容斥原理逐步淘汰的形式(也就是求原创 2014-07-25 23:50:06 · 723 阅读 · 0 评论 -
451 D. Count Good Substrings
/* 自己想了一个比较复杂的dp过程,有四个状态... 然后看了一下rank1的代码.感觉智商被碾压了. 考虑对a,b在奇偶位置上进行计数 则长度为奇数的就是在同一类里面任意选两个(包括自身) 长度为偶数的就需要奇偶对应着选 */#include #include #include using namespace std;char s[100100];#define原创 2014-07-25 23:54:40 · 414 阅读 · 0 评论 -
480 C. Riding in a Lift
蛮简单的dp.原创 2014-11-03 08:24:00 · 408 阅读 · 0 评论