qbxt十一系列四
关于考试:题目很难,T1和T3都失误,爆零orz


更正:第三组:不存在相同的字符|str|=26,26<=n<=100
【题目分析】
第一反应,组合数学;第二反应,有端倪;jn给了一道题GT考试 很多大神都做过,kmp+矩阵乘法
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e5+;
const int mod=1e9+;
int n,cnt,len;
char str[N],pat[N];
ll f[N];
void dfs(int now){
if(now==n){
if(++cnt>=mod) cnt%=mod;
return ;
}
bool flag=(now<len-)|(!equal(str+now-len+,str+now,pat));
for(char x='a';x<='z';x++){
if(!flag&&x==pat[len-]) continue;
str[now]=x;
dfs(now+);
}
}
ll fpow(ll a,ll p){
ll res=;
for(;p;p>>=,a=a*a%mod) if(p&) res=res*a%mod;
return res;
}
int main(){
freopen("helloworld.in","r",stdin);
freopen("helloworld.out","w",stdout);
while(scanf("%d",&n)==){
scanf("%s",pat);
len=strlen(pat);
cnt=;
if(!n){puts("");continue;}
if(n<=){
dfs();
printf("%d\n",cnt);
}
else if(len==){
printf("%d\n",fpow(,n));
}
else{
f[]=;
for(int i=;i<=len;i++) f[i]=f[i-]*%mod;
for(int i=len;i<=n;i++) f[i]=(f[i-]*-f[i-len]+mod)%mod;
printf("%d\n",(int)f[n]);
}
}
return ;
}

更正:输出的顺序保证a<b

更正:输出样例:0 1000000006
【题目分析】
矩阵乘法斐波那契数列变形
#include<cstdio>
#include<cstring>
#include<iostream>
#ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif
using namespace std;
#define ll long long
#define N 3
const ll mod=1e9+;
ll a[N][N],b[N][N],c[N][N];
ll p,q,a1,a2,n;
inline const ll read(){
register ll x=,f=;
register char ch=getchar();
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void work(){
a[][]=;a[][]=q;a[][]=;a[][]=p;
b[][]=;b[][]=q;b[][]=;b[][]=p;
while(n){
if(n&){
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
c[i][j]=(c[i][j]+a[i][k]*b[k][j]%mod)%mod;
}
}
}
memcpy(a,c,sizeof c);
memset(c,,sizeof c);
}
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
c[i][j]=(c[i][j]+b[i][k]*b[k][j]%mod)%mod;
}
}
}
memcpy(b,c,sizeof c);
memset(c,,sizeof c);
n>>=;
}
}
int main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
p=;q=;a1=;a2=;
n=read();ll bf=n;
if(n==){printf("1 1");return ;}
if(n%mod==){printf("1 ");printf(LL,n-);return ;}
n-=;
work();
ll ans1=(a[][]%mod+a[][]%mod)%mod;
n=bf;
work();
ll ans2=(a[][]%mod+a[][]%mod)%mod;
if(ans1>ans2) swap(ans1,ans2);
printf(LL,ans1);putchar(' ');printf(LL,ans2);
return ;
}

更正:模数1000000007

【题目分析】
开始打了匈牙利算法,自我感觉p==1的情况还是可以混过去的吧,结果爆零啦
考完据shenben和ylf说并不是匈牙利算法!!是树形DP!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#define maxn 100010
#define mod 1000000007
#define ll long long
using namespace std;
ll T,P,n,head[maxn],num,f[maxn][],g[maxn][],L,R[maxn],l,r[maxn],son[maxn];
struct node{
ll v,pre;
}e[maxn*];
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
void Add(ll from,ll to){
num++;e[num].v=to;
e[num].pre=head[from];
head[from]=num;
}
void Clear(){
num=;
memset(f,,sizeof(f));
memset(g,,sizeof(g));
memset(head,,sizeof(head));
}
void DP(ll now,ll from){
g[now][]=;
ll mx,sum;
for(int i=head[now];i;i=e[i].pre){
ll v=e[i].v;
if(v==from)continue;
DP(v,now);//x不连儿子 儿子们可连可不连
mx=max(f[v][],f[v][]);sum=;
if(mx==f[v][])sum+=g[v][];
if(mx==f[v][])sum+=g[v][];
g[now][]=g[now][]*sum%mod;
f[now][]+=mx;
}
//x连某个儿子 这个不选 其他的连或者不连
L=;l=;ll S=;
for(int i=head[now];i;i=e[i].pre)
if(e[i].v!=from)son[++S]=e[i].v;
R[S+]=;r[S+]=;
for(int i=S;i>=;i--){
ll v=son[i];sum=;
mx=max(f[v][],f[v][]);
if(mx==f[v][])sum+=g[v][];
if(mx==f[v][])sum+=g[v][];
R[i]=R[i+]+mx;
r[i]=r[i+]*sum%mod;
}
for(int i=;i<=S;i++){
ll v=son[i];
mx=L+f[v][]+R[i+]+;
if(mx>f[now][]){
f[now][]=mx;
g[now][]=l*g[v][]%mod*r[i+]%mod;
}
else if(mx==f[now][])
g[now][]=(g[now][]+l*g[v][]%mod*r[i+]%mod)%mod;
sum=;
mx=max(f[v][],f[v][]);
if(mx==f[v][])sum+=g[v][];
if(mx==f[v][])sum+=g[v][];
l=l*sum%mod;L+=mx;
}
}
int main()
{
freopen("hungary.in","r",stdin);
freopen("hungary.out","w",stdout);
T=init();P=init();
while(T--){
n=init();
ll u,v;Clear();
for(int i=;i<n;i++){
u=init();v=init();
Add(u,v);Add(v,u);
}
DP(,);ll sum,mx;
mx=max(f[][],f[][]);sum=;
if(mx==f[][])sum+=g[][],sum%=mod;
if(mx==f[][])sum+=g[][],sum%=mod;
if(P==)cout<<mx<<endl;
if(P==)cout<<mx<<" "<<sum<<endl;
}
return ;
}


