ccfcsp-202305(1、2、3)

2024-08-23 15:20
文章标签 202305 ccfcsp

本文主要是介绍ccfcsp-202305(1、2、3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

202305-1 重复局面

#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;unordered_map<string, int> mp;string str, s;while(n--){str = "";for(int i = 0; i < 8; i++){cin >> s;str += s;}mp[str]++;cout << mp[str] << endl;}return 0;
}

202305-2 矩阵运算

需要注意调整矩阵乘的顺序,降低时间复杂度

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int main() {ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ll n, d;cin >> n >> d;vector<vector<ll>> Q(n, vector<ll>(d));vector<vector<ll>> Kt(d, vector<ll>(n));vector<vector<ll>> V(n, vector<ll>(d));vector<int> W(n);for(int i = 0; i < n; i++){for(int j = 0; j < d; j++){cin >> Q[i][j];}}for(int i = 0; i < n; i++){for(int j = 0; j < d; j++){cin >> Kt[j][i];}}for(int i = 0; i < n; i++){for(int j = 0; j < d; j++){cin >> V[i][j];}}for(int i = 0; i < n; i++)cin >> W[i];//先算K转置 * V,不然是 n*n*d 时间复杂度vector<vector<ll>> KtV(d, vector<ll>(d));for(int i = 0; i < d; i++){for(int j = 0; j < d; j++){for(int k = 0; k < n; k++){KtV[i][j] += Kt[i][k] * V[k][j];}}}//W * Qfor(int i = 0; i < n; i++){for(int j = 0; j < d; j++){Q[i][j] *= W[i];}}//Q * KtVvector<vector<ll>> res(n, vector<ll>(d));for(int i = 0; i < n; i++){for(int j = 0; j < d; j++){for(int k = 0; k < d; k++){res[i][j] += Q[i][k] * KtV[k][j];}}}for(int i = 0; i < n; i++){//Q * Kfor(int j = 0; j < d; j++){cout << res[i][j] << " ";}cout << endl;}return 0;
}

202305-3 解压缩

50分解

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;string str,res;
string Tobinary(char c){int i = isdigit(c) ? c - '0' : c - 'a' + 10;int n = i;string s = "";while(n){char t = n % 2 + '0';s = t + s;n /= 2;}while(s.size() < 4)s = '0' + s;return s;
}
ll Todecimal(string s){ll n = s.size();ll res = 0;for(ll i = n - 1; i >= 0; i--){res += (s[i] - '0') * pow(2, n - i - 1);}return res;
}
int main() {ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ll n;cin >> n;string s;for(ll i = 0; i < n / 8 + 1; i++){cin >> s;str += s;}ll i = 0;//引导域string guide = "";for(; i + 1 < str.size() && str[i] >= '8'; i += 2){guide = guide + str[i] + str[i + 1];}guide = guide + str[i] + str[i + 1];i += 2;string s1, s2;for(; i < str.size(); i += 2){s1 = Tobinary(str[i]);s2 = Tobinary(str[i + 1]);if(s2[2] == '0' && s2[3] == '0'){//字面量s = s1 + s2[0] + s2[1];ll num = Todecimal(s) + 1;if(num >= 60){s.clear();ll j;for(j = i + 2; j < i + num - 57; j += 2){s = string(1,str[j]) + string(1,str[j + 1]) + s;}string ss;for(ll k = 0; k < s.size(); k++){ss += Tobinary(s[k]);}num = Todecimal(ss) + 1;i = j - 2;}for(ll j = i + 2; j < i + num * 2 + 2; j += 2){cout << str[j] << str[j + 1];res.push_back(str[j]);res.push_back(str[j + 1]);if(res.size() % 16 == 0)cout << endl;}i += num * 2;}else if(s2[2] == '1' && s2[3] == '0'){//回溯引用1s = s1 + s2[0] + s2[1];ll num = Todecimal(s) + 1;i += 2;s1 = string(1,str[i]) + string(1,str[i + 1]);//03s2 = string(1,str[i + 2]) + string(1,str[i + 3]);//00i += 4;string ss = s2 + s1;//小端ll o = Todecimal(ss);ll j = res.size()/2 - o;while(num--){cout << res[j * 2] << res[j * 2 + 1];res.push_back(res[j * 2]);res.push_back(res[j * 2 + 1]);if(res.size() % 16 == 0)cout << endl;j++;if(j == res.size())j = res.size()/2 - o;}i -= 2;}else if(s2[2] == '0' && s2[3] == '1'){//回溯引用2string sl = string(1,s1[3]) + string(1,s2[0]) + string(1,s2[1]);ll l = Todecimal(sl) + 4;string so = s1.substr(0,3);i += 2;so += Tobinary(str[i]) + Tobinary(str[i + 1]);ll o = Todecimal(so);ll j = res.size()/2 - o;while(l--){cout << res[j * 2] << res[j * 2 + 1];res.push_back(res[j * 2]);res.push_back(res[j * 2 + 1]);if(res.size() % 16 == 0)cout << endl;j++;if(j == res.size())j = res.size()/2 - o;}}}return 0;
}

