[USACO18JAN]Sprinklers】的更多相关文章

[USACO18JAN]Sprinklers 一个矩形要符合什么条件 右上角的右上有点,左下角的左下有点 所以每列的选择高度为一个区间,小于后缀最大值大于前缀最小值(不管是作为右上角还是左下角) 然后对于一个: 求完全在这个区域里的矩形个数 从上往下考虑,处理左下角在这一行,右上角在上面的方案数 发现每行的点对于之后的贡献分别是0+1+2+3... 全局变量tot维护决策点个数 删除的时候注意删除对应决策点即可. // luogu-judger-enable-o2 #include<bits/s…
[LG4185][USACO18JAN]MooTube 题面 洛谷 题解 先将所有操作和询问离线 然后按照边权从大到小将操作和询问排序 利用\(two\;pointers\),每次扫到一个询问,将边权大于等于它的边的两点全部都并起来 因为边权大的满足,那么边权小的一定也能满足 对于每个询问,直接查它联通块的\(size\)即可 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <…
P4186 [USACO18JAN]Cow at Large G(树形DP) Luogu4186 设dp[i]表示i点需要放多少个农民.则有 \(if(near[i]-dep[i]<=dep[i]-1)\ dp[i]=1;\) \(else\ dp[i]=\sum dp[son[i]]\) AC代码…
P4181 [USACO18JAN]Rental Service 题意翻译 farmer john有N(1≤N≤100,000)头牛,他想赚跟多的钱,所以他准备买牛奶和出租牛.有M(1≤M≤100,000 )家商店想买牛奶,每家商店的进货价不同.有R(1≤R≤100,000 )户邻居想租牛,每户人家的租价不同. 问他最多能赚多少钱. 输入:输入的第1行包含n,m,r三个整数.紧接着的n行每一行有1个整数Ci (1≤Ci≤1,000,000),表示第i头牛产出Ci加仑奶.再下面的m行每行有两个整数…
题面:[USACO18JAN]MooTube 题解: 对边和询问都排序,然后每次把符合当前要求的边都扔并查集里,对于每个询问判断当前并查集里节点数即可. 我很无聊地给并查集加了按秩排序,还开了O2,加了快读,也才170ms,虽然在第一面,然鹅还是没有办法排太前. 上述操作都不做也行 代码: #include<cstdio> #include<algorithm> using namespace std; inline int rd(){ ; char c=getchar(); ')…
传送门 首先考虑N^2做法,每次从一个点出发,如果到达一个点,然后到达这个点的时间\(\le\)离这个点最近的叶子距离\(di_x\),那么答案+1,否则继续找点 这个暴力很不好优化.可以这样认为,如果某个点贡献答案,那么子树里的点也要贡献答案(某个点走不下去,那么走子树内的点也走不下去,也符合条件),不过一个子树一共只贡献1.可以发现一个子树度数和\(\sum deg_i\),加上1为子树大小*2,即\(\sum 2-deg_i=1\),所以单次询问的答案就是所有符合条件的点的\(2-deg_…
Description: Bessie想拿\(M\) 种颜色的长为\(K\) 的图章涂一个长为\(N\) 的迷之画布.假设他选择涂一段区间,则这段区间长度必须为\(K\) ,且涂完后该区间颜色全变成图章颜色.他可以随便涂,但是最后必须把画布画满.问能有多少种最终状态,\(N\leq 10^6,M\leq 10^6,K\leq 10^6\) Solution: 好题 告诉我了思维僵化是多么可怕 想了各种排列组合 最后看到正解直接傻逼 正着做非常不可做 考虑补集转化,求任意一段相同颜色长度都小于k的…
Description: 贝茜被农民们逼进了一个偏僻的农场.农场可视为一棵有 \(N\) 个结点的树,结点分别编号为 \(1,2,\ldots, N\) .每个叶子结点都是出入口.开始时,每个出入口都可以放一个农民(也可以不放).每个时刻,贝茜和农民都可以移动到相邻的一个结点.如果某一时刻农民与贝茜相遇了(在边上或点上均算),则贝茜将被抓住.抓捕过程中,农民们与贝茜均知道对方在哪个结点. Hint: \(n \le 7*10^4\) Solution: 很有趣的题 题解大多是点分治做法 但是由于…
显然可以先把被覆盖掉的区间去掉,然后排个序,左.右端点就都是单调的 设f[i][j]表示前i个区间中删掉j个,而且钦定i不能删的最大覆盖长度 (如果不钦定,就要有一个删掉的状态,那我无法确定前面的到底到哪是没删的) 那么有$f[i][j]=max\{f[k][j-(i-k-1)]+R[i]-max(L[i],R[k])\} ,k<i$ 稍微理解一下:k是我们下一次钦定要选的,中间的区间就都扔掉,然后有两种情况:k和i重合或不重合,那新增加一个i区间多覆盖的长度就要从i的左端点和k的右端点挑一个较…
可以发现,只要存在连续k个相同的,这个情况就一定是合法情况 然而这个不太好算,我们算不存在k个相同的,然后用$m^n$把它减掉 设f[i]为前i个,没有连续k个的 显然$f[i]=m^i ,i<K$ 然后我们现在想把f[i]转移过来,只要取f[i-k+1]..f[i-1]的所有情况,然后在每个的后面都涂上与这种情况的最后一个颜色不相同的颜色就可以了.容(bu)易(hui)证明这样做是不重不漏的 所以$f[i]=(M-1)\sum_{j=i-K+1}^{i-1}f[j]$ #include<bi…
我们要出租的话,一定是出租产奶量最少的牛 那我们就看出租多少头牛(其他的卖奶)的时候答案最大就可以了. (注意N有可能小于R) #include<bits/stdc++.h> #define ll long long #define pa pair<int,int> using namespace std; ; inline ll rd(){ ll x=;char c=getchar(); ') c=getchar(); +c-',c=getchar(); return x; }…
类似于NOI2018d1t1的离线做法,把询问存下来,排个序,然后倒着给并查集加边,每次询问并查集联通块大小 #include<bits/stdc++.h> #define ll long long #define pa pair<int,int> using namespace std; ; inline ll rd(){ ll x=;char c=getchar(); ') c=getchar(); +c-',c=getchar(); return x; } struct Ed…
传送门 其实本来想做组合数学的2333. 谁知道是道dpdpdp. 唉只能顺手做了 还是用真难则反的思想. 这题我们倒着考虑,只需要求出不合法方案数就行了. 这个显然是随便dpdpdp的. f[i]f[i]f[i]表示到第iii个格子不合法的方案数. 那么有两种情况. i<ki<ki<k,则无论怎么当前格子染都不合法,f[i]=f[i−1]∗mf[i]=f[i-1]*mf[i]=f[i−1]∗m i≥ki\geq ki≥k,则从当前的格子向左染最多染到第i−k+1i-k+1i−k+1个格…
思路是覆盖子树,我们发现,农民想截住牛的最优策略是不断向上来尽可能地覆盖更大的子树 我们想要尽早地覆盖一个子树,一个显然的贪心是在这个子树中选取深度最小的一个放农民 如果我们在一个点放置了农民,那么其他点也会被覆盖,所有这个农民能够覆盖的叶子都不需要再放农民了 抽象出来,对于每个叶节点,都有一个深度,我们把叶节点按深度排序,然后每次选取深度最浅的点打标记,然后枚举每个点,把这个点能覆盖的点全部删去 那么我们怎样支持这样一种操作呢,我们可以用一个$set$,每次取出$s.begin$,考虑它是否能…
题意 给定 \(n\) 个区间,必须去掉其中的 \(K\) 个,询问能够保留的区间并的最大值. \(n \leq 10^5\ ,K \leq 100\) . 分析 定义状态 \(f_{i,j}\) 表示前 \(i\) 个区间中去掉了 \(j\) 个且强制选 \(i\),最多能够得到多大的区间并. 转移比较显然: \(f_{i,j}=\max_{k=i-j-1}^{i-1}\{f_{k,j-(i-k-1)}+val(k,i)\}\) , \(val(k,i)\) 表示 \(i\) 不和 \(k\)…
题目链接: 传送门 题意: 给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值. Q次询问K,V,询问到V距离>=K的点有多少(不含V) 呃呃呃呃考试的时候直奔了T3,结果公式推挂了(..)最后5min回来搞T1,看出了正解然而手速跟不上-- 分析: 把所有的询问先离线下来存在一个结构体里并记录顺序(以便输出),然后分别把边和询问按w和k从大到小排序 用一个循环扫询问,每次询问把大于等于ask[i].k的边加进并查集并更新总和,最后按顺序排回来输出 具体的操作都在代码里 代码: #in…
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; typedef long long LL; ; int read() { ,f=;char ch=getchar(); ;ch=getchar();} +ch-';ch=getch…
题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量 带权并查集维护集合内元素总数 路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的边,并查集维护连通性,求集合元素内总数即可 #include <bits/stdc++.h> #define N 200100 #define inf 0x3f3f3f3f using namespace std; int n,q,cnt; int fa[N],f[N]; struct EDGE{…
题目大意:有一只狐狸从给定的S点开始逃跑(出发),向叶节点移动以逃离这棵树,叶节点可能出现农民去抓捕狐狸,当农民和狐狸出现在同一个节点的时候,狐狸会被抓住,农民和狐狸移动速度相同,求抓捕狐狸所需要的最少农民数 显然,当 u 节点的子树内存在一叶节点 i 满足deep[i]-deep[u]<=deep[u]时,说明 u 的子树能被守住 即农民从 i 移动到 u 所需要的时间小于等于狐狸从出发点移动到 u 的时间 第一遍dfs预处理出每个节点的深度dep,以及每个节点的子树内深度最小的叶节点的深度m…
扫描线裸题没什么好说的 注意空间不要开小了!!! #include <cstdio> #include <cstring> #include <algorithm> #define N 100100 #define ll long long using namespace std; int n,ctx; ]; ll a[N<<],sum[N<<]; struct node{ ll l,r; int la,ra; }sc[N<<]; v…
题目链接 Bzoj崩了之后在洛谷偶然找到的点分好题! 在暴力的角度来说,如果我们$O(n)$枚举根节点,有没有办法在$O(n)$的时间内找到答案呢? 此时如果用树形$dp$的想法,发现是可做的,因为可以推得以下的结论: 设$x$为根节点,$d[i]$为$i$节点到$x$的距离(即深度),$g[i]$为$i$节点到最近的出入口(即叶子节点)的距离,$ans_{x}$为以$x$为根节点时的答案. 如果$d[i] \geq g[i]$,则我们可以确定,以$i$为子树,对于$x$为根时的答案贡献为$1$…
原文链接:https://blog.csdn.net/Patrickpwq/article/details/86656456 给定一棵n个点的树(n=1e5),有边权, 两点间距离定义为两点路径上的 边权最小值.m个询问(m=1e5),k,v, 询问对于点v,距离>=k的点有多少个(不含v) Inputn个点,m个询问下面n-1行为边的信息下面m行ki和vi Output Sample Input7 41 2 21 3 13 4 63 5 52 6 42 7 32 14 36 510 7Samp…
洛谷题面传送门 点分治 hot tea. 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献.我们考虑以 \(u\) 为根对整棵树进行一遍 DFS.那么对于一个点 \(v\),我们记其 \(mn_v\) 为其子树内距离其最近的叶子,\(dep_v\) 为 \(u\) 到 \(v\) 的距离,那么如果 \(mn_v\ge dep_v\),那么对于任何一个 \(v\) 子树内的叶子 \(w\),如果 Bessie 选择从 \(w\) 逃出且我们在距离 \(v\) 最近的叶子处…
http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=358 The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 136 - The 2014 ACM-ICPC Asia Mudanjiang Regional Contest Solved ID Title Ratio (AC/All) Yes A Average Score 61.78% (456/738) Yes…
A  Average Score http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5373 a班有n个人,b班有m个人,bob在a班,现在知道除了bob以外的所有人的成绩,还知道bob如果从a班转到b班,两个班的平均成绩都会提高,问bob合法的成绩区间. 解法,求一下两个班的平均成绩,bob的成绩肯定要比a班的小,比b班的大. #include<cstdio> int main(){ int t,n,m,x,sa,sb; w…
Dividing the Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2858   Accepted: 1064 Description Farmer John's cows have discovered that the clover growing along the ridge of the hill in his field is particularly good. To keep the clo…
Problem E Watering Grass Input: standard input Output: standard output Time Limit: 3 seconds n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed at the horizontal center line of the s…
The winter is coming and all the experts are warning that it will be the coldest one in the last hundred years. Freddy needs to make sure that his garden does not sustain any damage. One of the most important tasks is to make sure that no water remai…
用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理,就形成了最简单的用例.一个无状态session可以经过一个函数,然后返回一些结果.无状态session的用例都具有但不限于如下功能: 校验 此人是否有资格申请抵押贷款 计算 计算抵押溢价 路由和过滤 将传入的邮件(如电子邮件)过滤到文件夹中 将传入的消息发送到目的地 让我们从一个简单的例子开始,使…
UVa 10382 - Watering Grass n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed at the horizontal center line of the strip. For each sprinkler we are given its position as the distance…