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的更多相关文章

  1. NOIP2018 集训(二)

    A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...

  2. NOIP2018 集训(一)

    A题 Simple 时间限制:1000ms | 空间限制:256MB 问题描述 对于给定正整数\(n,m\),我们称正整数\(c\)为好的,当且仅当存在非负整数\(x,y\)使得\(n×x+m×y=c ...

  3. NOIp2018集训test-9-17(am)

    这是一套去年在长沙考过的题,但是我当时就没理清楚+没写题解(我以前很多博客都写得跟shi一样,完全没有意义,看到就想打当时的我),所以又考得稀烂. T1.star way to heaven 容易想到 ...

  4. NOIp2018集训test-9-16(联考二day2)

    T1旋转子段 一开始脑袋抽了花了近一个小时写了个跟这题毫无关系的莫名其妙的代码,一急代码就各种bug,最后t1就花了一个半小时多,然后后面时间不太够了,考得稀烂. 因为每个数存在唯一的中心使得绕这个中 ...

  5. NOIp2018集训test-10-24(am&pm)

    李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...

  6. NOIP2018 集训(三)

    A题 Tree 问题描述 给定一颗 \(n\) 个点的树,树边带权,试求一个排列 \(P\) ,使下式的值最大 \[\sum_{i=1}^{n-1} maxflow(P_i, P_{i+1}) \] ...

  7. NOIp2018集训test-10-18 (bike day4)

    这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了. 这几天的题换做llj.sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他 ...

  8. NOIp2018集训test-10-17 (bike day3)

    发现自己gradully get moodier and moodier了 负面情绪爆发地越来越频繁,根本out of control,莫名其妙地就像着了魔一样 为什么用英语大概是因为今天早上早自习因 ...

  9. NOIp2018集训test-10-16 (bike day2)

    “毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是noip你们就凉透了啊“ 今天的题难度应该是3.2.1递减的,但是我不知道哪根筋没搭对,平时我最多1h多就弃题了,今天硬生生写了2h20min的 ...

  10. [雅礼NOIP2018集训] day6

    打满暴力好像是一种挑战,已经连续几天考试最后一个小时自闭了,因为自以为打完了暴力,然而,结果往往差强人意 大概是考试的策略有些问题 T1: 我们设$g[x]$为在x时取小于等于m个物品的最大价值,下面 ...

随机推荐

  1. DELPHI 多线程(TThread类的实现)

    之前学习了用API实现,让我们再学习下用DELPHI的TThread类. 先新建一个普通的工程,再新建一个线程类File>>New>>Othre>>Delphi F ...

  2. mysql5.7问题:[Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool

    在关闭mysql5.7的时候发现问题,一直处于夯住状态 [root@localhost ~]# /etc/init.d/mysqld stop Shutting down MySQL......... ...

  3. PyCharm Change Font Size

    file->settings->colors&fonts-> save as (save the current scheme as your own)-> font- ...

  4. 控制台js常用解决方案,字符串替换和抓取列表页链接

    抓取列表页链接 由于测试站没有jquery所以,我用了原生的js var obj = document.getElementsByClassName('class1'); for(let i = 0; ...

  5. Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用

    一.sed基本用法 目标: 本案例要求熟悉sed命令的p.d.s等常见操作,并结合正则表达式,完成以下任务: 1> 删除文件中每行的第二个.最后一个字符    2> 将文件中每行的第一个. ...

  6. (转)OpenFire源码学习之十三:消息处理

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43417817 消息处理流程总揽(该图来源于互联网,图片很大,不过类容还是挺清楚的.不方便 ...

  7. js滚动页面到固定位置进行操作

    $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $("#div& ...

  8. Linux c基本知识整理

    1.指针和引用的区别 1.指针是一个变量,变量存储一个地址指向内存中一个存储单元,需要单独分配内存空间.引用相当于变量的别名,不需要单独分配空间 2.引用必须初始化,指针可以先不进行初始化 3.指针可 ...

  9. linux 创建多级目录 mkdir -p

    原文地址:http://www.dutor.net/index.php/2010/06/cmd-mkdir-p/ mkdir的-p选项允许你一次性创建多层次的目录,而不是一次只创建单独的目录.例如,我 ...

  10. 【二】Jmeter接口自动化测试系列之函数使用及扩展

    上一篇文章我们了解了Jmeter的参数化的集中方法,虽然方法不是很多,但已经足够使用! 本篇文章,介绍一下Jmeter自带函数的使用和 函数扩展,来满足测试工作中的各种需求! Jmeter自带函数 点 ...