当前位置:网站首页>第四届“传智杯”全国大学生IT技能大赛(决赛B组) 题解
第四届“传智杯”全国大学生IT技能大赛(决赛B组) 题解
2022-04-23 14:06:00 【万伏小太阳】
T229470 A. 小智的疑惑
调用string的substr方法,暴力即可。
#include<bits/stdc++.h>
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 2e6 + 7;
const int mod = 1e9 + 7;
signed main(){
string s;
cin>>s;
int n=s.size();
int ans=0;
for(int i=0;i<n-7;i++){
// if(s[i]=='c'&&s[i+1]=='h'&&s[i+2]=='u'&&s[i+3]&&s[i+4])
string t=s.substr(i,8);
if(t=="chuanzhi") ans++;
}
cout<<ans<<endl;
return 0;
}
T229471 B. 三元组
三重循环暴力
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e6 + 7;
const int mod = 1e9 + 7;
const int MOD = 998244353;
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
int a[N];
void solve(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
for(int k=j;k<n;k++){
if(a[i]+a[j]==a[k]) ans++;
}
}
}
cout<<ans<<endl;
}
signed main(){
int _;
cin>>_;
while(_--) solve();
return 0;
}
T229472 C. 排排队
只要另一个数组有那个数组的数,交换 n 2 n^2 n2次就一定可以,排成想要的样子,冒泡 。
但是这一题我理解错题意了,我改b数组了。题意是改a数组,wa3
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e6 + 7;
const int mod = 1e9 + 7;
const int MOD = 998244353;
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
int a[N], b[N], c[N], d[N];
void solve() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
c[i]=a[i];
}
for (int j = 0; j < n; j++) {
cin >> b[j];
d[j]=b[j];
}
sort(c,c+n);
sort(d,d+n);
for(int i=0;i<n;i++){
if(c[i]!=d[i]){
cout<<"NO"<<endl;
return;
}
}
vector<int> ans;
vector<int> res;
for (int i = 0; i < n; i++) {
if (a[i] == b[i])
continue;
int pos = -1;
for (int j = i + 1; j < n; j++) {
if (a[j] == b[i]) {
pos = j;
}
}
for (int j = pos; j > i; j--) {
ans.push_back(j+1);
res.push_back(j);
swap(a[j], a[j - 1]);
}
}
cout << "YES" << endl;
for (int i = 0; i < ans.size(); i++) {
cout << ans[i] << " " << res[i] << endl;
}
cout << "0 0\n";
}
signed main() {
int _;
cin >> _;
while (_--)
solve();
return 0;
}
R71214110背单词的小智
二分答案 m,check的话,就优先从前面的那几个开始,判断他要背几天,和k相比较。
leetcode原题,leetcode410https://leetcode-cn.com/problems/split-array-largest-sum/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e6 + 7;
const int mod = 1e9 + 7;
const int MOD = 998244353;
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
int a[N];
bool check(vector<int> &nums, int x, int m) {
long long sum = 0;
int cnt = 1;
for (int i = 0; i < nums.size(); i++) {
if (sum + nums[i] > x) {
cnt++;
sum = nums[i];
} else {
sum += nums[i];
}
}
return cnt <= m;
}
int work(vector<int> &nums, int m) {
long long left = 0, right = 0;
for (int i = 0; i < nums.size(); i++) {
right += nums[i];
if (left < nums[i]) {
left = nums[i];
}
}
while (left < right) {
long long mid = (left + right) >> 1;
if (check(nums, mid, m)) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
void solve() {
int n, k;
cin >> n >> k;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
nums[i] *= nums[i];
}
cout<<work(nums,k)<<endl;
}
signed main() {
solve();
return 0;
}
T229475 F1. 生活在树上(easy version)
根据异或的性质,a到b的异或异或上a到c的异或。这中间点可以随意取,所以我们取一个根节点。如果存在 xor[u] ^ xor[v]== k。
树的DFS。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5 + 7;
const int mod = 1e9 + 7;
const int MOD = 998244353;
#define int unsigned long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
vector<pair<int, int> > g[N];
int xorr[N];
void dfs(int u, int f, int val) {
xorr[u] = val;
for (int i = 0; i < g[u].size(); i++) {
int next = g[u][i].first, w = g[u][i].second;
if (next == f)
continue;
dfs(next, u, w ^ val);
}
}
void solve() {
int n, m, u, v, w, k;
cin >> n >> m;
for (int i = 1; i < n; i++) {
cin >> u >> v >> w;
g[u].push_back({
v, w});
g[v].push_back({
u, w});
}
dfs(n-1, 0, 0);
while (m--) {
cin >> u >> v >> k;
if ((xorr[u] ^ xorr[v]) == k) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
}
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
solve();
return 0;
}
版权声明
本文为[万伏小太阳]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_51009975/article/details/123452211
边栏推荐
猜你喜欢
Prediction of tomorrow's trading limit of Low Frequency Quantization
HyperBDR云容灾V3.2.1版本发布|支持更多云平台,新增监控告警功能
更改plsql工具栏的图标大小
什么是云迁移?云迁移的四种模式分别是?
星界边境Starbound创意工坊订阅的mod的存放路径
DDT+Excel进行接口测试
Cdh6 based on CM management 3.2 cluster integration atlas 2 one
帆软中单元格中隔行变色以及数量大于100字体变大变红设置
基於CM管理的CDH集群集成Phoenix
星界边境文本自动翻译机(高级版)使用说明
随机推荐
Essential difference between restful WebService and gSOAP webservice
poi操作word模板替换数据并且导出word
HyperMotion云迁移完成阿里云专有云产品生态集成认证
Node接入支付宝开放平台的沙箱实现支付功能
VMware15Pro在Deepin系统里面挂载真机电脑硬盘
Jmeter设置环境变量支持在任意终端目录输入jmeter直接启动
There is a mining virus in the server
Programming travel function
金融行业云迁移实践 平安金融云整合HyperMotion云迁移解决方案,为金融行业客户提供迁移服务
室内外地图切换(室内基于ibeacons三点定位)
Wechat applet input hidden and inoperable settings
RecyclerView高级使用(二)-垂直拖拽排序的简单实现
微信小程序的订阅号开发(消息推送)
CDH cluster integration Phoenix based on CM management
postman批量生产body信息(实现批量修改数据)
Kettle -- control parsing
百度图片识别自定义实现(替代AipOcr)
按实际取,每三级分类汇总一次,看图知需求
使用Postman进行Mock测试
Mock测试