T1记忆(memory)

我大概是只记忆只有七秒的金鱼吧。看了下以前的代码发现真的很简单,但是考场上只打了个暴力,虽然骗了88pt。就是枚举选的是哪个串,然后vis[i]表示选了i这些位能不能猜出它,然后dp选到i这个状态的概率。

 //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=,M=;
using namespace std;
typedef long long LL;
typedef double db;
int n,len,vis[M],cnt[M];
char S[][];
db p[M],ans; template<typename T>void read(T &x) {
char ch=getchar(); T f=; x=;
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("memory.in","r",stdin);
freopen("memory.out","w",stdout);
#endif
read(n);
For(i,,n) scanf("%s",S[i]);
len=strlen(S[]);
int up=(<<len)-;
For(s,,up) {
int tp=s;
while(tp) {
tp-=(tp&(-tp));
cnt[s]++;
}
}
For(i,,n) {
For(j,,n) if(i!=j) {
int t=;
For(k,,len-) if(S[i][k]==S[j][k])
t|=(<<k);
vis[t]=i;
}
Rep(s,up,) if(vis[s]==i) {
For(j,,len-) if(s&(<<j))
vis[s^(<<j)]=i;
}
For(j,,up) p[j]=;
p[]=1.0/(1.0*n);
For(s,,up) if(p[s]!=) {
if(vis[s]!=i) ans+=p[s]*cnt[s];
else {
For(j,,len-) if(!(s&(<<j))) {
p[s|(<<j)]+=p[s]*(1.0/(1.0*(len-cnt[s])));
}
}
}
}
printf("%.10lf\n",ans);
Formylove;
}
/*
3
aaA
aBa
Caa
*/

正解如注释。看到n有50就不想用二进制表示n的情况,真是太蠢了。

 //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 M=;
using namespace std;
typedef long long LL;
typedef double db;
int n,len,tot[M],cnt[M];
LL no[M];
char s[][];
db f[M],ans; template<typename T>void read(T &x) {
char ch=getchar(); T f=; x=;
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("memory.in","r",stdin);
freopen("memory.out","w",stdout);
#endif
read(n);
For(i,,n) scanf("%s",s[i]);
len=strlen(s[]);
int up=(<<len)-;
For(i,,n) For(j,,n) if(i!=j) {
int t=;
For(k,,len-) if(s[i][k]==s[j][k])
t|=(<<k);
no[t]|=(1LL<<i);
no[t]|=(1LL<<j);
}//no[t]:t状态下不能分清的串
Rep(i,up,)
For(j,,len-) if(i&(<<j))
no[i^(<<j)]|=no[i];
Rep(i,up,) {
LL tp=no[i];
while(tp) {
tot[i]++;
tp-=(tp&(-tp));
} //tot[i]:i状态下不能分清的串的个数
int t=i;
while(t) {
cnt[i]++;
t-=(t&(-t));
}//i中1的个数
}
Rep(i,up,) if(tot[i]) { //i状态下期望猜多少次
db c=len-cnt[i];//还没被猜到的位数
For(j,,len-) if(!(i&(<<j))) {
db t1=tot[i],t2=tot[i|(<<j)];
f[i]+=(t2/t1*(f[i|(<<j)]+1.0)+(t1-t2)/t1)/c;
}
}
printf("%.10lf\n",f[]);
Formylove;
}
/*
3
aaA
aBa
Caa
*/

T2神经元(neuron)

prufer序列的水题,f[i][j]表示放了i个数进序列序列长度为j的方案数,k的答案就是序列长度为k-2的方案乘上看有多少个叶子,在剩下的点里选那么多个叶子的方案。

 //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=1e9+;
using namespace std;
typedef long long LL;
typedef double db;
int n,d[N];
LL f[N][N],C[N][N]; template<typename T>void read(T &x) {
char ch=getchar(); T f=; x=;
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>=p?x-p:x; } #define ANS
int main() {
#ifdef ANS
freopen("neuron.in","r",stdin);
freopen("neuron.out","w",stdout);
#endif
read(n);
For(i,,n) read(d[i]);
For(i,,n) C[i][]=;
For(i,,n) For(j,,i) C[i][j]=(C[i-][j]+C[i-][j-])%p;
f[][]=;
For(x,,n) {
Rep(i,x,) Rep(j,n-,) if(f[i][j]) {
For(l,,min(n--j,d[x]-))
f[i+][j+l]=mo(f[i+][j+l]+f[i][j]*C[j+l][l]%p);
}
}
For(i,,n) {
if(i==) printf("%d ",n);
else if(i==) {
if(i!=n) printf("%lld ",C[n][]);
else printf("%lld\n",C[n][]);
}
else {
LL rs=;
For(j,,i) rs=mo(rs+f[j][i-]*C[n-j][i-j]%p);
if(i!=n) printf("%lld ",rs);
else printf("%lld\n",rs);
}
}
Formylove;
}

