反演+FFT+构造+DP


  写了这么多tag,其实我一个也不会

A

  第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30分的时候好像挂了,所以并没有拿到……20分滚粗了

  最近打暴力搞部分分的时候,写各种情况的判断条件什么的总是出问题……sad……以后还是自己造下数据判一下能不能过吧,不能总是靠人品啊>_>

  我还是放弃FFT吧,反正……出来这种题,我也想不到要用FFT & 不会推公式……呵呵哒

 //Round5 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=,P=;
/*******************template********************/ LL n,b[N],a[N];
LL fac[N],inv[N];
LL Pow(LL a,int b){
LL r=;
for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
return r;
} LL C(int n,int m){
return fac[n]*inv[m]%P*inv[n-m]%P;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
n=getint();
if (n>){
F(i,,n) printf("1 "); puts(""); return ;
}
fac[]=fac[]=; F(i,,n) fac[i]=fac[i-]*i%P;
inv[n]=Pow(fac[n],P-); inv[]=;
D(i,n-,) inv[i]=inv[i+]*(i+)%P; F(i,,n) b[i]=getint();
bool sign=;
F(i,,n) if (b[i]!=C(n+,i+)){sign=; break;}
if (sign){F(i,,n) printf("1 "); puts(""); return ;}
D(i,n,){
F(j,i+,n) b[i]=((b[i]-C(j,i)*a[j]%P)+P)%P;
a[i]=b[i];
}
F(i,,n) printf("%lld ",b[i]); puts("");
return ;
}

B

  qmqmqm神犇出的构造题,随便yy一下就可以联想到邻接矩阵,然后k次方后,a[i][j]就是从 i 开始走k步能否走到j。

  然而我傻逼地没有特判k=1的情况

  事实是:我在想到正解之前看到k=1的点发现这应该直接输出全1矩阵,再小一点的数据可以暴力枚举初始矩阵,然而……后来就没再像这种边界情况,真是作死。95分滚粗了

 //Round5 B
#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,k;
struct Matrix{
bool c[N][N];
bool* operator [] (int x){return c[x];}
Matrix(){memset(c,,sizeof c);}
void print(){
// F(i,1,n){F(j,1,n) printf("%d ",c[i][j]); puts("");}
F(i,,n){
F(j,,n) printf("%c",c[i][j]+'');
puts("");
}
puts("");
}
}f; Matrix operator * (Matrix a,Matrix b){
Matrix c;
F(i,,n) F(k,,n) F(j,,n)
c[i][j]+=a[i][k]*b[k][j];
return c;
}
Matrix Pow(Matrix a,int b){
Matrix c;
F(i,,n) c[i][i]=;
for(;b;b>>=,a=a*a) if (b&) c=c*a;
return c;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
#endif
n=getint(); k=getint();
if (k==){
F(i,,n){F(j,,n) printf("%c",''); puts("");}
return ;
}
F(i,,n) f[i][i]=; F(i,,k-) f[i][i+]=;
f[k][]=; F(i,k+,n) f[i][]=f[][i]=;
F(i,,n){
F(j,,n) printf("%c",f[i][j]+'');
puts("");
}
/* F(i,0,k){
printf("No. %d\n",i);
Pow(f,i).print();
}*/
return ;
}

C

  对我来说神一样的DP,然而并不能找到一种合理的状态表示方式,所以也就搞不出来了……快速幂10分滚粗

 //Round5 C
#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=,P=1e9+;
/*******************template********************/ int n,m,k;
LL f[N][N],fac[N],inv[N];
LL Pow(LL a,int b){
LL r=;
for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
return r;
}
LL C(int n,int m){return fac[n]*inv[m]*inv[n-m]%P;} int main(){
#ifndef ONLINE_JUDGE
freopen("C.in","r",stdin);
freopen("C.out","w",stdout);
#endif
n=getint(); m=getint(); k=getint();
fac[]=fac[]=;
F(i,,k) fac[i]=fac[i-]*i%P;
inv[k]=Pow(fac[k],P-); inv[]=;
D(i,k,) inv[i-]=inv[i]*i%P; if (n==){printf("%lld\n",Pow(k,m)); return ;}
else{
}
return ;
}

  下午去考了信息会考,然后就回来改题……然而什么也不会,心情好糟糕,什么也不想做……整个人都不好了……

  o(︶︿︶)o 唉还有35?还是34?天就要NOI了……我还是这么傻逼,没救了,是不是退OI保平安比较好……

【ContestHunter】【弱省胡策】【Round5】的更多相关文章

  1. 弱省胡策 Magic

    弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...

  2. 【弱省胡策】Round #5 Count

    [弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...

  3. luoguP3769 [CH弱省胡策R2]TATT

    luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...

  4. 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)

    DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...

  5. 【ContestHunter】【弱省胡策】【Round3】(C)

    容斥原理+Fib Orz HE的神犇们 蒟蒻只能改出来第三题……实在太弱 官方题解:http://pan.baidu.com/s/1o6MdtQq fib的神奇性质……还有解密a[i]的过程……这里就 ...

  6. 【ContestHunter】【弱省胡策】【Round2】

    官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Roun ...

  7. 【ContestHunter】【弱省胡策】【Round8】

    平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...

  8. 【ContestHunter】【弱省胡策】【Round7】

    Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...

  9. 【ContestHunter】【弱省胡策】【Round6】

    KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...

随机推荐

  1. 修改linux下默认的python版本

    首先在终端输入:python --verison 查看本机默认采用的python 版本 接着进入/usr/local/lib 目录查看当前系统中安装了多少个python版本 如果只有一个,就安装你需要 ...

  2. Educational Codeforces Round 9 D - Longest Subsequence

    D - Longest Subsequence 思路:枚举lcm, 每个lcm的答案只能由他的因子获得,类似素数筛搞一下. #include<bits/stdc++.h> #define ...

  3. Vue.js中 watch 的高级用法

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...

  4. CentOS 5.x上配置JBoss6.x步骤图解教程

    1.如何远程连接CentOS和文件上传下载 使用工具Xmanager下的Xbroswer 首先在Xbroswer下的Xshell下新建文件夹JavaPlatServer,新建一个Xshell Sess ...

  5. 牛客练习赛1 B - 树

    链接:https://www.nowcoder.com/acm/contest/2/B来源:牛客网 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当 ...

  6. 基于spring-boot的应用程序的单元+集成测试方案

    目录 概述 概念解析 单元测试和集成测试 Mock和Stub 技术实现 单元测试 测试常规的bean 测试Controller 测试持久层 集成测试 从Controller开始测试 从中间层开始测试 ...

  7. MIT-6.828-JOS-环境搭建

    MIT 6.828是操作系统中最经典的一门课程.完成所有的lab就相当于完成了一个迷你的操作系统.我跟的是2018年的课程,课程首页在6.828课程官网.当然所有资料都是英文的,所以难度也不低,这里推 ...

  8. 详细介绍如何在Eclipse中使用SVN

    一.在Eclipse中下载安装Subclipse插件   1 打开eclipse,在Help菜单中找到marketPlace,点击进入. 2 在搜索框Find中输入subclipse,点击右边的Go按 ...

  9. [ 原创 ] git使用技巧

    Git的使用--如何将本地项目上传到Github Git分支图介绍 https://www.cnblogs.com/cheneasternsun/p/5952830.html https://www. ...

  10. thinkphp5使用redis

    1.设置应用配置文件config.php type可以是很多分类File.Redis等等 2.thinkphp5使用redis新建application/index/controller/index. ...