A.mootube(离线+并查集)
给定一棵n个点的树(n=1e5),有边权,两点间距离定义为两点路径上的边权最小值。m个询问(m=1e5),k,v,询问对于点v,距离>=k的点有多少个(不含v)离线+并查集,按k从大到小做,此时与v连通的所有点均为答案。
我已经菜到想不出这种题了qaq

B.lifeguards(树+贪心)
给定一棵有根树,wrx一开始在根,每个叶子节点都是出口,你可以在每个出口放一个守卫,每一单位时间内,wrx和守卫都可以移动到相邻的一个点,如果某一时刻守卫与wrx相遇了(在边上或点上均算),则wrx将被抓住。问你为了保证抓住wrx,最少需要几个守卫。显然最多叶子结点个数个,每个守卫每次都往他的父亲走是最优的。对于每个点i我们预处理出mn[i],表示i的子树中距i最近的叶子节点距i的距离。显然如果mn[i]<=dep[i],则i的子树均可以用这一个守卫守住,否则要去下面用更多的守卫。算一下答案即可。

C.spainting(计数dp)
一共有n个格子,m种颜色,你每次可以把连续K个格子涂成一种颜色。问你最后有多少种涂色结果。(不能留有空白格子)
我们考虑怎样的结果序列是合法的,显然必须有一段长度为k的连续区间为同一颜色,因为你最后一下肯定要刷k个相同。我们可以发现,只要满足有这么一段就都是合法方案。因此我们就是要统计至少有一段k个相同的数的序列个数。我们发现求它的补集更好求,即没有一段k个相同的数的序列个数。
那么答案就是总方案数m^n-补集方案数。(我就是这点没想到,gg了!)
那么这个就比较好求了,我们可以dp。
dp[i],表示i个格子的方案数,则i< k时,显然有dp[i]=midp[i]=m^i,
i>=k时,我们可以通过枚举最后一段相同颜色的长度j(显然是1~k-1的)来转移即可,有
dp[i]=∑j=1k−1dp[i−j]∗(m−1)。dp[i]=\sum\limits_{j=1}^{k-1}dp[i-j]*(m-1)。
然后后缀和优化一下就是O(n)的了。

A

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 100010
#define ll long long
#define inf 0x3f3f3f3f
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,fa[N],ans[N],sz[N];
struct Edge{int x,y,val;
}e[N];
struct qu{int x,val,id;
}q[N];
inline bool cmp(Edge a,Edge b){return a.val>b.val;}
inline bool cmp1(qu a,qu b){return a.val>b.val;}
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
inline void merge(int x,int y){int xx=find(x),yy=find(y);fa[xx]=yy;sz[yy]+=sz[xx];
}
int main(){freopen("mootube.in","r",stdin);freopen("mootube.out","w",stdout);n=read();m=read();for(int i=1;i<n;++i) e[i].x=read(),e[i].y=read(),e[i].val=read();sort(e+1,e+n,cmp);for(int i=1;i<=n;++i) fa[i]=i,sz[i]=1;for(int i=1;i<=m;++i) q[i].val=read(),q[i].x=read(),q[i].id=i;sort(q+1,q+m+1,cmp1);int num=1;for(int i=1;i<=m;++i){while(num<n&&e[num].val>=q[i].val) merge(e[num].x,e[num].y),++num;ans[q[i].id]=sz[find(q[i].x)]-1;}for(int i=1;i<=m;++i) printf("%d\n",ans[i]);return 0;
}

B

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 100010
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,rt,h[N],num=0,fa[N],dep[N],mn[N],ans=0;
struct edge{int to,next;
}data[N<<1];
inline void dfs(int x){int son=0;for(int i=h[x];i;i=data[i].next){int y=data[i].to;if(y==fa[x]) continue;son++;fa[y]=x;dep[y]=dep[x]+1;dfs(y);mn[x]=min(mn[x],mn[y]+1);}if(!son) mn[x]=0;
}
inline void calc(int x){if(mn[x]<=dep[x]){ans++;return;}for(int i=h[x];i;i=data[i].next){int y=data[i].to;if(y==fa[x]) continue;calc(y);}
}
int main(){freopen("atlarge.in","r",stdin);freopen("atlarge.out","w",stdout);n=read();rt=read();memset(mn,inf,sizeof(mn));for(int i=1;i<n;++i){int x=read(),y=read();data[++num].to=y;data[num].next=h[x];h[x]=num;data[++num].to=x;data[num].next=h[y];h[y]=num;}dfs(rt);calc(rt);printf("%d\n",ans);return 0;
}