T3子串(substring)

sam上维护lct的题,没看,noip后要是没退役再来写吧。

NOIp2018集训test-9-17(pm)的更多相关文章

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

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

  2. NOIp2018集训test-9-21(am/pm)

    Am DAY1 抄代码 送分题 //Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++ ...

  3. NOIp2018集训test-9-19(am&pm)

    AM 这是一套在长沙考过而且我能记得全部正解的题,然后期望得分300实际得分155. T1 很套路,随便搞(我当年是怎么花大半场时间写T1并且写出现在两倍长的代码的??) //Achen #inclu ...

  4. NOIp2018集训test-9-22(am/pm) (联考三day1/day2)

    szzq学长出的题,先orz一下. day1 倾斜的线 做过差不多的题,写在我自己的博客里,我却忘得一干二净,反而李巨记得清清楚楚我写了的. 题目就是要最小化这个东西 $|\frac{y_i-y_j} ...

  5. NOIp2018集训test-9-8(pm) (联考一day2)

    把T1题读错了,想了一个多小时发现不可做.然后打了t2,常数不优秀.然后去打t3,lct,结果打挂爆0了. 然后今天就爆炸了. 如果这是noip我今年就可以直接回去学常规了.学常规多好,多开心. 今天 ...

  6. NOIp2018集训test-9-7(pm) (联考一day1)

    又被辉神吊打了.今天不仅被辉神李巨吊打,还给基本上给全班垫底了. 看到T3就知道是十进制快速幂,全机房考试的当时应该就我会,结果我tm没找到递推. Orz lyc BM直接水过,Orz wys六个fo ...

  7. NOIp2018集训test-9-6(pm)

    T1T2是洛谷原题.Orz辉神290,被辉神吊起来打. 题 1 包裹快递 二分答案.这题似乎卡精度,不开long double二分500次都过不去. //Achen #include<algor ...

  8. NOIp2018集训test-9-5(pm)

    老张说:这套题太简单啦,你们最多两个小时就可以AK啦! 题 1 数数 我看到T1就懵了,这就是老张两个小时可以AK的题的T1?? 然后我成功地T1写了1h+,后面1h打了t2.t3暴力,就很开心. 等 ...

  9. NOIp2018集训test-9-2(pm)

    其实这套题我爆0了,T1define 写成ddefine编译错误 T2有两个变量爆int 但是我看zwh不在悄悄地改了,我心里还是十分愧疚(没有)的.主要是林巨已经虐我125了要是再虐我200分我大概 ...

随机推荐

  1. CF687D Dividing Kingdom II

    \(\mathtt{CF 687D}\) \(\mathcal{Description}\) 给你一个图有 \(n\) 个点 \((1 \leq n \leq 10^3)\) 和 \(m\) 条边 \ ...

  2. JavaScript实现时间上一天和下一天切换

    JavaScript实现时间上一天和下一天切换 1.先获取时间戳毫秒数 var date = new Date()//实例化时间戳 var time = date.getTime()//获取当前毫秒数 ...

  3. Shiro学习(8)拦截器机制

    8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3.1规范>http://www.iteye.com ...

  4. 中位数+暴力——cf433C

    /* 中位数到所有数的距离之和最小 因为只能改一个数,所以我们找一个数,将其改为和其相邻的数的中位数,使答案最小 先求一次原答案 把每个数相邻的数用vector存下来,然后排序找中位数,计算减小的量 ...

  5. 使用linkedhashmap实现LRU(最近最少使用缓存算法)

    import java.util.LinkedHashMap; import java.util.Map; public class LRUCache<K, V> extends Link ...

  6. jdk8处理时间

    对当前时间格式化: public static long getCurrentTimeMillis(String pattern) { return Long.valueOf(toString(Loc ...

  7. Linux操作系统中对于NTFS读取目录功能的实现

    1: /* 2: * We use the same basic approach as the old NTFS driver, i.e. we parse the 3: * index root ...

  8. docker容器的常见操作

    进入容器 docker exec -it 12a022ee8127 /bin/bash 交互模式进入容器 docker exec -it 12a022ee8127 ip a 查看容器的ip等信息 批量 ...

  9. es概念一句话简介和注意点

    1.elasticsearch是什么? 一个实时分布式搜索(全文or结构化)和分析引擎,面向文档(document oriented) 2.主节点(Master Node)职责? 负责集群中的操作(如 ...

  10. 8-MySQL-Ubuntu-数据表中数据的增加(一)

    增(insert) (1)全部字段插入数据:按表中字段顺序增加数据 注:(1)主键字段可以使用0/null/default来占位.(2)gender字段中数据类型是枚举,可以使用索引数字1,2,3,4 ...