题面:https://www.cnblogs.com/Juve/articles/11558523.html A:Emotional Flutter 如果起点确定,那么我们后面走的点都是固定的,及mod k余数相同 如果路径中有一个%k在黑块里,那么这个起点是不可行的 然后我们可以对于所有黑块,看它限制了哪些余数 最后我们要判断的就是有没有一个长度为s的连续区间,使得它没有被限制 #include<iostream> #include<cstdio> #include<alg…
题目传送门(内部题51) 输入格式 第一行一个整数$t$表示数据组数.每组数据的第一行有三个整数$s,k,n$.第二行有$n$个整数$A_1,A_2,...,A_n$,依次表示黑白条的长度. 输出格式 若能通过输出$"TAK"$,否则输出$"NIE"$. 样例 样例输入: 22 8 72 5 6 3 2 1 22 8 41 6 7 4 样例输出: TAKNIE 数据范围与提示 样例解释: 数据范围: $30\%$的数据,$n\leqslant 1300$: $50\…
题目描述 中二少年$cenbo$幻想自己统治着$Euphoric\ Field$.由此他开始了$Endless\ Fantasy$.$Euphoric\ Field$有$n$座城市,$m$个民族.这些城市之间由$n-1$条道路连接形成了以城市$1$为根的有根树.每个城市都是某一民族的聚居地,$cenbo$知道第$i$个城市的民族是$A_i$,人数是$B_i$.为了维护稳定,$cenbo$需要知道某个区域内人数最多的民族.他向你提出$n$个询问,其中第$i$个询问是:求以$i$为根的子树内,人数最…
考试时T1没玩明白,用一个WA90把100盖住了? T1 Emotional Flutter 题目非常蠢萌,只是注意当你把黑块前伸s距离后,应把脚的长度视为0,而不应为1. T2 Endless Fantasy 题目也非常蠢萌,甚至没有需要注意的地方. T3 字符消除2 题目非常毒瘤,我还没有改过来.…
tj:我們發現,每一次走過的步長都是k,設當前走的步數是x,走到了一個白條 那麼,每一次走就是把所有黑條都向前移k位,我們可以考慮把所有黑條的左邊界不斷的向前移動k,直到下一次移動時,其左邊界小於0,則我們進行的操作實際上是把邊界模k 這樣子,我們得到的所有黑條就是介於[0,k-1]中的.當然有些黑條由於跨過了1個分界線而導致變成2個區間 最後判斷有沒有連續的長度大於等於s的區間即可,注意,整個區間是環形的,要加上最後一條黑條和第一條黑條對答案的影響 注意無解的情況:當有黑條的長度大於k或者k<…
考场 T1 一下想到了这题,将白块缩短 \(s\) 后维护类似的区间即可. T2 T3 俩计数,直接跳了. T4 的可行 \(t\) 集合相同相当与从 \(n\) 往前跳 kmp 数组,途径点相同,从前往后构造即可. 问题是可能会出现一个区间分裂成好几个(开个队列),\(k\) 很小而 \(a_i\) 很大(每次跳到块尾),然后一直调到 10.20 还过不了拍,先丢了. 写完 T2 T3 俩暴力,发现 T4 \(2\times kmp[i]<i\) 的时候中间不知道填啥,不能全填 \(0/1\)…
期望得分:55+24+53 实际得分:0+0+3 乐死 累加变量清零了吗? 打出更高的部分分暴力删了吗? 样例解释换行你看见了吗? T1 Prime 打出55分做法没删原来的暴力,结果就轻松挂55分 考场上想到根号的预处理,但是并未想到如何进行映射 正解是先预处理$[1,\sqrt R]$中的类素数,然后标记他们在$[L,R]$间的倍数 剩下的就是答案 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std…
传送门 因为一个等号挂掉了10pts 发现每个黑色段一定对应了一段不可行的出发区间 检查是否存在所有黑色段的并集的补集即可 具体来说,我们对于每个黑色段计算出一个(有的是两个)区间 \([l, r]\) ,把它们全合并,看有没有剩下的位置 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 500010 #define ll long long //#define int lo…
原版在 \(linux\) 本地写完没保存关机给没了-- 再简单写一下 \(t2\) 用 \(dp\) 转移 \(f[i]=\sum _ {j=last[a[i]]}^{i-1} f[j]\) 用前缀和优化为 \(sum[i]=sum[i-1]*2-sum[i-k-1]\) 贪心选取最后出现位置最靠左的,矩乘优化转移 \(t3\) \(f[i]=(f[i-1]+1)*p[i]+f[i-1]*t * p[i]\) 注意答案是 \(\sum f[i-1] * p[i]\) 因为这一位如果为零没贡献…
感觉自己放弃题目还是过于容易. 其实第一题不是很难,但是自己拿了一个暴力就走人了.. 然后其实简单优化一下子就有不少分数. 然后第二题的本质不同的子序列个数的方程没有推出来,如果推出来就会直接有 \(67pts\),但是自己只能用 \(2^n\) 暴力去计算. 第三题还是对期望有一些畏惧... 其实这个仔细想想方程并不难,然后这样就有很多分数,然后线段树确实不是很好写,但是基础 \(dp\) 也有很多.... prime 我们可以先筛出来 \(1\)~$ min(sqrt(r),k)$ 之间的素…
题面:https://www.cnblogs.com/Juve/articles/11733280.html smooth: 暴力强筛到7e7有60分... 正解: 维护一个队列,存所有的B-光滑数,维护B个指针, 因为所有的B-光滑数都有1,所以队列中先插1,所有指针只向1的位置 然后扫描B个指针,找出指针指向元素乘上对应质数的最小值更新队列 以B=4为例,最初所有指针只向1,然后扫描指针发现2×1最小,把2放入队列,1指针只向2 下一次扫描所有指针的结果为:4,3,5,7,其中3最小,3入队…
题目链接:http://codeforces.com/contest/1009 A. Game Shopping 题目: 题意:有n件物品,你又m个钱包,每件物品的价格为ai,每个钱包里的前为bi.你站在第一件物品前,如果你的第一个钱包能购买这件物品,你第一个钱包的钱直接消失(就相当于你是用第一个钱包里的所有钱购买了这件物品,不会找钱),如果无法购买那么就跳到下一件物品,以此类推,问你总共能购买多少件物品. 思路:直接模拟即可. 代码如下: #include <bits/stdc++.h> u…
题面:https://www.cnblogs.com/Juve/articles/11799325.html 我太蒻了只会T1T2 组合: 欧拉路板子?不会呀... 然后打了个优化,防止暴栈 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; inline int read()…
考试题. 是个DP. 50分可以通过子集枚举+线段覆盖(贪心)完成. 考试没时间写了一个子集枚举30分. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 20; int read() { char ch = getchar(); int u = 0, f = 1; while…
2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条.亮亮拿起纸条的一端,只见上面写着打开机关的方法:"打开机关需要念动符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串.在这张长纸条上列了 n 个长为 L 的字符串,正确的…
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你不要每次都把“如果”说得这么理直气壮好吧...... (心态大崩*1) 嗯咳,不和他瞎扯了,骚话一大堆,进入正题. 第一次心情大好 (因为小 H 太搞笑了啊哈),准备写比赛的题解!~ 小 H:“明明你是因为以前的比赛题解太长了才懒得写,说得这么好听......” “额呵,闭嘴!”(心态大崩*2) 嗯…
看到这个标题我想你一定会想为什么小编只发T3,T4的题解,原因有很多:1)小编也不怎么会讲:2)小编搜遍各大OJ,都没有找到可以提交的地方:3)虽然给了测试数据,小编懒得一个一个试.如果你找到了测评网址,欢迎留言. 先说T3,题目如下: C.团伙 [问题描述]    TEIAI 集团共有 n 名员工,编号为 1~n.由于长期的权力斗争,他们形成了复杂的势力网络.对于任意两名员工,他们可能是朋友,可能是敌人,也可能没什么关系.并且这种关系满足:(1)朋友的朋友是我的朋友:(2)敌人的敌人也…
首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排序之后可以通过剪枝排除无用情况(j从i+1开始枚举以及那个break)来实现$n^2$过十万的梦想 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using n…
Orz 送分比较慷慨的一道题,疯狂特判能拿不少分. 对于$a>0,b>0$的情况: 用exgcd求出方程通解,然后通过操作得到最小正整数解和最大正整数解 他们以及他们之间的解满足等差数列性质,小学数奥求项数即可 (其实就是(末项-首项)/公差+1) 其他情况特判掉或者转化为可处理情况即可(比如全负),不多说,代码里写的还是比较清晰的 //#define XR #include<cstdio> #include<iostream> #include<cstring&…
题面(加密) 不得不说这次的题除了引起单身汪极度不适之外还是出的很有水平的…… A. 很好的dp题 模型非常简单,如果数据范围足够友好的话就是一道dp入门题 30%: 我们可以设$dp[i][j]$为到第i天一共喂食给出了j块饼干的方案数 易得转移方程:$dp[i][j+k]=\sum \limits_{k=0}^{min(m-1,n-j)}{dp[i-1][j]}$,i枚举天数,j枚举已给出数量,k枚举下一步给出数量 $\sum \limits_{i=1}^{n}{dp[i][n]}$即为答案…
题面:https://www.cnblogs.com/Juve/articles/11602244.html 平均数: 第k个平均数不好求,我们考虑二分,转化成平均数小于x的有几个 虑把序列中的每个数减去 x,则我们只需求区间和小于 0 的区间数量. 我们对这个序列求前缀和,则区间[L,R]和小于 0 当且仅当 SL-1>SR, 答案即为前缀和序列 S 的逆序对数量,使用经典的归并排序即可解决 #include<iostream> #include<cstdio> #incl…
题面:https://www.cnblogs.com/Juve/articles/11523567.html 影子: 暴力方法:枚举每一对点暴力统计最小权 优化:考虑并查集,枚举每个点,如果没有被访问过,那么尝试把这两个点加到一个集合里 维护每一个点作为最小权时的树上路径的两个端点,合并时维护即可 将所有点按照权值从大到小排序,对于将当前点和与其相连的所有点依次合并到一个集合中.并查集需要维护当前集合中的最长路径长度和对应的两个端点.在合并两个集合后,最终集合的最长路一定只有两类情况:一类是其中…
题目描述 有一块矩形土地被划分成 \(\small n×m\) 个正方形小块.这些小块高低不平,每一小块都有自己的高度.水流可以由任意一块地流向周围四个方向的四块地中,但是不能直接流入对角相连的小块中. 一场大雨后,由于地势高低不同,许多地方都积存了不少降水.假如你已经知道这块土地的详细信息,你能求出每个小块的积水高度吗? 注意:假设矩形地外围的高度为 \(\small 0\) . \(\small1\leq n,m\leq 300 ,-10^9\leq h\leq 10^9\) solutio…
打开题面,T3似乎被换过了.(那我就更有理由直接弃掉了) T1是我最害怕的乱搞题,赶紧扔了看T2.发现是个sb板子?雨天的尾巴弱化版? 然而线段树合并早忘干净了(最近几道可以线段树合并的题都是用别的方法做的QAQ).yy了半天尝试码了一下发现完美爆炸,内心慌的一批,不停在想这水题现在得有多少多少人切了. 出去上了个厕所,期间被原先的同学抓住问了几句,回来感觉心态稍好.很快搞出一个$O(n^2\ log\ n)$的做法调了出来,感觉数据范围刚好不会被卡.然后开始肝T1,尝试了各种奇特办法都以码力不…
思路接近正解?都想到了?这都是借口呀. 没有用的,往前走吧. T1:Emotional Flutter 我的做法和题解不太一样,我把s放在最后考虑了. 因为出发以后步幅是一样的,所以每一个黑条可以ban掉一段出发点.把黑条的左右边界%k存成区间,每个黑条可以存一个或者两个区间[跨越k这个边界].然后像以前写区间覆盖的贪心一样按左端点排序,看看有没有长至少为s的空余. 代码: #include<iostream> #include<cstdio> #include<cstrin…
noip模拟44 solutions 这一场抱零的也忒多了,我也只有45pts 据说好像是把几套题里面最难的收拾出来让我们考得 好惨烈啊,这次的考试我只有第一题骗了40pts,其他都抱零了 T1 Emotional Flutter 这个我直接用线段树维护解集, 这样的,你不能踩到每一个黑块,所以每一个黑块都对应着一个不踩他的范围 我们用线段树维护这些范围的交集,因为值域有点大所以炸了 40pts #include<bits/stdc++.h> using namespace std; #def…
比较惊人的排行榜 更不用说爆零的人数了,为什么联赛会这么难!!害怕了 还要再努力鸭 T1 Emotional Flutter 考场上没切掉的神仙题 考率如何贪心,我们把黑色的条延长$s$,白色的缩短$s$,这样把$jiao$的长度变成一 方便做,然后如果黑条长度大于$k$显然不合法,直接判出 然后考虑将黑条左右范围对$k$取模,然后发现这个答案和起始的位置有一一对应的关系 但是他并不是恰好对应的,即起始点是$0$的时候取模对应的值是$7$,这样我感觉很麻烦 于是将黑条的起始点移动到$k-1$,这…
T1 emotional flutter 把脚长合到黑条中. 每个黑条可以映射到统一区间,实际操作就是左右端点取模.长度大于$k$时显然不合法. 然后检查一遍区间内有没有不被黑条覆盖的点即可. 区间端点处理属实$ex$ $code:$ 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 5 namespace IO{ 6 inline int read(){ 7 int x=0,f=1; char…
A. Emotional Flutter 直接将所有黑块平移到 \([1-k,0]\) 的区间即可,然后找有没有没被覆盖过的整点 注意特判 \(1-k\) 以及 \(0\) 的可行性,考场这里写挂成 \(10\) 分 B. Medium Counting 设 \(f[i][j][pos][c]\) 表示第 \(i\) 个到第 \(j\) 个字符串考虑从 \(pos\) 开始的后缀,且第 \(pos\) 位至少填 \(c\) 的方案数 \(f[i][j][pos][c]+=f[i][j][pos]…
这个真的是一个 \(nb\) 题. 考试快要结束的时候,在机房中只能听到此起彼伏的撕吼. 啊---------- 然后人们预测这自己的得分. \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}\) \(\color{red}{\huge{0}}…