这篇关于ccfcsp-202305(1、2、3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099759

相关文章

ccfcsp-202206(1、2、3)

202206-1 归一化处理 #include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;vector<double> vec(n);double ave = 0;for(int i = 0; i < n; i++){cin >> vec[i];ave += vec[i];}ave /= n;double va

ccfcsp-202209(1、2、3)

202209-1 如此编码 #include <bits/stdc++.h>typedef long long ll;using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m;cin >> n >> m;vector<ll> a(n,0);vector<ll> b(n,0

ccfcsp-202212(1、2、3)

202212-1 现值计算 #include <bits/stdc++.h>using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;double i;cin >> n >> i;vector<double> money(n + 1);double res = 0;for(in

202305青少年软件编程(Python)等级考试试卷(二级)

第 1 题 【单选题】 以下代码的输出结果是? ( ) s=[4, 2, 9, 1] s. insert(3, 3) print(s) A :[4, 2, 9, 1, 2, 3] B :[4, 3, 2, 9, 1] C :[4, 2, 9, 2, 1] D :[4, 2, 9, 3, 1]<

202305青少年软件编程(scratch图形化)等级考试试卷(四级)

第1题:【 单选题】 下列积木运行后的结果是? ( ) (说明: 逗号后面无空格) A:我 B:爱 C:中 D:国 【正确答案】: B 【试题解析】 : 两个字符串连接后的第 8 个字符是“爱” 。 第2题:【 单选题】 接鸡蛋游戏中, 天空掉下来有鸡蛋、 石头、 香蕉等物品, 接到鸡蛋加 1 分, 接到石头减 1 分。( ) A: B: C: D: 【正确答

2024 ccfcsp认证打卡 2022 12 01 现值计算

import java.util.Scanner;public class FinancialFormula {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);final int N = 1010; // 定义数组大小int n = scanner.nextInt(); //

2024 ccfcsp认证打卡 2023 03 02 垦田计划

import java.util.*;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = 100100; // 定义一个较大的常数Nlong[] t = new long[N]; // 存储任务的耗时long[] c = new l

2024 ccfcsp认证打卡 2023 09 02 坐标变换(其二)

202309-2 坐标变换(其二) 题解1题解2区别第一种算法(使用ArrayList存储操作序列):数据结构:操作序列处理: 第二种算法(使用两个数组存储累积结果):数据结构:操作序列处理: 对比效率简洁性可读性 题解1 import java.util.ArrayList;import java.util.Scanner;public class Main {pu

202305 CSP认证

202305-1 重复局面 第一题直接干 #include<bits/stdc++.h>using namespace std;unordered_map<string, int> chess;int main(){ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);string line, str = ""; int n;cin >

B3768 [语言月赛202305] 独行

传送门: https://www.luogu.com.cn/problem/B3768 直接手推模拟,找规律,照着编就行。 以下是找规律部分: ​int sq, sh, sw, nt;//sq:前近距离//sh:后退距离//sw:新的位置//nt:总时间1.sq = v0 * T1;if (sq >= s) {nt += s / v0;break;}sh = v1 * t1;s