【2020 ICPC Asia East Continent Final】赛前训练
这里写自定义目录标题
- 【2020 ICPC Asia East Continent Final】赛前训练
- A - Namomo Subsequence
- 输入:
- 输出:
- 样例:
- 解析:
- 代码:
- F - Rooks
- L - Square
- 解析:
【2020 ICPC Asia East Continent Final】赛前训练
A - Namomo Subsequence
输入:
输出:
样例:
解析:
“namomo”类子序列可以拆为"na"和“momo”两部分,两部分分别计算然后乘起来容斥一下即可,分5种情况:abcdcd (b!=c、a!=b、c!=d)、cbcdcd (c!=d、b!=c、c!=b), adcdcd (a!=d、c!=d、d!=c), dbcdcd (d!=b、b!=c、c!=d), ababab(a!=b) 遍历每个"m"并枚举每一个"o",结果为abcdcd-cbcdcd-adcdcd-dbcdcd+ababab,时间复杂度62*n
代码:
#include<iostream>
#include<cstring>
using namespace std;
typedef long long LL;
const int N = 1e6+5,mod=998244353;
char str[N];
int len;
int dp1[64][N];//dp1[j][i] 在i的位置时,向后str[i]jstr[i]j有多少str[i]!=j
int dp3[62];//dp3[i] 向后有多少i
int dp2[62];//dp2[i] 向前有多少i
int dp0[62];//向前ij有多少i!=j
LL ab[62][62];//ab[i][j] 向后有多少形如ij的 (i!=j)
LL bab[62][62];//bab[i][j] 向后有多少形如jij的(i!=j)
LL ans=0;
LL xb[62];// xb[i] 向前有多少形如ib的 (i!=b,b任意)
LL ax[62];// ax[i] 向前有多少形如ai的 (i!=a,a任意)
LL tt[62][62];// tt[i][j] 向前有多少形如ij的 (i!=j)
int mpp(int ch){if(ch>='0'&&ch<='9'){return ch-'0';}if(ch>='A'&&ch<='Z'){return ch-'A'+10;}return ch-'a'+36;
}
int mp[256];
int main(){scanf("%s",str+1);len=strlen(str+1);for(int i='0';i<='9';++i)mp[i]=mpp(i);for(int i='A';i<='Z';++i)mp[i]=mpp(i);for(int i='a';i<='z';++i)mp[i]=mpp(i);for(int i=len;i>=1;--i){int c=mp[str[i]];for(int j=0;j<62;++j){if(c==j)continue;dp1[j][i]=dp1[j][i]+bab[c][j];if(dp1[j][i]>=mod)dp1[j][i]-=mod;bab[j][c]=(bab[j][c]+ab[j][c]);if(bab[j][c]>=mod)bab[j][c]-=mod;ab[c][j]=ab[c][j]+dp3[j];if(ab[c][j]>=mod)ab[c][j]-=mod;}dp3[c]++;}for(int i=1;i<=len;++i){int c=mp[str[i]];LL sum=0;for(int j=0;j<62;++j){if(j!=c){sum=(sum+dp0[j]);if(sum>=mod)sum-=mod;}}for(int j=0;j<62;++j){if(c==j){dp0[c]=((LL)dp0[c]+i-1-dp2[c]);if(dp0[c]>=mod)dp0[c]-=mod;ax[j]=(ax[j]+i-1-dp2[j]);if(ax[j]>=mod)ax[j]-=mod;continue;}LL temp=dp1[j][i];LL db=(xb[j]-tt[c][j]+mod);if(db>=mod)db-=mod;xb[j]=(xb[j]+dp2[j]);if(xb[j]>=mod)xb[j]-=mod;tt[c][j]=(tt[c][j]+dp2[j]);if(tt[c][j]>=mod)tt[c][j]-=mod;ans=(ans+(sum-xb[c]-ax[j]-db+tt[j][c]+3LL*mod)%mod*temp)%mod;}dp2[c]++;}printf("%lld\n",ans%mod);return 0;
}
F - Rooks
签到题,按X轴排一下序,按Y轴排一下序,判断相邻的节点即可。
L - Square
解析:
首先对每一个数质因子分解,并对每一个质因子的指数对2取模(2倍的质因子对结果无影响),对每一个质因子分开讨论,发现现规律:如果要使数组满足条件,对于这个质因子要么所有数都有,要么都没有(指的是指数对2取模为0),因为如果只有部分有,那必存在相邻的两一个有,一个没有,这中情况是不满足这两个数的乘积是完全平方数的。据此可的解
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10,mod=1e9+7;
int a[N];
int cnt[N];
void div(int x)
{for(int i=2;i*i<=x;i++){int c=0;while(x%i==0){x/=i;c++;}c%=2;cnt[i]+=c;}if(x>1)cnt[x]++;
}
LL qpow(LL a,LL k,LL p)
{LL res=1;while(k){if(k&1)res=res*a%p;k>>=1;a=a*a%p;}return res;
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++){div(a[i]);}LL ans=1;for(int i=1;i<N;i++){if(cnt[i]){ans=ans*qpow(i,min(cnt[i],n-cnt[i]),mod)%mod;}}printf("%lld",ans);
}
【2020 ICPC Asia East Continent Final】赛前训练相关推荐
- 2020 ICPC Asia East Continent Final D. City Brain(最短路+三分)
传送门 题意: 给出nnn 个点,mmm条边的无向带权图,初始边权都为111,一共有kkk 次操作机会,每次操作可以选择一条边使其边权+1+1+1, 通过一条边的时间为 1/1/1/边权 ,求mi ...
- 2020 ICPC Asia East Continent Final_K.Allin
题面: 题意: 打牌题,意思是说给你五张牌h1,h2,c1,c2,c3:除此之外本题还要考虑未给出的四张牌c4,c5,以及p1,p2. p1,p2是对面已知有的牌,h1,h2是我手上已知有的牌. c1 ...
- 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 题解(10 / 13)
2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 9题金 6题银 5题铜 题目比较简单,但是读题太难了- 比赛链接:htt ...
- The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
题目链接The 2020 ICPC Asia Shenyang Regional Programming Contest 题目大意: 一天内有H小时,每小时M分钟,时针分针以恒定速率旋转. 现在若时针 ...
- The 2020 ICPC Asia Yinchuan Regional Programming Contest
The 2020 ICPC Asia Yinchuan Regional Programming Contest A 开三个vector数组存储x,y,z轴上的点,unique+erase去重 #in ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia East Continent Finals 在此附上吉老师的视频题解 Problem C:Heretical - Möbius 思路:根据莫比乌斯系数 ...
- The 2017 ACM-ICPC Asia East Continent League Final记录
首先感谢tyz学弟的麻麻-给我们弄到了名额- 然后就开始了ACM ECLFinal的玩耍,A*仙人掌可是立了flag要好好打的- 试机赛好像就全是GCJ kickstart的原题,然后AK了但是由于一 ...
- 2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)
LINK 小范围手动模拟,发现不管怎样都可以平局,一时间不知道怎样必胜 考虑样例n=7n=7n=7的情况 先手现在中间放下一个SSS 然后不管后手怎么走,先手都在另一侧的端点放一个SSS(下面用eee ...
- 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final 2017)
地址 Rank Solved A B C D E F G H I J K L M 126/547 7/13 O O O . . . Ø O . O O . O O: 当场通过 Ø: 赛后通过 .: 尚 ...
最新文章
- 从Java到Spring为何独得青睐Spring Summit 2017不可不知的那些事儿
- enscape渲图按哪个键_手机输入法之争:九宫格和全键盘哪个更科学?
- 关于《资产负债表》中未分配利润项目的填列
- HBase数据迁移到Kafka实战
- pythonchallenge_level2
- 来聊一聊window.fetch
- linux配置本地yum(CentOS7)
- 简约几何艺术海报PSD分层模板,即使简单也足以控制观众的注意力。
- vscode 开发maven项目(springboot项目)
- lob移表空间 oracle_关于oracle带lob对象的分区表,移动表空间的问题
- ArcGIS中裁剪(clip)出现000117错误的解决办法
- js文本框设置必填项_表单字段必填项JS代码
- 金融科技赋能 互融云手机回租系统 实现资产全流程在线运营管理
- 利用百度API进行淘宝评论关键词提取
- Python小项目(学生成绩管理系统)7.排序、显示部分
- Springboot Swagger2 Unable to infer base url问题解决
- 从《道德经》看项目经理修炼的7条法则,你做到了几条?
- java中栈的两种实现
- Vue中的component
- Mac Word 公式自动编号与交叉引用