首页 > 编程语言 >【补题记录】HUSTFC 2023 / 2023 年华中科技大学程序设计竞赛新生赛

【补题记录】HUSTFC 2023 / 2023 年华中科技大学程序设计竞赛新生赛

时间:2023-11-04 23:49:11浏览次数:38  
标签:ch int 华中科技大学 sum cg ++ 补题 2023 nw

HUSTFC 2023

题目来源:Luogu P9769~P9782

J. 基因编辑

tag:Trie

因为 \(i,j\) 没有限制,所以题目求的其实等价于枚举一个串 \(k\) 以及一个位置 \(x\),求正好可以匹配 \(k\) 的前 \(x\) 位的串数量乘上至少可以匹配 \(k\) 的后 \(|S_k|-x\) 位的串的数量,这里一个至少一个正好可以不重不漏得算出每一种情况,然后就可以用 Trie 维护了。

//P9778
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N = 2e6 + 10;
int n, ch[2][N][4], sum[2][N], cnt[2], le[N], ri[N];
string s[N];
typedef long long ll;
ll ans = 0;

int cg(char c){
	return c == 'A' ? 0 : c == 'C' ? 1 : c == 'G' ? 2 : 3;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	for(int i = 1; i <= n; ++ i){
		cin >> s[i];
		int nw = 0;
		int l = s[i].size();
		for(int j = 0; j < l; ++ j){
			if(!ch[0][nw][cg(s[i][j])]){
				ch[0][nw][cg(s[i][j])] = ++ cnt[0];
			}
			nw = ch[0][nw][cg(s[i][j])];
		}
		++ sum[0][nw];
		nw = 0;
		for(int j = l-1; j >= 0; -- j){
			if(!ch[1][nw][cg(s[i][j])]){
				ch[1][nw][cg(s[i][j])] = ++ cnt[1];
			}
			nw = ch[1][nw][cg(s[i][j])];
		}
		++ sum[1][nw];
	}
	for(int i = cnt[0]; i >= 0; -- i){
		for(int j = 0; j < 4; ++ j){
			if(ch[0][i][j]){
				sum[0][i] += sum[0][ch[0][i][j]];
			}
		}
	}
	for(int i = cnt[1]; i >= 0; -- i){
		for(int j = 0; j < 4; ++ j){
			if(ch[1][i][j]){
				sum[1][i] += sum[1][ch[1][i][j]];
			}
		}
	}
	for(int i = 1; i <= n; ++ i){
		int nw = 0;
		int l = s[i].size();
		le[0] = sum[0][nw] - 1;
		for(int j = 0; j < l; ++ j){
			nw = ch[0][nw][cg(s[i][j])];
			le[j+1] = sum[0][nw] - 1;
		}
		for(int j = 0; j <= l-1; ++ j){
			le[j] -= le[j+1];
		}
		nw = 0;
		ri[l] = sum[1][nw] - 1;
		for(int j = l-1; j >= 0; -- j){
			nw = ch[1][nw][cg(s[i][j])];
			ri[j] = sum[1][nw] - 1;
		}
		for(int j = l; j > 0; -- j){
			ri[j] -= ri[j-1];
		}
		ll sum = 0;
		for(int j = 0; j <= l; ++ j){
			sum += ri[j];
			ans += sum * le[j];
		}
	}
	printf("%lld\n", ans);
	return 0;
}

K. 不定项选择题

tag:数学

显然,\(n\) 项不定项选择题若没有全部不选,则有 \(2^n-1\) 种可能的答案,输出 \(2^n-1\) 即可。

//P9779
#include <bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin >> n;
	cout << (1 << n) - 1;
	return 0;
}

N. A+B problem

tag:数学

签到题。

//P9782
#include <bits/stdc++.h>
using namespace std;

int main(){
	char s[5], t[5];
	scanf("%s%s", s, t);
	int a = s[0] + t[0] - 'A' - 'A';
	if(a <= 25){
		putchar(a+'A');
	} else {
		putchar(a/26+'A');
		putchar(a%26+'A');
	}
}

标签:ch,int,华中科技大学,sum,cg,++,补题,2023,nw
From: https://www.cnblogs.com/KiharaTouma/p/17810038.html

相关文章

  • 2023-11-04:用go语言,如果n = 1,打印 1*** 如果n = 2,打印 1*** 3*** 2*** 如果n = 3,打印
    2023-11-04:用go语言,如果n=1,打印1***如果n=2,打印1***3***2***如果n=3,打印1***3***2***4***5***6***如果n=4,打印1***......
  • 2023年最强大厂Android面试题库来了,不接受反驳!
    前言上周和部门BP聊天,她说最近在boss上放出一个初级Android岗位,平均每天都能收到300多份简历。Android市场越来越卷,跳槽前做好技术进阶突击,才能稳拿offer。相信有过中、大厂面试经验的小伙伴都知道,中、大厂面试提问都不会是点到为止那么简单,很多面试官会就一个比较基础的问题,一......
  • HHKB Programming Contest 2023(AtCoder Beginner Contest 327)
    HHKBProgrammingContest2023(AtCoderBeginnerContest327)A-abintmain(){IOS;strings;cin>>n>>s;boolf=false;for(inti=1;i<n;++i)if(s[i-1]=='a'&&s[i]=='b&#......
  • 2023-02-16-horner-scheme
    layout:posttitle:秦九韶算法(霍纳法则)date:2023-02-1610:30:00+0800categories:Algorithmtags:C介绍秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。在西方被称作霍纳算法。秦九韶(约公元1202年-1261年),字道古,南宋末年人,出生于鲁郡(今山东曲阜......
  • HHKB Programming Contest 2023(AtCoder Beginner Contest 327)
    HHKBProgrammingContest2023(AtCoderBeginnerContest327)A.ab解题思路:模拟即可。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;voidsolve(){intn;cin>>n;strings;cin>>s;for(inti=0......
  • 2023.11.4——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.软考知识明日计划:学习......
  • 鹏程杯子2023 pwn
    主要就是修改stdin的最后几位,使他变为write,然后泄露libc,为所欲为即可。本人是卡在不知道stdin那里可以修改。然后使用一下jmpqwordrbp这个gadget0x400a93那个。fromevilbladeimport*context(os='linux',arch='amd64')context(os='linux',arch='amd64',log_level='......
  • 将语料文本写入数据库20231104
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;publicclassBaseDao{publicConnectionconn=null;publicPreparedStatementps=null;publicResultSetrs=null......
  • # 学期2023-2024-1 20231401 《计算机基础与程序设计》第六周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第六周作业这个作业的目标自学教材:计算机科学概论第7章并完成云班课测试《......
  • 考研数学笔记更新(2023年11月3日)
    奇函数必须关于原点斜对称(一般情况下奇函数在原点处都有定义)判断变上限积分函数是否在某点处可导的三种方法示例......