题目地址:https://codeforces.com/contest/1136 A: Nastya Is Reading a Book 题解:挨个判断即可,水题. 参考代码: #include<bits/stdc++.h> using namespace std; ],r[],k; int main() { scanf("%d",&n); ;i<=n;++i) scanf("%d%d",&l[i],&r[i]); scan…
刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作,还有题是问了学长才会的,自己真的是太菜了! 题目链接:http://codeforces.com/contest/879/problem/C 题目: 题意:对于任意的一个数x,进行题目给的n种位运算,得到一个新数y,然后让你进行压缩,只进行k次位运算操作(0<=k<=5),也能将x变成y,y的范围…
论蒟蒻如何被cf虐 以下是身败名裂后的题解菌=========== Div1 A.Watchmen 有n个点,每个点有一个坐标.求曼哈顿距离=欧几里得距离的点对数量. 只需要统计x或y一样的点对数量.容斥即可.注意long long.(sad story //By zzq #include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <s…
题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过来:所以如果二分了答案为 f ,可以认为合法的房间是除了前 f 个和后 f 个的剩下的房间. 但边缘房间自己能满足时也不用专门往中间跑,但一旦要跑,方向一定是向中间的:所以可以用指针判断: 可以认为 f 是合法房间的一个界限:指针走的时候累计一下已经有多少人,当又满足一个房间时,如果指针在界限 f…
目录 题目大意 做法 代码 不想写昨天晚上cf的比赛题目所以来写题解摸摸鱼 题目大意 有一个在长度为\(k\)的正整数序列\(b\)上进行的游戏,一开始一个棋子放在位置\(1\),假如当前棋子的位置为\(x\),你可以做如下两种操作: 给\(b_x\)减少\(1\),要求操作后\(b_x\)还是正整数 把棋子移动到\([x+1,\min(x+m,k)]\) 无法操作的人就输了.现在两个人轮流做游戏,你要判断先手还是后手胜利. 给你一个长度为\(n\)的序列\(a\),你要支持如下两种操作: 区间…
Day -1 2019.1.2 初步计划: 0x60 图论 std 洛谷提高剩余练习 NOIP2018遗留题解 洛谷省选基础练习 数学: 1.数论 2.组合数学(练习:莫比乌斯反演) 3.概率(练习:概率期望) 4.计算几何 5.函数(CF1096G题解) 洛谷省选高级数据结构练习: 1.单调队列 2.点分治 3.主席树 4.平衡树 5.树链剖分 6.动态树 7.树套树 8.莫队算法 9.分块 Day 0 2019.1.3 复习最短路+最小生成树 std×10 明天计划:树的直径与最近共同祖先+…
貌似开坑还挺好玩的...开一个来玩玩=v=... 正好自己dp不是很熟悉,就开个坑来练练吧...先练个50题?小目标... 好像有点多啊QAQ 既然是开坑,之前写的都不要了! 50/50 1.洛谷P3399 丝绸之路 简单的线性dp 点我看题 因为是开坑所以题意就不讲了,自己看题吧,一些题意比较迷的会讲一下. 这题其实还挺简单的. 设 f[i,j] 表示到第 i 个城市用了 j 天所需要的最小疲劳值. 很快dp方程就出来了.  f[i,j]=min(f[i,j-1],f[i-1,j-1]+d[i…
题目描述: 有一个oier,他有n个算法技能,每个技能有一个水平值,每个技能的水平上限都是A,设这个oier有cnt个技能达到了A, 设所有水平值的最小值为mi,那么这个oier的战斗力为cnt×Cf+mi×Cm,现在这个oier准备去提升自己的技能,他有m次提升的机会,每次提升可以选择某一个技能给水平值加1,如何分配这些提升的机会,来使得自己的战斗力总值最大? 输入格式: 第一行输入5个整数,n,A,Cf,Cm,m 第二行输入n个整数,表示每个技能的水平值 输出格式: 输出最大战斗力值 样例输…
[CF613D]Kingdom and its Cities(虚树,动态规划) 题面 洛谷 CF 翻译洛谷上有啦 题解 每次构建虚树,首先特判无解,也就是关键点中存在父子关系. 考虑\(dp\),设\(f[i]\)表示解决\(i\)子树以内的最小点数 再用一个数组\(g[i]\)表示\(i\)的子树中还未阻断的点数 \(f[u]=\sum f[v],g[u]=\sum g[v]\) 考虑转移, 如果\(u\)不是关键点,并且\(v>1\) 那么,当前点必须放置,\(f[u]+=1,g[u]=0\…
cf 559C 考虑到黑色的格子很少,那么我把(1,1)变成黑色,然后按每个黑色格子接近终点的程度排序,计算黑色格子不经过另一个黑色格子到达终点的方案,对于当前的格子,要减去在它右下角的所有方案数(注意不是f值) #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> usin…