[ICPC2024 Xi‘an I] ICPC2024 邀请赛西安站(7/8/13)

心得

[ICPC2024 Xi'an I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷

7表示赛时ac了7个,8表示含补题总共ac数,13表示题目总数

题目

M. Chained Lights

打表,发现只有k=1是YES

//#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e6+10;
int t,n,k,fac[N],sum[N],light[N];
void press(int x)
{light[x]^=1;for (int y=x+x;y<=n;y+=x) press(y);
}
int main(){sci(t);while(t--){sci(n),sci(k);puts(k==1?"YES":"NO");}return 0;
}

J. Triangle

数三角形,手玩发现一些规律,

比如:n=3,m=9实际是15,然后发现和gcd有关

//#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e6+10;
int a,b;
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);
}
int main(){sci(a),sci(b);// if(a==b){//     printf("%lld\n",1ll*a*(a+1)/2);// }// else{ll v=gcd(a,b);ptlle((1ll*a*b-1ll*v*(a/v)*(b/v))/2+1ll*((a/v)*(b/v)+1)/2*v);//}return 0;
}
/*
3 9 = 15
*/

D. Make Them Straight

枚举k,根据ai-i*k确定能在同一个序列里的子序列,子序列里的是不改的

首项得是正的,后面i*k>1e6说明一定要改

剪枝一下复杂度是可接受的O(klogn)

