转战Atcoder,这场比赛的名字看起来就很有趣的样子,很盛大的感觉,那当然赶紧来玩玩

A - Takahashi Calendar

思路:定义新日历算法,求特定日子数
典型的签到题,当然是直接在新日历上跑一遍即可

#include <bits/stdc++.h>
using namespace std;int main()
{int mm,dd;scanf("%d%d",&mm,&dd);int sum = 0;for(int m=1;m<=mm;m++){for(int d=1;d<=dd;d++){int d1 = d%10;int d10 = d/10;if(d1>=2&&d10>=2&&d1*d10==m)sum++;}}printf("%d\n",sum);return 0;
}

B - Kleene Inversion

思路:看似一个很复杂的逆序对问题,立刻想着像逆序对上套,实则不然,由于子串长度过短,完全可以直接暴力预处理掉子串,处理掉该串中的大小和该位置后的大小,最后只是个小小数学计算问题了。而对于大数带模除法,直接一个逆元搞定

#include <bits/stdc++.h>
using namespace std;typedef long long ll;const int maxn = 2e3+5;const ll mod = (ll)(1e9+7);int aa[maxn],rk[maxn],ne[maxn];ll gcd(ll a,ll b, ll &x,ll &y)
{if(b == 0){x = 1;y = 0;return a;}else{ll r = gcd(b,a%b,y,x);y -= x * (a / b);return r;}
}ll ni(ll a,ll n)
{ll x, y;ll d = gcd(a, n, x, y);ll ans;if(d == 1){x %= n;x += n;x %= n;ans = (x % n);return ans;}else{return -1;}
}
int main()
{int n,k;ll b=0LL;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&aa[i]);rk[i] = 0;ne[i] = 0;}for(int i=0;i<n;i++){for(int j=0;j<i;j++){if(aa[i]>aa[j])rk[i]++;}for(int j=i;j<n;j++){if(aa[i]>aa[j]){ne[i]++;rk[i]++;}}b = (b + (((((((ll)rk[i]*(ll)(k-1))%mod)*(ll)k)%mod)*ni(2,mod))%mod) + (((ll)ne[i] * (ll)k)%mod)) % mod;}printf("%lld\n",b);return 0;
}

C - Cell Inversion

思路:翻转序列题,也是个看似很困难的题,但细心品味也确实是一道很有意思的题目

首先,题目中明确说明了每个点都必须翻转一次,这就意味着必会存在n组翻转组合,问题的关键就是找出个n种组合方式,至于组合之间的顺序并不重要

于是二话不说,先来个关于n的全排列。

接下来,由于序列翻转的核心就在元素变换交叉处。

不难发现,这题可以转化为将变换端点视为括号的括号匹配题,由于每个点比对应一个括号,则相邻两个括号之间的关系将成为关键。
若相邻两个点均为左括号或均为右括号,由于外侧点多进行了一次变换,导致这两点必然不同;相应若相邻两点括号相同,则刚好形成一种无缝连接,使得变换结果必相同。

当然,一旦确定了每个点所属的变换类型,相应的对应匹配对也不重要了,因为只要能满足括号匹配规则(允许括号交叉,不允许右括号先于左括号),匹配出来的结果必能相同。

这样算来,只需要计算每次右括号出现时前面已出现的左括号数量,作为方案数,并任意消耗一个左括号进行匹配

最后,就可以根据相邻点间的元素关系预处理各个点的变换类型,然后再遍历计算方案数即可

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5+5;
const ll mod = ll(1e9+7);char s[maxn];
int s2[maxn];int main()
{int n;scanf("%d%s",&n,s);s2[0] = 1;for(int i=1;i<2*n;i++){if(s[i]==s[i-1])s2[i] = (s2[i-1]+1)%2;elses2[i] = s2[i-1];}ll sum = 1LL;for(int i=2;i<=n;i++){sum = (sum * (ll)i)%mod;}//cout << sum << endl;int num = 0;for(int i=0;i<2*n;i++){//out << sum << "*" << num << endl;if(s2[i]==1)num++;else{sum = (sum * ll(num))%mod;//cout << sum << "*" << num << endl;num--;}}if(s[0]=='W'||num!=0)printf("0\n");elseprintf("%lld\n",sum);return 0;
}

