【瓜分5000元奖金】Wannafly挑战赛13
链接:https://www.nowcoder.com/acm/contest/80/A
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
学家zzy根据字体的特点,创建了一系列小号... I_Love_Chtholly!
满足以下四种情况之一,所显示的字符是一样的
1、两个字符互为英文字母的大小写
2、大写的'i'和小写的'l'
3、大写的'o'和数字'0'
4、基于前三种情况,三个字符a,b,c,如果a和b显示相同,b和c显示相同,那么a和c显示也是相同的
珂学家zzy想知道,对于一个他看起来相同的昵称,有多少个看起来一样的昵称
两个字符串看起來一样当且仅当长度一样且每个对应的位置的字符看起來一样
输入描述:
一个字符串,只包含大小写字母和数字
输出描述:
共一行一个整数,表示看起来一样的昵称数,由于这个数比较大,所以只要求输出模1e9 + 7意义下的解
输入例子:
abcdl
输出例子:
64
-->
输入
abcdl
输出
64
说明
第一个位置、第二个位置、第三个位置、第四个人位置都只有两种显示相同的字符
第五个位置有四种显示相同的字符
备注:
字符串长度1<=|S|<=1e5
第三条规则看了一年,枚举了一年,就是特殊字符支持来回转换,那就乘*2,*3,*4的差别
#include<bits/stdc++.h>
using namespace std;
const int MD=1e9+;
int main()
{
string s;
cin>>s;
int n=;
for(int i=;s[i];i++)
if(s[i]>=''&&s[i]<='')continue;
else if(s[i]=='I'||s[i]=='l'||s[i]=='i'||s[i]=='L')n=n*1LL*%MD;
else if(s[i]=='O'||s[i]==''||s[i]=='o')n=n*1LL*%MD;
else n=n*%MD;
cout<<n;
return ;
}
链接:https://www.nowcoder.com/acm/contest/80/B
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽。
Jxc将天空看做一个n*n的矩阵,此时天上有m朵云,这些云会随机分布在m个不同的位置,同时太阳会随机出现在一个位置,Jxc想知道他被太阳晒到的概率是多少,由于他仍在站军姿,所以这个有趣的问题就交给了你。考虑到精度问题,Jxc只需要知道这个概率在对998244353取模意义下的值。
Tips:一个分数p/q在模意义下的值即p*q-1在模意义下的值,Xp-11 (mod p)
输入描述:
输入只有一行,包含两个整数n、m。n和m的意义见题面.
输出描述:
第一行包含一个整数Ans,为答案
输入例子:
2 2
输出例子:
499122177
-->
输入
2 2
输出
499122177
备注:
1 <= n, m <= 2000,m <=n^2
几何概型,答案就是(n*n-m)/(n*n),直接逆元
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MD=998244353LL;
int INV(ll x)
{
return x==?x:1LL*(MD-MD/x)*INV(MD%x)%MD;
}
int main()
{
ll n,m;
cin>>n>>m;
cout<<(n*n-m)*INV(n*n)%MD;
return ;
}
链接:https://www.nowcoder.com/acm/contest/80/C
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
一个8 * 8的棋盘,第一个格子放1个麦穗,第二个格子放2个麦穗,第三个格子放4个麦穗……那么最后,共要放几个麦穗呢?
zzf表示这个问题实在太简单,于是重新规定了游戏的规则。
初始的棋盘为空,棋盘大小为p*p,然后他要对棋盘进行若干次操作,可以被选择的操作如下:
1、选择一行,每个格子再放一个麦穗
2、选择一列,每个格子再放一个麦穗
进行若干次操作后,如果得到的棋盘满足如下性质
1、每个格子都有至少一个麦穗
2、每个格子最多只能有p*p个麦穗
3、任意两个格子的麦穗数不同
如果满足以上三条,那么称这个棋盘是一个好棋盘,若只是构造一个好棋盘那就太没意思了,zzf想知道他能得到多少个不同的好矩阵
定义不同的矩阵即只要存在一个位置不同即是不同的
答案对998244353取模
输入描述:
第一行读入一个数p,表示这个棋盘的大小
输出描述:
输出一行包括一个数,表示好棋盘的个数
输入例子:
2
输出例子:
8
-->
输入
2
输出
8
说明
样例解释 :
1 2
3 4
3 4
1 2
1 3
2 4
2 4
1 3
2 1
4 3
4 3
2 1
3 1
4 2
4 2
3 1
备注:
2 <= p <= 1e6, 保证p是质数
其实要填的东西是一定的啊,每个矩阵要加的次数是(1+n*n)*n/2假设横行值大于竖行,你会发现其实只有一种填法的,而且每个数都不同,就是他的全排列,行列不同就是两倍

