NOIp2018集训test-10-18 (bike day4)
这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了。
这几天的题换做llj、sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他们的差距真的是非常非常大,dcoier跟其他学校的大佬的差距更是如此。我不知道我之前没有自知之明的时候对自己的定义是怎么样的,但是现在我发现我大概真的是一个堪堪noip一等奖水平的选手。
已经不知道该怎么办了,我甚至很想自暴自弃地大喊,我已经凉了!!dcoi没有救的!!每一届每一届地下去都会凉透的!!
B 君的第一题 (changchun)
这是一道讲过的数学题,然而我实在太菜并不记得怎么做。
然后写了个树dp,似乎递归爆栈了只有90。f[x][0]表示x的子树中与x不相连的联通块个数的期望,f[x][1]表示与x相连的联通块个数的期望,也就是有点和x相连的概率,就可以转移了。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,p=;
typedef long long LL;
typedef double db;
using namespace std;
int n;
LL pr[N],inv=; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ecnt,fir[N],nxt[N<<],to[N<<];
void add(int u,int v) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v;
nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u;
} LL f[N][],son[N];
void dfs(int x,int fa) {
son[x]=;
for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) {
int y=to[i];
son[x]++;
dfs(y,x);
f[x][]=(f[x][]+(f[y][]+f[y][]*inv%p)%p)%p;
}
f[x][]=(pr[n]-pr[n-son[x]]+p)%p;
} #define ANS
int main() {
#ifdef ANS
freopen("changchun.in","r",stdin);
freopen("changchun.out","w",stdout);
#endif
read(n);
pr[]=;
For(i,,n) pr[i]=pr[i-]*%p;
For(i,,n) {
int x,y;
read(x); read(y);
add(x,y);
}
dfs(,);
printf("%lld\n",(f[][]+f[][])%p);
Formylove;
}
树dp
正解:
考虑点的联通块怎么算,树中砍掉k条边就形成k+1个联通块,每条边被砍的概率是1/2,那么砍掉边的期望就是(n-1)/2,形成联通块的期望就是(n-1)/2+1
然后边的联通块就减去单独一个点形成的联通块的个数的期望即可。
单独点的联通块个数的期望等于每个点形成的单独联通块的个数期望之和,即每个点成为单独联通块的概率之和。llj切这题似乎只需要3min。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,p=;
typedef long long LL;
typedef double db;
using namespace std;
int n,in[N];
LL pr[N],ans; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL mo(LL x) { return x<?x+p:(x>=p?x-p:x); } #define ANS
int main() {
#ifdef ANS
freopen("changchun.in","r",stdin);
freopen("changchun.out","w",stdout);
#endif
read(n);
pr[]=;
For(i,,n) pr[i]=mo(pr[i-]*);
For(i,,n) {
int x,y;
read(x); read(y);
in[x]++; in[y]++;
}
ans=((LL)n+)*pr[n-]%p;
For(i,,n)
ans=mo(ans-pr[n-in[i]]);
printf("%lld\n",ans);
Formylove;
}
B 君的第二题 (harbin)
除了菜菜菜菜菜菜我不知道还能说些什么。
弱智都知道的70pt做法就是随便拿个啥子数据结构模拟,我不想打平衡树又忘了树状数组求第k大怎么打,在那里打印了一个树状数组现场研究,还写挂了一次。
正解是,考虑每个人是第几轮被踢出去的,O(n)地dp这个东西,然后基数排序即可。。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,mod=1e9+;
typedef long long LL;
typedef double db;
using namespace std;
int T,n,k,pr[N],f[N],c[N],sa[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int p[N],bo[N];
void get_prime() {
For(i,,) {
if(!bo[i]) p[++p[]]=i;
for(int j=;j<=p[]&&p[j]*i<=;j++) {
bo[i*p[j]]=;
if(i%p[j]==) break;
}
}
} void pre() {
int l=,r=p[],rs=;
while(l<=r) {
int mid=((l+r)>>);
if(p[mid]>=n) rs=mid,r=mid-;
else l=mid+;
}
int P=p[rs];
pr[]=;
For(i,,n) pr[i]=(LL)pr[i-]*P%mod;
} LL mo(LL x) { return x>=mod?x-mod:x; } #define ANS
int main() {
#ifdef ANS
freopen("harbin.in","r",stdin);
freopen("harbin.out","w",stdout);
#endif
pr[]=;
For(i,,) pr[i]=pr[i-]*;
get_prime();
read(T);
while(T--) {
read(n); read(k);
pre();
For(i,,n-) {
if(i%k==) f[i]=;
else f[i]=f[i-(i/k+)]+;
c[f[i]]++;
}
For(i,,n-) c[i]+=c[i-];
Rep(i,n-,) sa[--c[f[i]]]=i;
LL ans=;
For(i,,n-)
ans=mo(ans+(LL)sa[i]*pr[i]%mod);
printf("%lld\n",ans);
if(T) memset(c,,sizeof(c));
}
Formylove;
}
B 君的第三题 (shenyang)
一个很弱智的状压dp,然而我当时竟然觉得一个质数跟自己互质,然后说这是什么沙比题随便搜一下就差不多了吧写了个迭代加深。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,up=;
typedef long long LL;
typedef double db;
using namespace std;
int p[]={,,,,,,,,,,,,,,,};
int n,a[N],ans,f[N][up+]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int get(int x) {
int rs=;
For(i,,) if(x%p[i]==)
rs|=(<<i);
return rs;
} #define ANS
int main() {
#ifdef ANS
freopen("shenyang.in","r",stdin);
freopen("shenyang.out","w",stdout);
#endif
read(n);
For(i,,n) read(a[i]);
memset(f,/,sizeof(f));
f[][]=;
ans=n*;
For(i,,n) {
For(x,,) {
int now=get(x),S=(now^up);
for(int s=S;;s=((s-)&S)) {
f[i][s|now]=min(f[i][s|now],f[i-][s]+abs(x-a[i]));
if(!s) break;
}
}
if(i==n) For(s,,up) ans=min(ans,f[i][s]);
}
printf("%d\n",ans);
Formylove;
}
NOIp2018集训test-10-18 (bike day4)的更多相关文章
- [NOIP2018模拟赛10.18]自闭报告
闲扯 这一天,菜鸡RyeCatcher又想起来了被毒瘤题支配的恐惧 今天比较好玩,还是ljy提醒才发现文件夹里有题面...不知道外面的人什么时候才发现 看完了题面,又回到了雅礼啥题也不会写的感觉 T1 ...
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue
[源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...
- 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.
Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...
- [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现
题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4 4 18 = 10 + 8 4 + 4 32 = 18 + 14 ...
- Java的课后作业——18.10.18
日期:2018.10.18 星期四 博客期:020 小试验任务: 我就发一下代码好了!!! package test1; import java.util.Scanner; public class ...
- First Scrum Meeting (2015/10/18)
会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...
- 对于最近的一些日常总结by520(17.10.18)
---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...
- NOIP2018 集训(二)
A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...
随机推荐
- TP框架的增删改
TP添加数据有三种方式 1. //1.使用数组添加 $n = M("nation"); $arr = array("Code"=>"n007&q ...
- Java程序发送邮件
之前上网有看到过别人总结的使用java程序发送邮件,于是自己下来练习,把自己学习的一些心得总结出来. 首先我们这里需要采用两个jar包: 需要的朋友可以自行上网去CSDN类似的网站上面找 顺便把自己测 ...
- 低秩近似 low-rank approximation
- javascript中apply和call的区别
请补充 136页 pdf 高级javascript设计
- 用VirtualBox和vagrant在win7×64上搭建ruby on rails 开发环境
下载准备 1.vagrant 官方 WINDOWS Universal (32 and 64-bit) http://www.vagrantup.com/downloads.html 2.Virtu ...
- ABAP文件选择框函数
因为WS_FILENAME_GET已经被废弃所以使用接口CL_GUI_FRONTEND_SERVICES来实现本地文件的选择. 用接口类CL_GUI_FRONTEND_SERVICES实现的方法 CA ...
- python读取文件存到excel中
用xlwt模块执行代码报下面的错 ValueError: column index (256) not an int in range(256) xlwt 模块看源码说最大列只支持255列,所以超过这 ...
- 微信小程序高度设置为100%
在网页中设置body,html{height:100%}; 将body和html设置为100%,这样我们就可以在他们的子元素中使用height:100%来使的我们的容器元素占满屏幕的高度啦. 但是在微 ...
- JVM对象
对象 Java虚拟机采用自动的内存管理和自适应的优化策略.但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的. 逃逸分析:对象的作用范围只在本线程范围,如方 ...
- 自定义xhr请求
接上一篇博客,上一篇是之前的jsonp请求方法的封装,这一篇是xhr请求的简单封装. 原理: 1:new一个xhr对象,命名为ajaxRequest,由于浏览器兼容性的问题,所以将获取xhr对象的方式 ...