NOIp2018集训test-9-18
T1.Conjugate
只能选没选过的点,看成如果选了选过的堆的点就不管它继续选。如果第一次选到某一堆的点在第一次选到第一堆的点之前,这一堆对答案就会有1的贡献。那么a[i]有贡献的概率是a[i]和a[1]的相对顺序序列中,第一个是a[i]中的点的概率(转换后的游戏和原游戏等价),即ai/(a1+ai),答案就是这个东西求和再+1。
//Achen
#include<bits/stdc++.h>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,a[N];
db 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;
} #define ANS
int main() {
#ifdef ANS
freopen("conjugate.in","r",stdin);
freopen("conjugate.out","w",stdout);
#endif
read(n);
For(i,,n) read(a[i]);
ans=;
For(i,,n) ans=ans+(db)a[i]/(1.0*(a[i]+a[]));
printf("%lf\n",ans);
Formylove;
}
T2.Conjunct
我不是很懂题解说的dp lcs是什么意思,但是我自己yy了一个dp。
最后的序列肯定是一坨0和一坨1交替,相交的位置中间有一个2(0和1的坨里面可能也有2,就看成是0或者1就好了)
f[i][j][k]表示前i个位置的移动确定好了,最后一个坨是k(0/1)的坨,第i个位置后面放一个分割的2的答案,因为是0.1相间的,一定存在一种合法的方案是把前i个中最后一个部分的和这一部分不同的数移到下一个坨里和把下一个坨里一部分数移到这一坨里,所以转移的时候只需要放心大胆地把不合法的代价算出来,它一定是有地方可去的,而这个代价预处理0.1的前缀和就可以求出。这样复杂度是n^3的,发现f[i][j]k]仅由f[i'][j-1][k^1]转移来,对于每个j和k求前缀最小值即可n^2解决。
//Achen
#include<bits/stdc++.h>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
const int inf=1e8;
typedef long long LL;
typedef double db;
using namespace std;
int T,n,tot,a[N],f[N][N][],mi[][N],ans,sum1[N],sum0[N],tot1,tot0; 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;
} void get_min(int &x,int y) {
if(y<x) x=y; return ;
} #define ANS
int main() {
#ifdef ANS
freopen("conjunct.in","r",stdin);
freopen("conjunct.out","w",stdout);
#endif
read(T);
while(T--) {
read(n);
tot=tot0=tot1=;
For(i,,n) {
read(a[i]);
sum0[i]=sum0[i-];
sum1[i]=sum1[i-];
if(a[i]==) tot1++,sum1[i]++;
else if(a[i]==) tot0++,sum0[i]++;
else tot++;
}
if(!tot0||!tot1) {
puts("");
continue;
}
For(i,,n) For(j,,tot) f[i][j][]=f[i][j][]=inf;
For(i,,tot) mi[][i]=mi[][i]=inf;
ans=inf;
mi[][]=mi[][]=;
if(a[]==) get_min(ans,min(tot1,tot0));
For(i,,n) Rep(j,min(tot,i),) {
get_min(f[i][j][],sum1[i]+(a[i+]!=)+mi[][j-]);
get_min(f[i][j][],sum0[i]+(a[i+]!=)+mi[][j-]);
get_min(mi[][j],f[i][j][]-sum0[i]);
get_min(mi[][j],f[i][j][]-sum1[i]);
get_min(ans,f[i][j][]+sum0[n]-sum0[i]);
get_min(ans,f[i][j][]+sum1[n]-sum1[i]);
}
if(ans==inf) ans=-;
printf("%d\n",ans);
}
Formylove;
}
T3.conjecture
寄蒜几盒简单(神)题。我不会。要是noip后还没退役再来看吧。
NOIp2018集训test-9-18的更多相关文章
- NOIP2018 集训(二)
A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...
- NOIP2018 集训(一)
A题 Simple 时间限制:1000ms | 空间限制:256MB 问题描述 对于给定正整数\(n,m\),我们称正整数\(c\)为好的,当且仅当存在非负整数\(x,y\)使得\(n×x+m×y=c ...
- NOIp2018集训test-9-17(am)
这是一套去年在长沙考过的题,但是我当时就没理清楚+没写题解(我以前很多博客都写得跟shi一样,完全没有意义,看到就想打当时的我),所以又考得稀烂. T1.star way to heaven 容易想到 ...
- NOIp2018集训test-9-16(联考二day2)
T1旋转子段 一开始脑袋抽了花了近一个小时写了个跟这题毫无关系的莫名其妙的代码,一急代码就各种bug,最后t1就花了一个半小时多,然后后面时间不太够了,考得稀烂. 因为每个数存在唯一的中心使得绕这个中 ...
- NOIp2018集训test-10-24(am&pm)
李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...
- NOIP2018 集训(三)
A题 Tree 问题描述 给定一颗 \(n\) 个点的树,树边带权,试求一个排列 \(P\) ,使下式的值最大 \[\sum_{i=1}^{n-1} maxflow(P_i, P_{i+1}) \] ...
- NOIp2018集训test-10-18 (bike day4)
这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了. 这几天的题换做llj.sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他 ...
- NOIp2018集训test-10-17 (bike day3)
发现自己gradully get moodier and moodier了 负面情绪爆发地越来越频繁,根本out of control,莫名其妙地就像着了魔一样 为什么用英语大概是因为今天早上早自习因 ...
- NOIp2018集训test-10-16 (bike day2)
“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是noip你们就凉透了啊“ 今天的题难度应该是3.2.1递减的,但是我不知道哪根筋没搭对,平时我最多1h多就弃题了,今天硬生生写了2h20min的 ...
- [雅礼NOIP2018集训] day6
打满暴力好像是一种挑战,已经连续几天考试最后一个小时自闭了,因为自以为打完了暴力,然而,结果往往差强人意 大概是考试的策略有些问题 T1: 我们设$g[x]$为在x时取小于等于m个物品的最大价值,下面 ...
随机推荐
- 基于.Net4.0实现 ToastNotification
基于.Net4.0实现 ToastNotification Windows更新之路的特色之一就是消息提示由气泡变成了通知窗口,效果简直不要太好.最近公司有这方面的需求,需要在xp,win7系统上给出提 ...
- 深入理解Magento – 第三章 – 布局,块和模板
深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第三章 – 布局,块和模板 我们接着研究Magento.根据我们第二章讲的Magento MVC的架构,我们接下来 ...
- Java Number&Math类
Java Number类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double等. 实例 int i = 5000; float gpa = 13.65 ...
- Django 自定义 admin
为 model 自定义显示 label是这个Field如果在form中的话会显示的.而verbose_name在form中不会显示.只是作为一种说明而已 callable() --> 是否 ...
- Tomcat启动报:The Server time zone value 'XXXXX' 乱码问题解决
今天给自己项目打包到服务器发布时,运行时,发现报 java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecogniz ...
- vim编辑器设置缩进!
转载自 http://blog.chinaunix.net/uid-27213819-id-3813909.html 1.在自己的home目录下建立.vimrc文件.控制台输入vi ~/.vimrc ...
- (转)Vmware vSphere 5.0系列教程 vSphere网络原理及vSwitch简介 及一个host两个网卡说明
转:http://andygao.blog.51cto.com/323260/817518/ 在一个物理网络拓扑中,通常都是路由器-交换机-PC机的连接,不同的服务器和PC机,通过交换机的连接而相互连 ...
- java8的正确使用姿势
ackage com.expgiga.Java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...
- Linux之mysql-redis-python使用
1. rpm包使用 1. 光盘挂载 mount /dev/cdrom /mnt cd /mnt ls 2. 安装rpm包 rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm ...
- 使用Netfilter进行数据包分析
#include <linux/init.h>#include <linux/module.h>#include <linux/skbuff.h>#include ...