感谢biu哥的真情绘图
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MD=998244353LL;
int main()
{
ll p,ans=;
cin>>p;
for(int i=;i<=p;i++)
ans=ans*i%MD;
cout<<ans*ans%MD*%MD;
return ;
}
链接:https://www.nowcoder.com/acm/contest/80/D
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量与最大的蛋糕的质量的比值不小于一个值。但是applese的刀功并不是很好,所以他希望切尽量少的刀数使得所得到的蛋糕满足条件。由于applese为了保证每一块蛋糕的质量和期望的没有偏差,所以他一刀只能切下一块蛋糕,即将一块蛋糕分成两块,同时,他不能一刀同时切两块蛋糕,也就是说,applese一次只能将一块蛋糕分割成两块指定质量的蛋糕,这两块蛋糕的质量和应等于切割前的蛋糕的质量。Applese还急着准备各种派对用的饰品呢,于是他把这个问题交给了你,请你告诉他至少要切割几次蛋糕
输入描述:
第一行包括两个数T,n,表示有n个蛋糕,最小的蛋糕的质量与最大的蛋糕的质量的比值不小于T
接下来n行,每行一个数wi,表示n个蛋糕的质量
输出描述:
输出包括一行,为最小切割的刀数
数据保证切割次数不超过500
输入例子:
0.99 3
2000 3000 4000
输出例子:
6
-->
输入
0.99 3
2000 3000 4000
输出
6
备注:
0.5 < T < 1
1 <= n <= 1000
1 <= wi <= 1000000
暴力切的刀数,但是要处理精度问题的,不然就T了
#include<bits/stdc++.h>
using namespace std;
int w[],a[];
double eps=1e-;
int main()
{ int n;
int ans=-;
double t;
cin>>t>>n;
for(int i=;i<n;i++)
cin>>w[i];
for(int i=;i<=;i++)
{
int flag;
double maxx=;
double maxxb=;
double minn=;
for(int j=;j<n;j++)
{
double tmp=w[j];
if(tmp/(a[j]+)>maxx)
{
maxx=tmp/(a[j]+);
flag=j;
}
if(fabs(tmp/(a[j]+)-maxx)<eps)
{
if(w[j]>w[flag])
flag=j;
}
maxxb=max(maxxb,tmp/(a[j]+));
minn=min(minn,tmp/(a[j]+)); }
if(minn/maxxb-t>=)
{
ans=i;
break;
}
else
{
a[flag]++;
}
}
cout<<ans<<endl;
return ; }
链接:https://www.nowcoder.com/acm/contest/80/E
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
VVQ 最近迷上了线段这种东西
现在他手上有 n 条线段,他希望在其中找到两条有公共点的线段,使得他们的异或值最大。 定义线段的异或值为它们并的长度减他们交的长度
输入描述:
第一行包括一个正整数 n,表示 VVQ 拥有的线段条数。
接下来 n 行每行包括两个正整数 l,r,表示 VVQ 拥有的线段的 左右端点。
输出描述:
一行一个整数,表示能得到的最大异或值
输入例子:
3
10 100
1 50
50 100
输出例子:
99
-->
输入
3
10 100
1 50
50 100
输出
99
说明
选择第二条和第三条,99-0=99
备注:
1<=n<=200000,1<=l<=r<=1e8
可以作为线段树模板,用线段树用更新的,甚至堆可以过
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+;
struct T
{
int l,r;
bool operator <(const T p)const
{
return l+r>p.l+p.r;
}
} p[N];
bool cmp(T a,T b)
{
return a.l==b.l&&a.r<b.r||a.l<b.l;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(),cout.tie();
int n;
cin>>n;
for(int i=; i<n; i++)cin>>p[i].l>>p[i].r;
sort(p,p+n,cmp);
priority_queue<T>Q;
Q.push(p[]);
int r=p[].r,l=p[].r-p[].l,ans=;
for(int i=; i<n; i++)
{
if(p[i].r>r)
r=p[i].r,l=p[i].r-p[i].l;
else
ans=max(ans,l-(p[i].r-p[i].l));
while(!Q.empty()&&Q.top().r<p[i].l)Q.pop();
if(!Q.empty())ans=max(ans,(p[i].l+p[i].r)-(Q.top().l+Q.top().r));
Q.push(p[i]);
}
cout<<ans<<"\n";
return ;
}
【瓜分5000元奖金】Wannafly挑战赛13的更多相关文章
- Wannafly挑战赛13 zzf的好矩阵 题解 答案解释
Wannafly挑战赛13 zzf的好矩阵 题解 文章目录 Wannafly挑战赛13 zzf的好矩阵 题解 分析 结论1 结论2 结论3 C数组对应带子说明 空白长度论述 后续黑色长度论述 能&qu ...
- Wannafly挑战赛13 D.applese的生日(贪心+思维)
题目描述 最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量 ...
- Wannafly挑战赛13 C:zzf的好矩阵(思维)
题目描述 一个8 * 8的棋盘,第一个格子放1个麦穗,第二个格子放2个麦穗,第三个格子放4个麦穗……那么最后,共要放几个麦穗呢? zzf表示这个问题实在太简单,于是重新规定了游戏的规则. 初始的棋盘为 ...
- Wannafly挑战赛13 B:Jxc军训(逆元)
题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个n*n的矩阵,此时天上有m朵云,这些云会随机分布在m个不同的位置 ...
- Wannafly挑战赛18B 随机数
Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...
- 价值5000元的web报表分享
价值5000元的web报表分享 与一个朋友聊天,发现他最近做了一个很棒的报表,用他的话来讲,起码值5000RMB,我拿来与大家分享下,共同进步. 用朋友A的话,就是他最近接到公司财务部长大人的需求,需 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
随机推荐
- /usr/local/sbin/fping -s www.baidu.com www.google.com
/usr/local/sbin/fping -s www.baidu.com www.google.com
- JavaScript 的 parseInt 取整
http://www.neoease.com/javascript-get-integer-via-parseint/ JavaScript 是弱类型语言, 为了保证数值的有效性, 在处理数值的时候, ...
- 爬去豆瓣图书top250数据存储到csv中
from lxml import etree import requests import csv fp=open('C://Users/Administrator/Desktop/lianxi/do ...
- 安装指定版本的minikube
Minikube是什么? Kubernetes集群的安装和部署对于很多初学者来说是一道坎.为了方便大家开发和体验Kubernetes,Kubernetes开源社区提供了可以在本地部署的Minikube ...
- 2015 ACM/ICPC Asia Regional Changchun Online Pro 1005 Travel (Krsukal变形)
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- Android(java)学习笔记137:ListView编写步骤(重点)
1.ListView在我们的手机android编写程序中使用是十分广泛的,比如如下图中 短信 和 手机设置 都是ListView的效果: 手机设置: 短信: 2.正因为这 ...
- cv2.minAreaRect() 生成最小外接矩形
简介 使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是所要求最小外接矩形的点集数组或向量,这个点集不定个数. cv2 ...
- js判断是否为app
var ua = navigator.userAgent; var isapp = ua.match("lenovomallapp") == null ? 0 : 1;
- 前缀树,trie树
前缀树: 假设一个字符串数组,“abcd”,"bcd","gef" , 构建一颗树,字母是在路径上,节点上最基本的存储的信息包括: 以这个节点结尾的 字符串的数 ...
- oracle 命中率
一般在I/O 使用中,为了提高系统处理速度,系统提前将数据读入一块内存区,叫高速缓存,但提前读入的数据未必就是需要的,这就是命中率..计算公式为 命中率=1-(physical reads/(db b ...