B.https://ac.nowcoder.com/acm/contest/42400/B

题目大意,就是选取两个合法矩形,求总方案数为多少。

思路:可以很巧妙的转化一下问题,选取两个矩形,本质上就是在x和y轴各选四个点,外侧两个点可以认为就是大矩形的顶点,内部两个点认为是小矩形的的顶点,

则总方案数为C(n+1,4) * C(m+1,4),组合数直接求解即可.

思路转换很妙,记录一下。完整代码如下:

#include<bits/stdc++.h>using namespace std;
#define int long long
const int N=2e5+10,mod=1e9+7;
int fac[N],infac[N];
int qmi(int a,int k)
{int ans=1;while(k){if(k&1) ans=ans*a%mod;a=a*a%mod;k>>=1;}return ans;
}
void init()
{fac[0]=1;infac[0]=1;for(int i=1;i<N;i++) fac[i]=fac[i-1]*i%mod;for(int i=1;i<N;i++) infac[i]=infac[i-1]*qmi(i,mod-2)%mod;
}
int C(int a,int b)
{if(a<b) return 0;return ((fac[a]*infac[b]%mod)*infac[a-b])%mod;
}signed main()
{init();int t;cin>>t;while(t--){int n,m;cin>>n>>m;cout<<C(n+1,4)*C(m+1,4)%mod<<endl;}return 0;
} 

M.https://ac.nowcoder.com/acm/contest/42400/M

题目大意,给定一个字符串,多次询问s[L,R]这一段字串是否为该字符串的循环节。提到循环节,很容易想到KMP, 因为我们可以根据ne数组来求最小循环节,但我写到这里卡住了,发现还需要用到字符串哈希,后面看了题解,里面给出了一个结论:假设最小循环节长为len, 则s[L,R]为循环节的条件为 (L-1)%len==0 && R%len==0 && n%(R-L+1)==0 ,具体证明没有给出,如有大佬证明了可以告诉我呀!(我就先当结论记住)此方法时间复杂度为O(n).

另外,本题还能用字符串hash来做,暴力的判断字串是否为循环节,时间复杂度为O(logn*n),也可以通过此题。

KMP代码:

#include<bits/stdc++.h>using namespace std;
#define ios std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N=1e6+10;string s;
int ne[N];
int n,m;void get_next()
{for(int i=2,j=0;i<=n;i++){while(j&&s[i]!=s[j+1]) j=ne[j];if(s[i]==s[j+1]) j++;ne[i]=j;}}
signed main()
{//cin>>n>>m;scanf("%d%d",&n,&m);cin>>s;s=" "+s;get_next();while(m--){int l,r;//cin>>l>>r;scanf("%d%d",&l,&r);l++; r++;int len=n-ne[n];//if(l==1&&r==n) printf("YES\n");if((l-1)%len==0&&r%len==0&&n%(r-l+1)==0) printf("YES\n");else printf("NO\n");}return 0;
} 

字符串hash:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef unsigned long long ull;
const int N = 1e6 + 5, P = 131;
int n, m;
char s[N];
ull p[N], h[N];
bool st[N];
ull get(int l,int r) {return h[r] - h[l - 1] * p[r - l + 1];
}
void check(int x) {for (int i = 1; i <= n; i += x) {if (get(i, i + x - 1) != get(1, x)) return ;}st[x] = true;
}
int main() {scanf("%d%d", &n, &m);scanf("%s", s + 1);p[0] = 1;for (int i = 1; i <= n; i++) {p[i] = p[i - 1] * P;h[i] = h[i - 1] * P + s[i];}for (int i = 1; i <= n / i; i++) {if (n % i == 0) {check(i);check(n / i);}}while (m--) {int l, r;scanf("%d%d", &l, &r);l++, r++;if (st[r - l + 1] && get(1, r - l + 1) == get(l, r)) puts("YES");else puts("NO");}return 0;
}

