【ContestHunter】【弱省胡策】【Round2】
官方题解:http://wyfcyx.is-programmer.com/posts/95490.html
A
目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算?
//Round2 A
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=;
/*******************template********************/
int n,m;
double a[][]; void work1(){
double ans=1.0;
F(i,,m) ans*=(1.0-a[][i]);
printf("%.9f\n",1.0-ans);
}
void work2(){
double ans=0.0;
F(i,,m) ans*=(1.0-a[][i]);
}
int mp[][],my[N];
bool vis[N];
long double ans=0.0,gailv=1.0; bool go(int x){
F(i,,m)
if (mp[x][i] && !vis[i]){
vis[i]=;
if (!my[i]||go(my[i])){
my[i]=x;
return ;
}
}
return ;
}
void check(){
// F(i,1,n){ F(j,1,m) printf("%d ",mp[i][j]); puts("");}
int tmp=;
memset(my,,sizeof my);
F(i,,n){
memset(vis,,sizeof vis);
if (go(i)) tmp++;
}
double gl=gailv;
// printf("%d %.9f\n\n",tmp,gl);
ans+=tmp*gailv;
}
void dfs(int x,int y){
// printf("dfs %d %d\n",x,y);
if (x==n+){check();return;}
D(i,,){
mp[x][y]=i;
gailv*=i*a[x][y]+(-i)*(1.0-a[x][y]);
if (y==m) dfs(x+,);
else dfs(x,y+);
mp[x][y]=;
gailv/=i*a[x][y]+(-i)*(1.0-a[x][y]);
}
}
void work3(){
dfs(,);
double as=ans;
printf("%.9f\n",as);
}
int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
n=getint(); m=getint();
F(i,,n) F(j,,m) scanf("%lf",&a[i][j]);
if (n==) work1();
// else if (n==2) work2();
else
work3();
return ;
}
(30分)
C
原来是用FFT来做的好题!
第一步用KMP比较简单,容易想到。
这题的特点是每个字符都是0或1,所以考虑第二步的时候,可以用FFT来进行快速运算0.0太神了!利用卷积的特点,将一个串反转过来,然后相同的,会对答案贡献1,不同的贡献0,卷积一下就是两个串对应位置都是1的位数!太神奇了。。。(都是0的位数求法:整个异或一下,0变1,1变0)
//Round2 C
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=;
/*******************template********************/
const double pi=acos(-);
struct comp{
double r,i;
comp(double r=0.0,double i=0.0):r(r),i(i){}
comp operator * (const comp &b)const{return comp(r*b.r-i*b.i,r*b.i+i*b.r);}
comp operator + (const comp &b)const{return comp(r+b.r,i+b.i);}
comp operator - (const comp &b)const{return comp(r-b.r,i-b.i);}
}A[N],B[N]; int n,m,nxt[N],v[N],cnt,c[N],nn;
char a[N][],b[N][],a2[N],b2[N];
void FFT(comp *a,int n,int type){
for(int i=,j=;i<n;++i){
if (i<j) swap(a[i],a[j]);
for(int k=n>>;(j^=k)<k;k>>=);
}
for(int m=;m<n;m<<=){
double u=pi/m*type; comp wm(cos(u),sin(u));
for(int i=;i<n;i+=(m<<)){
comp w(,);
rep(j,m){
comp &A=a[i+j+m],&B=a[i+j],t=w*A;
A=B-t; B=B+t; w=w*wm;
}
}
}
if (type==-) rep(i,n) a[i].r/=n;
}
void KMP(){
nxt[]=nxt[]=;
int j=;
F(i,,m){
while(j!= && strcmp(b[i],b[j])!=) j=nxt[j];
nxt[i+]=strcmp(b[i],b[j])== ? ++j : ;
}
j=;
F(i,,n){
while(j!= && strcmp(a[i],b[j])!=) j=nxt[j];
if (strcmp(a[i],b[j])==) j++;
if (j==m+) v[++cnt]=i-m+;
}
}
void work(int x){
rep(i,nn) A[i]=B[i]=comp(,);
rep(i,n) if (a2[i+]-''==x) A[i].r=;
rep(i,m) if (b2[i+]-''==x) B[m-(i+)].r=;
FFT(A,nn,); FFT(B,nn,);
rep(i,nn) A[i]=A[i]*B[i];
FFT(A,nn,-);
rep(i,n) c[i+]+=(int)(A[i+m-].r+0.5);
} int main(){
#ifndef ONLINE_JUDGE
freopen("C.in","r",stdin);
freopen("C.out","w",stdout);
#endif
n=getint(); m=getint();
for(nn=;nn<n+m-;nn<<=);
F(i,,n){
scanf("%s",a[i]);
a2[i]=a[i][];
a[i][]='';
}
F(i,,m){
scanf("%s",b[i]);
b2[i]=b[i][];
b[i][]='';
}
KMP();
if (cnt) puts("Yes");
else {puts("No");return ;}
work();
work();
int ans1=1e9,ans2=;
F(i,,cnt) if (m-c[v[i]]<ans1){
ans1=m-c[v[i]]; ans2=v[i];
}
printf("%d %d\n",ans1,ans2);
return ;
}
【ContestHunter】【弱省胡策】【Round2】的更多相关文章
- 弱省胡策 Magic
弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...
- 【弱省胡策】Round #5 Count
[弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...
- luoguP3769 [CH弱省胡策R2]TATT
luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...
- 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)
DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...
- 【ContestHunter】【弱省胡策】【Round3】(C)
容斥原理+Fib Orz HE的神犇们 蒟蒻只能改出来第三题……实在太弱 官方题解:http://pan.baidu.com/s/1o6MdtQq fib的神奇性质……还有解密a[i]的过程……这里就 ...
- 【ContestHunter】【弱省胡策】【Round8】
平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...
- 【ContestHunter】【弱省胡策】【Round7】
Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...
- 【ContestHunter】【弱省胡策】【Round6】
KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...
- 【ContestHunter】【弱省胡策】【Round5】
反演+FFT+构造+DP 写了这么多tag,其实我一个也不会 A 第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30 ...
随机推荐
- js一些实用例子
1.获取焦点选中文本内容 $("#id").focus(function(){ this.select(); }); 2.表单提交方式 A.自动提交 setTimeout(func ...
- jquery中each()函数
今天在使用each函数时,发现写的js代码明明木有问题,为什么点击没有执行呢.js始终处于入门阶段,只好瞎鼓捣. 弄了半天,总算可以了.代码如下: <script type="text ...
- Javascript的四种继承方式
在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...
- Dll学习三_Dll 相互间以及主程序间的数据共享——测试未通过,应该用内存映射
测试环境:XP,DELPHI XE 验证通过结构:主程序+一个Dll窗体 共享方式原理:通过主程序与各Dll定义相同的参数结构体,由主程序实例化该结构体,对于各Dll间的共享,通过传主程序实例化的结构 ...
- Wordpress模板标签大全
Wordpress模板基本文件 style.css 样式表文件 index.php 主页文件 single.php 日志单页文件 page.php 页面文件 archvie.php 分类和日期存档页文 ...
- 共享内存shared pool (6):追踪sql语句
构建实验数据 --使用NC50用户查询(会话1) SQL> conn NC50/NC50 Connected. SQL> create table emp as select * from ...
- 14.python中的集合
什么是集合?正如其字面的意思,一堆东西集中合并到一起.乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器. 在学习这个容器有什么不同之前,先看看集合是如何创建的: a = set() #可变集合 ...
- ruby 程序中的文字编码
1,问题 在写一个统计代码行数的脚本时遇到一个问题: 代码: file_name = "code.rb"c = 0File.foreach(file_name) do |x| ne ...
- CA证书过期
CA证书问题请教!最近在客户这里做Exchange2010及RMS项目,对当前Ca证书颁发机构的环境做了下勘察和调研,发现有些地方出现警号显示过期,不知道会不会影响Exchange和Adrms的集成部 ...
- 自己写算法---java的堆的非递归遍历
import java.io.*; import java.util.*; public class Main { public static void main(String args[]) { S ...