Day5上午解题报告
预计分数:100+40+30=170
实际假分数:0+0+0=0 CE*3
实际真分数:60+50+0=110
老师没把我的程序放的文件夹里面,于是。。。。。
T1
https://www.luogu.org/problem/show?pid=T15678
一眼秒C(n,k)
组合数,
不过数组少开了1.。。翻车了呜呜呜~~~~(>_<)~~~~
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;
const LL MAXN=*1e6;
const LL INF=0x7ffff;
const LL mod=1e9+;
const LL limit=*1e6+;
inline LL read()
{
char c=getchar();LL flag=,x=;
while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
}
LL n,k;
LL a[MAXN];
LL js[MAXN];
LL x,y;
LL exgcd(LL a,LL b,LL &x,LL &y)
{
if(b==)
{
x=,y=;return a;
}
LL r=exgcd(b,a%b,x,y)%mod;
LL tmp=x%mod;x=y%mod;y=tmp-(a/b)*y%mod;
return r%mod;
}
LL C(LL n,LL k)
{
LL r=exgcd((js[n-k]%mod*js[k]%mod)%mod,mod,x,y);
while(x<)
x+=mod;
LL yy1=js[n]%mod;
LL xx1=x%mod;
LL rt=((LL)yy1*xx1)%mod;
return rt;
}
int main()
{
//12 freopen("cube.in","r",stdin);
// freopen("cube.out","w",stdout);
n=read();k=read();
// for(LL i=1;i<=n;i++)
// a[i]=read();
js[]=;
for(LL i=;i<=limit;i++) js[i]=((LL)js[i-]%mod*i%mod)%mod;
LL ans=C(n,k)%mod;
printf("%lld",ans%mod);
return ;
} /*
3 2
1 1 0
//3 4 2
0 0 0 0 //6 5 3
1 0 1 0 1//10
// */
T2
没想到正解
正解其实很简单
先求最大生成树
在建最大生成树的时候记录下选择k次的最大限重
每次二分查找
考场上为了求稳光敲了暴力
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=1e6+;
inline int read()
{
char c=getchar();int flag=,x=;
while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
}
int n,m,q;
int fa[MAXN];
struct node
{
int u,v,w;
}edge[MAXN];
int num=;
inline void add_edge(int x,int y,int z)
{
edge[num].u=x;
edge[num].v=y;
edge[num].w=z;num++;
}
int comp(const node &a,const node &b)
{
return a.w>b.w;
}
int find(int x)
{
if(fa[x]==x) return fa[x];
else return fa[x]=find(fa[x]);
}
inline void unionn(int a,int b)
{
fa[find(a)]=find(b);
}
int happen[MAXN];
int cnt=;
inline void Kruskal()
{
sort(edge+,edge+num,comp);
int tot=;
for(int i=;i<=num-;i++)
{
if(find(edge[i].u)!=find(edge[i].v))
{
unionn(edge[i].u,edge[i].v);
happen[++cnt]=edge[i].w;
tot++;
if(tot==n-) break;
}
}
reverse(happen+,happen+cnt+);
}
int main()
{
n=read();m=read();q=read();
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=m;i++)
{
int x=read(),y=read(),z=read();
add_edge(x,y,z);
}
Kruskal();
for(int i=;i<=q;i++)
{
int p=read();
int pos=lower_bound(happen+,happen+cnt+,p)-happen;
printf("%d\n",pos);
}
return ;
}
t2
T3
写了30分的暴力,但是被卡T了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;
const int MAXN=1e4+;
const int INF=0x7ffff;
const int mod1=;
const int mod2=;
const int mod =1e9+;
inline int read()
{
char c=getchar();int flag=,x=;
while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
}
int n,q;
char word[MAXN][];
int len[MAXN];
int sum[MAXN];//长度>=i的单词有多少个
int mxlen=;
int hash[MAXN*];
bool pd(int now,int nowlen,int will,int need)
{
if(need-nowlen>len[will]) return ;
unsigned int seed=;
unsigned LL h=;
for(int i=;i<=nowlen;i++)
h=(h+( (seed*word[now][i])%mod2))%mod1,seed=seed*seed;
for(int i=len[will]-(need-nowlen)+;i<=len[will];i++)
h=(h+( (seed*word[will][i])%mod2))%mod1,seed=seed*seed;
h=h%mod1;
if(hash[h]==)
{
hash[h]=;
return ;
}
return ;
}
int main()
{
// freopen("word.in","r",stdin);
// freopen("word.out","w",stdout);
n=read(),q=read();
for(int i=;i<=n;i++)
{
scanf("%s",word[i]+);
len[i]=strlen(word[i]+);
mxlen=max(len[i],mxlen);
for(int j=len[i];j>=;j--)
sum[j]++;
}
for(int i=;i<=q;i++)
{
memset(hash,,sizeof(hash));
int qr=read(),ans=;
for(int j=;j<=n;j++)//枚举每个单词
for(int k=;k<=min(len[j],qr-);k++)//这个单词的长度
for(int l=;l<=n;l++)// 枚举其他的单词
if(pd(j,k,l,qr)==)
{
/* for(int o=1;o<=k;o++) cout<<word[j][o];
for(int o=len[l]-(qr-k)+1;o<=len[l];o++) cout<<word[l][o];
cout<<endl;*/
ans=(ans+)%mod;
}
printf("%d\n",ans%mod);
}
return ;
} /*
2 2
cool
at
6
3 //7 \n 5
*/
正解:
没听懂。。。。。
总结
终于翻了一次车了(啪,成天打暴力还好意思翻车)
T2没想到正解,,好失败啊。。。。
T3被卡成零分。。
交题的时候因为各种原因老师忘记把我的程序放到文件夹里了。。
GG
Day5上午解题报告的更多相关文章
- Day1上午解题报告
预计分数:100+60+0=160 实际分数:100+30+20=150 T1立方数(cubic) 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数 ...
- Day2上午解题报告
预计分数:100+0+60=160 实际分数:100+0+60=160 mmpT1数据错了... T1遭遇 题目描述 你是能看到第一题的 friends呢. —— hja ?座楼房,立于城中 . 第? ...
- Day3上午解题报告
预计分数:100+40+50=190 实际分数:100+40+50=190 T1 https://www.luogu.org/problem/show?pid=T15365 表示从来没做过博弈论的题, ...
- Day5下午解题报告1
预计分数:100+60+30=190 实际分数:100+60+30=190 终于有一道无脑T1了哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...
- Day4上午解题报告
预计分数:50 +0+0=50 实际分数:50+0+10=60 毒瘤出题人,T3不给暴力分 (*  ̄︿ ̄) T1 https://www.luogu.org/problem/show?pid=T155 ...
- 夏令营提高班上午上机测试 Day 4 解题报告
我要是没记错的话,今天的题难度算挺适中的. *标程来自高天宇哥哥 T1:小G的字符串 题目描述 有一天,小 L 给小 G 出了这样一道题:生成一个长度为 n 的.全由小写英文字母构成的字符串,只能使用 ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- 【LeetCode】306. Additive Number 解题报告(Python)
[LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
随机推荐
- Dojo入门篇
Dojo是一个JavaScript实现的开源DHTML工具包,Dojo最初的目标是解决开发HTML应用程序中遇到的一些长期存在的问题.然而如今Dojo已经成为了开发RIA应用程序的利器. Dojo让W ...
- 在SSM框架中我设置拦截器filter不能通过注解获取到实现类
我在用注解注入实现类的时候,出现了这样的错误:如以下截图: 这个地方报出的错误是说明我的一个接口类型的类没有获取到,后来我就想要是我的实现类没有获取到那么我就直接new一个实现类然后再进行调用就会出现 ...
- shrio 身份认证流程-Realm
身份认证流程 流程如下: 1.首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtils. setSecuri ...
- Controller接口控制器
1.Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业务对 ...
- iRedMail邮件系统配置简易视频安装教程
iRedMail邮件系统配置简易视频安装教程 iRedMail邮件系统配置简易视频安装教程 iRedMail中文名为“艾瑞得邮件系统”, 属于开源的企业邮件解决方案,但其性能不逊于任何商 ...
- linux下支持托盘的邮件客户端Sylpheed
在网上搜索了很多客户端想支持系统托盘,发现一个很不错的邮件客户端Sylpheed.设置方式和foxmail很像,最为重要的是支持系统托盘,很方便,默认没有开启,简单设置下:配置->通用首选项-& ...
- CSS2.1(布局)
浏览器内核 Firefox : geckoIE: tirdentSafari: webkitChrome: 一开始使用webkit 后来基于webkit开发了Blinkopera: 一开始使用pres ...
- Tensorflow 学习笔记 -----gradient
Tensorflow 的求梯度函数: [db, dW, dx] = tf.gradient(C, [b, w, x]) 在调试时用处较大. 实例: import tensorflow as tf im ...
- whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令用来定位指令的二进制程序.源代码文件和man手册页等相关文件的路径. whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件 ...
- LRJ入门经典-0906最短公共父串305
原题 LRJ入门经典-0906最短公共父串305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 给定字符串A和字符串B,要求 ...