Japanese Student Championship 2019 Qualification相关推荐

  1. 【AtCoder】Japanese Student Championship 2019 Qualification题解

    Japanese Student Championship 2019 Qualification题解 A. Takahashi Calendar ◇题目传送门◆ 题目大意 定义Product Day为 ...

  2. Japanese Student Championship 2021 D - Nowhere P(递推 + 快速幂)

    传送门 这题很明显存在一个递推关系,思考了一下果然如此. 设dp[i][j]为前i项的和膜p为j的方案数,显然dp[i+1][j] = sum(dp[i][k]), (k + j != p), 那么问 ...

  3. (C++题目)定义一个描述学生基本情况的类Student,数据成员包括姓名、学号、英语成绩和高数成绩;成员函数包括构造函数、析构函数、获取姓名、获取学号、求出平均成绩,以及显示各

    定义一个描述学生基本情况的类Student,数据成员包括姓名.学号.英语成绩和高数成绩:成员函数包括构造函数.析构函数.获取姓名.获取学号.求出平均成绩,以及显示各科成绩和平均成绩的显示函数.编写ma ...

  4. Microsoft office 家庭学生版(Home Student)下载地址

    记录Microsoft office 家庭学生版下载地址 Hi!这是一篇资源下载记录呀! 之前一直觉着office专业版应该最好吧,然后每次安装都整了个全家桶--直到我发现,家庭学生版只安装Word. ...

  5. NLP预训练模型综述

    文章目录 文章 介绍 背景 2.1语言表示学习 非上下文词嵌 2.2 神经上下文编码器 2.2.1 序列模型s 2.2.2 非序列模型 2.2.3 分析 2.3 为什么预训练? 2.4 NLP的PTM ...

  6. Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解...

    2019独角兽企业重金招聘Python工程师标准>>> 查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的 ...

  7. mysql内连接部门平均值_详解MySql基本查询、连接查询、子查询、正则表达查询_MySQL...

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

  8. 全民一起玩Python提高篇第十二课:面向对象基本原理与语法(三)

    继承 class A:def __init__(self):self.money=50000000self.house=100def my_small_goal(self):print('先挣他一个亿 ...

  9. C#基础--LINQ

    文章目录 LINQ LINQ 概述 列表和实体 LINQ 查询 标准查询操作符 筛选 用索引筛选 类型筛选 复合的from子句 排序 分组 查询中的变量 嵌套的对象分组 内连接 左外连接 组连接 集合 ...

  10. Android学习——Adapter适配器

    AdapterView: 容器控件,其整体效果由每一个子元素内容决定,子元素的形式由Adapter决定. AdapterView的子视图对象: ListView:以垂直滑动列表形式显示一组数据. Gr ...

最新文章

  1. 业务库负载翻了百倍,我做了什么来拯救MySQL架构?
  2. C 语言 sizeof 用法
  3. linux下VNC配置详解
  4. malloc和free函数详解
  5. 雷蛇灯光配置文件_消费降级?不我只是体验灯光,雷蛇萨诺狼蛛V2开箱
  6. 飞鸽传书(IPMSG)协议(翻译稿)
  7. centos6.7x86_64php7安装笔记 new
  8. 未来10年,将被人工智能/机器学习/大数据颠覆的三大行业
  9. PEP8 Python 编码规范
  10. NPAPI插件:不要使用malloc,使用NPN_MemAlloc
  11. pyqt5 treewidget图标_Python基础之PyQt5写TreeWidget(二)--代码篇
  12. 星广互动推出全球首个智能AR广告平台 重塑UGC视频广告价值
  13. python爬取淘宝数据魔方_读《淘宝数据魔方技术架构解析》有感
  14. python入门系列(4) -- python常见应用
  15. python transforms_2.2 图像预处理——transforms(笔记)
  16. 好记性真的不如烂笔头
  17. 什么是互联网产品策划、什么是运营策划(经典收藏)
  18. Android 免 root 抓包简易教程
  19. 【RANSAC与单应性矩阵H求解】
  20. kafka生产者的发送消息的流程以及代码案例

热门文章

  1. nrg文件是什么?nrg文件格式详细介绍
  2. 关于学习的认知方法 | 九七的奇思妙想
  3. 项目复盘内容及注意事项
  4. vue项目html5调取手机摄像头录像并上传
  5. kubernetes 源码安装1.18.3 (7)部署cni网络
  6. IT行业程序员工资一般多少?发量与薪资成反比
  7. LOJ6070 基因 分块+回文自动机
  8. 西安电子科技大学计算机学院保研政策,西安电子科技大学计算机学院(专业学位)计算机技术保研条件...
  9. 大话2服务器丢失怎么修复,我玩大话2,现在服务器找不见了,怎么办?
  10. Excel 批量合并相同内容单元格方法