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的矩阵,矩阵中的每个位置上都长着一棵树 ...
随机推荐
- Servlet深入学习,规范,理解和实现(中)——深入理解Tomcat(一)
心得:在写这篇博客之前.我大致阅读一些关于Tomcat的书籍和博客等资料.有些资料由于时间的关系,解说的Tomcat版本号太老.有些资料能够非常好的说明Tomcat整理结构和设计思想可是非常多重要的问 ...
- RvmTranslator6.6 - RVM to CATIA
RvmTranslator6.6 - RVM to CATIA eryar@163.com RvmTranslator can translate the RVM file exported by A ...
- vijos - P1176奇怪的数列 (递归 + 找规律)
P1176奇怪的数列 Accepted 标签:[显示标签] 背景 一天.学军数学小组的成员遇到了一个奇怪的数列,正巧信息小组的你碰到了他们. 于是他们把这个数列展示给你-- 描写叙述 这个数列是这种: ...
- ubuntu 下安装eclipse &java环境配置
前面有一篇的博客写的是ubuntu下安装eclipse和java环境的配置.当时是安装网上的攻略进行的 ,当然也是能够成功的. 近期把那台电脑送人了 ,仅仅好在自己的这台电脑上又一次安装一次了 ,唯一 ...
- pip报错
You are using pip version 9.0.1, however version 10.0.1 is available.You should consider upgrading v ...
- IBM软件技术峰会归来
为期两天在北京国际饭店会议中心的IBM软件技术峰会已近结束,此次大会最大的收获是能和沃森实验室的王博士沟通探讨人工智能软件的发展问题.领略到IBM 云计算首席架构师Jason R.McGee如何呼风唤 ...
- 【转】Android应用底部导航栏(选项卡)实例
现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...
- "getElementsByClassName is not a function" 报错原因
element.getElementsByClassName(""): 返回的含有该类的子元素数组,除了子元素以外的后代元素是获取不到的.要遍历使用,或者.element.getE ...
- 【Nginx从入门到实战】
目录 1. 网站服务 2. 所谓Nginx 3. 安装Nginx 4. Nginx配置文件详述 5. 开始玩转Nginx Nginx虚拟主机 Nginx状态信息(status)配置 Nginx错误页面 ...
- MOOC使用心得
1. Mooctest 使用心得 慕测平台是编程类考试和练习的服务平台,教师可以轻松监管考试流程,学生可以自由练习编程.系统负责编程练习的自动化评估及可视化展现,配合当下红火的MOOC慕课课程,慕测平 ...