C

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1000010
#define ll long long
#define inf 0x3f3f3f3f
#define mod 1000000007
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,k,dp[N],sum=0;
inline int ksm(int x,int k){int res=1;for(;k;k>>=1,x=(ll)x*x%mod)if(k&1) res=(ll)res*x%mod;return res;
}
int main(){freopen("spainting.in","r",stdin);freopen("spainting.out","w",stdout);n=read();m=read();k=read();dp[0]=1;for(int i=1;i<k;++i) dp[i]=(ll)dp[i-1]*m%mod,sum=(sum+dp[i])%mod;for(int i=k;i<=n;++i){dp[i]=(ll)sum*(m-1)%mod;sum+=dp[i]-dp[i-k+1];if(sum<0) sum+=mod;sum%=mod;}int ans=ksm(m,n)-dp[n];if(ans<0) ans+=mod;printf("%d\n",ans);return 0;
}

USACO2018JAN Gold相关推荐

  1. Gold Code,Gold Sequence

    Gold Code Gold Code是以Robert Gold的名字命名的.它是一组特殊的二进制随机(伪随机)序列,其中成员序列之间的相关性很小.由于这种特性(较小的相关性),它被广泛地用作各种无线 ...

  2. P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希)

    P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希) 洛谷上这道水题丧心病狂地把数据范围加到了500000 普通的做法肯定A不了了, ...

  3. 酷冷至尊官方psu计算工具_静静的挺你10年:酷冷至尊V650 GOLD全模组电源体验

    装机糟坑多,菜鸟需谨慎.为了节省整机成本,把电源功率卡到满载线,或者只迷信标称功率值,忽视电源转换效率和做工用料,是装机初学者常犯的错误,笔点君就曾遭遇过劣质电源BOOM掉的悲惨经历.要知道,电源是一 ...

  4. 带你全面了解比特黄金(bitcoin gold)分叉

    比特币基于的区块链技术,每一笔交易都被存储在区块中,而区块的大小在初始时候固定在1M大小,而每笔交易的大小则为4k,比特币区块链每十分钟产生一个新块,那么这就以为着每秒只能处理3条交易记录,这在比特币 ...

  5. WUTOJ 1284: Gold Medal(Java)

    1284: Gold Medal 题目   有N个砝码,重量为:3i-1(1<=i<=N),有一块重量为 W 的金牌.现在将金牌放在天平的左边.你需要将砝码放在左边或右边使得天平平衡,如果 ...

  6. CodeForces - 1535E Gold Transfer(树上倍增+交互)

    题目链接:点击查看 题目大意:给出一棵初始时只有一个点的树,每个点都有两个值:ai,cia_i,c_iai​,ci​,分别代表黄金的个数和单价.需要执行 mmm 次操作,每次操作分为两种类型: 1pi ...

  7. 0-1背包问题 题目:国王和金矿问题 描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人。每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不同为一维

    题目四:0-1背包问题 题目:国王和金矿问题 描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人.每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不 ...

  8. 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列

    1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 510   ...

  9. xbox可以录视频声音吗_什么是Xbox Live Gold,它值得吗?

    xbox可以录视频声音吗 If you have an Xbox One or Xbox 360, Microsoft's Xbox Live Gold service is required to ...

最新文章

  1. 博弈最高位POJ 1704(Georgia and Bob-Nim博弈)
  2. 10件5G能实现但4G不能做的事情
  3. Cocos Creator中按钮组件数组的使用
  4. SqlServer之OutPut
  5. input输入框自动去除空格
  6. 分享15款堪称神器却鲜为人知的软件和网站
  7. 从零开始 DIY 智能家居 - 基于 ESP32 的智能语音合成播报模块
  8. 电容触摸按键实验(STM32F407)
  9. spyder配置python_快速了解Python开发环境Spyder
  10. 世界品牌新500强揭晓 中国移动央视海尔入前百名
  11. python切片原理_彻底理解Python list切片原理
  12. Pangu Separates Heaven and Earth(签到题)
  13. 【打表枚举+二分】喜爱
  14. 【1945. 字符串转化后的各位数字之和】
  15. 微信支付网页授权域名只能填1个,怎么破,教你一招搞定
  16. 《中国古代文化常识》读书笔记
  17. 联想笔记本进入pe_lenovo怎么进入pe系统?
  18. 根据某一字段值相同合并字符串
  19. JAVA Calendar详解
  20. 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式

热门文章

  1. JSP 返回上一页的几种方法
  2. html5以图片为背景的代码,HTML5画布背景图片
  3. Linux命令详解-hwclock
  4. java 版本区别,java SE是什么,下载JDK时各个名称的含义
  5. 使用Feign实现Form表单提交
  6. 每月自评之四:2013年4月
  7. U盘中的文件夹都变成了.exe文件
  8. java区分输入的字母是元音字母还是辅音字母
  9. PLC控制电动机的顺序启动逆序停止
  10. MySQL数据库篇---对数据库,数据库中表,数据库中表的记录进行添修删查操作---保姆级教程