【题目分析】
不会
#include<cstdio>
using namespace std;
const int N=;
const int inf=0x3f3f3f3f;
inline int max(int a,int b){return a>b?a:b;}
inline const int read(){
register int x=,f=;
register char ch=getchar();
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m;
int f[N][N];
int main(){
freopen("radius.in","r",stdin);
freopen("radius.out","w",stdout);
n=read();m=read();
for(int i=;i<=n;i++) for(int j=;j<=n;j++) f[i][j]=inf;
for(int i=,x,y,z;i<=m;i++){
x=read();y=read();z=read();
if(f[x][y]>z) f[y][x]=f[x][y]=z;
}
for(int k=;k<=n;k++){
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i!=j&&j!=k&&i!=k){
if(f[i][j]>f[i][k]+f[k][j]){
f[i][j]=f[i][k]+f[k][j];
}
}
}
}
}
int d=;
for(int i=;i<n;i++){
for(int j=i+;j<=n;j++){
if(f[i][j]!=inf) d=max(d,f[i][j]);
}
}
double ans=d/2.0;
printf("%.2lf",ans);
return ;
}
qbxt十一系列四的更多相关文章
- qbxt十一系列一
希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...
- qbxt十一系列三
[题目分析] 这完全是个数学题啊,有些崩溃,上午考试写了两个小时,20分,于是乎 下午改啊改啊 改到10分....如果第二个圆的圆心在第一个圆.....呃 说不清楚 像下面这个图这样,两圆重叠部分中C ...
- qbxt十一系列二
PA[题目描述]汉诺塔升级了:现在我们有N个圆盘和N个柱子,每个圆盘大小都不一样,大的圆盘不能放在小的圆盘上面,N个柱子从左到右排成一排.每次你可以将一个柱子上的最上面的圆盘移动到右边或者左边的柱子上 ...
- 【小梅哥FPGA进阶教程】第十一章 四通道幅频相可调DDS信号发生器
十一.四通道幅频相可调DDS信号发生器 本文由山东大学研友袁卓贡献,特此感谢 实验目标 实现多通道可调信号发生器 实验平台 芯航线FPGA核心板.ADDA模块 实验现象 实现基于FPGA的多通道可调信 ...
- 爬虫系列(四) 用urllib实现英语翻译
这篇文章我们将以 百度翻译 为例,分析网络请求的过程,然后使用 urllib 编写一个英语翻译的小模块 1.准备工作 首先使用 Chrome 浏览器打开 百度翻译,这里,我们选择 Chrome 浏览器 ...
- 前端构建大法 Gulp 系列 (四):gulp实战
前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家 前 ...
- Netty4.x中文教程系列(四) 对象传输
Netty4.x中文教程系列(四) 对象传输 我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持. 首先我们定义一个U ...
- S5PV210开发系列四_uCGUI的移植
S5PV210开发系列四 uCGUI的移植 象棋小子 1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是能够通过窗体.菜单 ...
- WCF编程系列(四)配置文件
WCF编程系列(四)配置文件 .NET应用程序的配置文件 前述示例中Host项目中的App.config以及Client项目中的App.config称为应用程序配置文件,通过该文件配置可控制程序的 ...
随机推荐
- [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效
问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...
- 关于DISTINCE的用法
SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...
- 夺命雷公狗---DEDECMS----12dedecms全局标签的使用以及嵌套标签的使用
在网站开发中,在很多页面可能会使用到同一个变量,比如路径网站信息等,所以我们可以用全局变量来使用. 默认的放在: 进去里面看下就会发现很多的常量都是在这里定义的: 我们在实际开发的时候可以将我们在多个 ...
- 1.js基础
1.如何在html文档中使用js 1)使用<script></script>将JS语法嵌入到html中,可以使用多个,每个之间都是有关联的 2)href="javas ...
- ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)
我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的 ...
- Objective-C代码的文件扩展名与数据类型
Objective-C数据类型可以分为:基本数据类型.对象类型和id类型. 基本数据类型有:int.float.double和char类型. 对象类型就是类或协议所声明的指针类型,例如:SAutore ...
- 精简高效的CSS命名准则/方法
/* ---------------------single CSS----------------------- */ /* display */ .dn{display:none;} .di{di ...
- eclipse折叠快捷键
之前按代码折叠快捷键的时候发现时而灵时而不灵,今天突然发现了问题所在: 按ctrl+/(小键盘)使代码左边出现折叠标志 然后再按ctrl+shift+/(折叠) , ctrl+shift+*(展开 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...