集美大学第九届程序设计竞赛 部分题解(待补充)相关推荐

  1. 北华大学第九届程序设计竞赛 题解

    5.14和队友VP一场,第二次VP,状态明显比第一次好很多,总共A了7题,基本是能做出来的都做出来了,最后还剩下接近2小时的时间..... A "北华"有几何 思路:数图片中&qu ...

  2. 东北农业大学第九届程序设计竞赛 题解

    啦啦啦,我现在已经能ak校赛啦,啦啦,一年没白学(大雾) A:DLK的魔法 分析:这题直接逆推,每次将当前数字尽量变成一个平方数,然后直接平方,直到1 思路:尽量少使用+1操作,就是最优方案,那么就是 ...

  3. 湖南文理学院第十六届程序设计竞赛_题解

    我是比赛链接 A(AtCoder):平方不等式 思路(huas_wlq): 直接判断输出 #include <bits/stdc++.h> /// 万能头文件(囊括了绝大多数的头文件,无需 ...

  4. 长沙理工大学第十五届程序设计竞赛部分题解

    校赛都过去了几天了才想起来写博客 老懒狗了 这次感觉算一点点超常发挥 出了七题 排在第八名 还拿了两个一血气球 虽然之后发现有道题暴力就能过 但是还是挺开心的 而且这次比yy他们队还高一名 哈哈哈哈 ...

  5. 科林明伦杯哈尔滨理工大学第九届程序设计竞赛

    A氵题 B错排公式 C 不太懂卡塔兰数是啥东西,于是乎写的是一个n^2的dp,暴力打表写文件里,然后复制到代码里,然后切掉了 打表代码 #include<bits/stdc++.h> us ...

  6. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛部分题解

    B 减成一 差分 输入同时对原数组处理,最终区间减数即为每次差分的累加和 int a[100010]; int b[100010]; int main() {t=read();while(t --) ...

  7. 科林明伦杯哈尔滨理工大学第九届程序设计竞赛 H 题(dfs)

    深度优先搜索!!!!! n 个数中取不超过 k 个数并将他们相加,请问有多少种不同的取法使得取出的数的和是质数 Input多组数据,第一行一个整数 T 表示数据组数(T<=5)对于每一组数据:第 ...

  8. “九韶杯”河科院程序设计协会第一届程序设计竞赛 部分题解

    (大型翻车 A 602 #include<bits/stdc++.h> using namespace std; int main(){int sum=0;for(int i=6;i< ...

  9. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解 萌新又来写题解啦 原题链接 B 减成一 题意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多 ...

最新文章

  1. 智能手环功能模块设计_基于STM32实现智能手环设计
  2. android图片跳转动画效果,Android实现Activity界面切换添加动画特效的方法
  3. git 添加review的相关操作
  4. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 【转】
  5. zigbee学习之定时器
  6. 思想篇(3)—IT运用模式的轮回
  7. WPF界面设计中常用的一些代码片段及属性
  8. day3-3.4字符编码与转码
  9. 拓端tecdat|R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
  10. 真正菜鸟用教程之WQSG Scrip Export WQSG (脚本导出导入工具,PSP、NDS汉化必备 )
  11. 云服务预先定义正确的云计算SLA要求
  12. weblogic启动慢原因
  13. Docker安装mysql:Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
  14. 46招健脑秘笈,让你变得更聪明
  15. 品优购项目html+css+js
  16. 仿淘宝购物车demo 增加和减少商品数量
  17. MySQL5.7找到data文件夹
  18. 主数据标准化项目阶段划分、实施难点及应对措施经验分享
  19. 铁路网络售票是利用计算机,铁路客运计算机售票具体操作图文.pdf
  20. 芯片片上SRAM存储概略及生成使用实践 (下)

热门文章

  1. 电脑上给照片抠图怎么做?怎样在线一键抠图?
  2. 1999年大学生电子竞赛--频率特性测试仪(草稿)
  3. win7截图快捷键失效
  4. Tea – 简洁的云笔记
  5. 基于SpringBoot在线教育平台系统
  6. 水稻样品基因型快速鉴定
  7. office 2010 ppt幻灯片自动播放
  8. 【笔记】华莱士(Wallis)公式
  9. 自相关系数 ACF与偏自相关系数PACF,拖尾和截尾
  10. 致远项目管理SPM系统五大技术平台层-CTP能力概述