//#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=2e5+10;
int n,a[N],b[N];
map<ll,ll>mp;
ll sum,ans;
int main(){sci(n);rep(i,0,n-1)sci(a[i]);rep(i,0,n-1){sci(b[i]);sum+=b[i];}ans=sum;rep(k,0,1000000){mp.clear();ll res=0;rep(i,0,n-1){ll v=a[i]-1ll*i*k;if(1ll*i*k>1000000)break;if(v<0)continue;mp[v]+=b[i];res=max(res,mp[v]);//if(mp[v]==9)printf("i:%d v:%lld mp:%lld\n",i,v,mp[v]);}ans=min(ans,sum-res);}ptlle(ans);return 0;
}
/*
3 9 = 15
*/

L. Rubbish Sorting

二进制子集枚举一下,大概sosdp的思想,因为|s|<=5

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=2e5+10,M=2e7+10,INF=0x3f3f3f3f;
int q,n,op,x,y,bs[8];
char s[N];
int val[M],now=INF;
int main(){memset(val,INF,sizeof val);bs[0]=1;rep(i,1,6)bs[i]=bs[i-1]*28;sci(q);while(q--){sci(op);scanf("%s",s);n=strlen(s);if(op==1){sci(y);int w=0;rep(i,0,n-1){int v=s[i]-'a'+1;w+=v*bs[i];}val[w]=min(val[w],y);now=min(now,y);rep(p,1,n){int up=(1<<p)-1;rep(i,0,up-1){int w=0;rep(j,0,p-1){int z=i>>j&1,v=0;if(z)v=27;else v=(s[j]-'a'+1);w+=v*bs[j];}val[w]=min(val[w],y);}}}else{int w=0;rep(i,0,n-1){int v=s[i]-'a'+1;w+=v*bs[i];}if(val[w]!=INF){pte(val[w]);continue;}vector<int>mn(n+1,INF);mn[n]=now;rep(p,1,n){int up=(1<<p)-1;rep(i,0,up-1){int w=0,tot=0;rep(j,0,p-1){int z=i>>j&1,v=0;if(z)v=27,tot++;else v=(s[j]-'a'+1);w+=v*bs[j];}mn[tot+n-p]=min(mn[tot+n-p],val[w]);}}rep(i,0,n){if(mn[i]!=INF){//printf("i:%d mn:%d\n",i,mn[i]);pte(mn[i]);break;}}}}return 0;
}
/*
3 9 = 15
*/

B. Turn Off The Lights(构造)

最终一定是和某一列完全相同/完全相反的,

不妨和第i列完全相同,全是01011,那么再把这三列的1按列取消掉就可以了

所以枚举和哪列相同,bitset加速统计,复杂度O(n^3/64)

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e3+10;
int n,k,a[N][N],sum[N];
bitset<1005>b[2][N];
bool flip[N];
bool ck(int i){int sum=0;rep(j,1,n){if(j==i)continue;int s1=(b[1][i]^b[0][j]).count(),s2=(b[0][i]^b[0][j]).count();if(s1<s2)flip[j]=1;else flip[j]=0;sum+=min(s1,s2);}return sum<=k;
}
void out(int i){//printf("i:%d\n",i);vector<P>ans;rep(j,1,n){if(j==i)continue;if(flip[j])ans.pb(P(j,0));rep(x,1,n){if(flip[j]){if(a[j][x]!=(a[i][x]^1))ans.pb(P(j,x));}else{if(a[j][x]!=a[i][x])ans.pb(P(j,x));}}}rep(x,1,n){if(a[i][x])ans.pb(P(0,x));}pte(SZ(ans));for(auto x:ans){printf("%d %d\n",x.fi,x.se);}
}
int main(){sci(n),sci(k);rep(i,1,n){rep(j,1,n){sci(a[i][j]);if(a[i][j])b[0][i].set(j);else b[1][i].set(j);}}rep(i,1,n){rep(x,0,1){if(ck(i)){out(i);return 0;}}}puts("-1");return 0;
}
/*
3 9 = 15
*/

F. XOR Game(博弈)

先从大到小考虑ai=1的值,z是0的个数算最小的数

因为操作一次就可以获得收益/ban掉对应收益,所以alice和bob会先抢这部分

剩下的局面,尽可能避免2的出现, 全是2的情况,谁先操作谁就输了,

所以判一下剩下局面的奇偶性,奇数alice全取,偶数bob全ban

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e5+10;
int k,z,a[N],b[N],c;
int main(){sci(k);sci(z);rep(i,0,k-1){sci(a[i]);}per(i,k-1,0){if(a[i]==1){c++;if(c&1)b[i]=1;a[i]=0;}}per(i,k-1,0){if(a[i]&1)c++;}c+=(z&1);per(i,k-1,0){if(!a[i])continue;if(c&1)b[i]=1;}per(i,k-1,0){printf("%1d",b[i]);}puts("");return 0;
}
/*
3 9 = 15
*/

I. Smart Quality Inspector(状压dp+区间dp)

避免后效性,肯定是从大到小考虑max值,

被前面的最大值覆盖了的区间,再选最大值时就没有贡献了

dp[S]表示当前最大值已经覆盖的状态是S时的最大代价和

b[i][l][r]表示区间包含第i位且被[l,r]完整包含的区间的数量

新增一位时,往左往右拓展0的区域找到最左最右,这一段的b值对应的区间都是有贡献的

复杂度O(n^5+n*2^n)

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=25,M=(1<<20)+5,INF=0x3f3f3f3f;
int n,k,m,l,r,a[N][N],b[N][N][N],dp[M];
void upd(int &x,int y){x=min(x,y);
}
int main(){sci(n),sci(k),sci(m);rep(i,1,m){sci(l),sci(r);a[l][r]++;}rep(i,1,n){rep(l,1,i){rep(r,i,n){rep(x,l,i){rep(y,i,r){b[i][l][r]+=a[x][y];}}}}}memset(dp,INF,sizeof dp);dp[0]=0;int up=(1<<n)-1;rep(i,0,up){vector<int>pre(n,-1),suf(n,n);int now=-1,bit=0;rep(j,0,n-1){int v=i>>j&1;if(v==1)now=j,bit++;else pre[j]=now+1;}now=n;per(j,n-1,0){int v=i>>j&1;if(v==1)now=j;else{suf[j]=now-1;int x=j+1,y=pre[j]+1,z=suf[j]+1;upd(dp[i|(1<<j)],dp[i]+b[x][y][z]*max(k-bit,0));}}}pte(dp[up]);return 0;
}

赛后补题

G. The Last Cumulonimbus Cloud(拓扑排序好题)

任意非空子图都有一个度不超过10的点=可以把度>10的点的贡献都归到这些不超过10的点上

拓扑排序每删掉一个度数不足10的点就会多出一个不足10的点

最后图可以化成一个联通且每个点出度均不超过10的dag

u加的时候把贡献推到u的下游

u算的时候上游已经推给过u,只需要再加上u的所有下游的贡献

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#xff08;1&#xff09;—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议&#xff1a;基本概念和原理-…

OJ3376无尽的石头问题

答案&#xff1a; #include<bits/stdc.h> using namespace std; const int N10e7; int fx(int n) {int sum0;while(n){sum(n%10);n/10;}return sum; } int main() {int t,n,x;cin>>t;while(t--){cin>>n;int count0;for(int i1;i<N;){if(in){cout<<…

在github上创建(上传、关联)自已的项目

目录 创建一个github项目并进行开发。 1.github创建空项目 2. git clone 项目 3. 将项目关联 创建一个github项目并进行开发。 1.github创建空项目 右边的New 然后按步创建就行 2. git clone 项目 复制这个连接 然后在终端&#xff1a;git clone [刚才复制的连接] 3. 将…

解读 Explainable Image Similarity Integrating Siamese Networks and Grad-CAM

给出论文&#xff08;Explainable Image Similarity Integrating Siamese Networks and Grad-CAM&#xff09;的内容解读、代码运行说明 论文链接&#xff1a;J. Imaging | Free Full-Text | Explainable Image Similarity: Integrating Siamese Networks and Grad-CAM (mdpi.c…

2024年武汉东湖高新中级职称报名时间是什么时候?

2024年武汉市东湖高新中级职称上半年批次报名已经截止了&#xff0c;下半年东湖高新至少还有一次报名机会&#xff0c;所以各位东湖高新区评职称的朋友们&#xff0c;不要错过这次了。 2024年武汉东湖高新区中级职称报名条件&#xff1a; 1.东湖高新区社保满足1年&#xff0c;近…

golang的http客户端封装

简介 net/http 是 Go 语言标准库的一部分&#xff0c;它提供了创建 HTTP 客户端和服务器的能力。这个包通过简化与 HTTP 协议的交互&#xff0c;让开发者能够方便地构建 HTTP 请求和响应&#xff0c;以及处理路由等任务。 本文以 net/http 包作为底层&#xff0c;封装一个包含…

HTCC电路板是什么,有哪些主要应用领域

HTCC英文名称是High-Temperature Co-Fired Ceramic&#xff0c;又称高温共烧多层陶瓷基板。因其具有导热系数高、耐热性好、热膨胀系数小、机械强度高、绝缘性好、耐腐蚀等优势&#xff0c;是保持高速增加的PCB线路板之一。 SPEA作为专业电路板测试设备方案服务商&#xff0c;公…

FY-SA-20237·8-WhyWeSpin

Translated from the Scientific American, July/August 2023 issue. Why We Spin (我们为什么旋转) Primates may play with reality by twirling around 翻译&#xff1a;灵长类动物有能力通过旋转或旋转运动来操纵或扭曲他们对现实的感知。 解释&#xff1a; “Primates”…

【开发心得】三步本地化部署llama3大模型

目录 第一步&#xff1a;启动ollama 第二步&#xff1a;启动dify 第三步&#xff1a;配置模型&#xff08;截图&#xff09; 最近llama3很火&#xff0c;本文追击热点&#xff0c;做一个本地化部署的尝试&#xff0c;结果还成功了&#xff01; 当然也是站在别人的肩膀上&…

【运维项目经历|027】PXE自动化部署与管理平台

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

Nginx企业级负载均衡:技术详解系列(18)—— 作为上传服务器

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 在上一期的技术分享中&#xff0c;我们探讨了如何高效搭建Nginx下载服务器&#xff0c;并讨论了长连接优化策略。那么今天&#xff0c;咱们进一步了解Nginx的另一面——作为上传服务器的配置技巧。 作为上传服务器&a…

怎么做好企业短信服务呢?(文字短信XML接口示例)

企业短信服务已经成为各行各业都信赖的行业推广方式之一&#xff0c;并且短信行业也与时俱进的发展着&#xff0c;随之而来的就是市场上短信平台的数量也随之增多。那么怎么在鱼龙混杂的短信行业中选择适合自己的企业短信服务平台呢&#xff1f;企业短信服务平台又适用于哪些应…

Django的PATH路径转换器

本书1-7章样章及配套资源下载链接: https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwdnanc 源码、PPT课件、教学视频等&#xff0c;可以从前言给出的下载信息下载&#xff0c;大家可以评估一下。 在Django框架中&#xff0c;默认内置了一组PATH路径转换器&#xff0c;具…

第一篇【传奇开心果系列】AI工业应用经典算法和Python示例:基于AI的智能制造技术经典算法与Python实践

传奇开心果博文系列 系列博文目录AI工业应用经典算法和Python示例系列 博文目录前言一、AI在智能制造方面的应用场景介绍二、基于AI的智能制造技术经典算法介绍三、支持向量机机器学习算法Python示例代码四、随机森林机器学习算法Python示例代码五、深度学习算法Python示例代码…

Facebook开户|Facebook公共主页疑难杂症详解

​​要要切克闹&#xff0c;公共主页我来道...哈喽呀家人们中午好&#xff0c;上一次学习还是在上一次..hhh相信很多家人在做Facebook的时候总会遇到各种各样匪夷所思的bug&#xff01;经常被搞心态吧&#xff01;那么咱们今天呢就来总结一下各类的bug以及解决方法&#xff0c;…

InvokeAI学习教程三:换脸

启动InvokeAI&#xff0c;我们先生成一张图&#xff1a; 在正向提示词里输入&#xff1a;Avant-garde couture, tactile textures, vogue aesthetics, vibrant color palette, intricate embroidery details, dramatic silhouettes 生成一张高贵夫人的图像&#xff0c; 或者你从…

标准发布 | 废水处理减污降碳协同评估指南(碳中和标准)

本文件主编单位&#xff1a;北京林业大学、北京交通大学、中国电建集团华东勘测设计研究院有限公司、 眉山市城投中恒能环保科技有限公司、 中华环保联合会水环境治理专业委员会。 本文件参编单位&#xff1a;中国市政工程中南设计研究总院有限公司、湖北君集环境科技股份有 公…

C++ B (1124) : 斐波那契数列第n项Plus

文章目录 一、题目描述二、参考代码 一、题目描述 二、参考代码 #include <iostream> #include <vector>using namespace std;const long long MOD 1e9 7; // 取模的值// 定义矩阵类 class Matrix { public:vector<vector<long long>> data;// 构造…

字节裁员!开启裁员新模式。。

最近&#xff0c;互联网圈不太平&#xff0c;裁员消息此起彼伏。而一向以“狼性文化”著称的字节跳动&#xff0c;却玩起了“低调裁员”&#xff0c;用一种近乎“温柔”的方式&#xff0c;慢慢挤掉“冗余”的员工。 “细水长流”&#xff1a;裁员新模式&#xff1f; 不同于以往…

【TB作品】MSP430F5529,单片机,打地鼠游戏

功能 针对这块开发板做了一个打地鼠游戏&#xff1a; 1 给单片机上电后&#xff0c;初始化显示界面&#xff0c;显示出分数和等级。 2 游戏是一轮一轮进行的&#xff0c;每一轮会以50%几率点亮板子上的五个小灯&#xff0c;表示地鼠露头需要打了。 3 一轮游戏开始后&#xff…