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的所有下游的贡献

相关文章:
ICPC2024 邀请赛西安站(7/8/13)
心得 [ICPC2024 Xian I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷 7表示赛时ac了7个,8表示含补题总共ac数,13表示题目总数 题目 M. Chained Lights 打表,发现只有k1是YES //#include <bits/stdc.h> #include<iostream&…...
STM32f103实现按键长按 短按 双击
今天来分享一个使用EXIT外部中断加TIM计时器实现按键长短按以及双击操作,不过笔者在双击上有点瑕疵,就是当你按下双击第一下停顿几秒按第二下依然会识别为双击操作,笔者猜测只要板子不停电即便到第二天按下第二下依旧会识别双击操作ÿ…...
【WP】猿人学13_入门级cookie
https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候,就会重新给match/13发包,这个包返回一段js代码,应该是生成cookie的 <script>document.cookie(y)(u)(a…...
分享一款提取抖音小店商家电话的软件使用教程
抖音作为一款国内非常流行的短视频分享平台,吸引了大量用户和商家。许多商家在抖音上开设了小店,但是抖音并没有提供直接获取商家电话的功能。本文将分享一款提取抖音小店商家电话的软件,并附带使用教程和代码。 教程 步骤一:安…...
反转链表的三种方法--面试必考(图例超详细解析,小白一看就会!!!)
目录 一、前言 二、题目描述 三、解题方法 ⭐ 头插法 --- 创建新的链表 ⭐ 迭代法 --- 三指针 ⭐ 递归法 四、总结与提炼 五、共勉 一、前言 反转链表这道题,可以说是--链表专题--,最经典的一道题,也是在面试中频率最高的一道题目&…...
Springboot注意点
1.Usermapper里加param注解 2.RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody 是Spring框架中用于处理HTTP请求的两个不同的注 get请求一般用url传参数,所以参数名和参数的值就在ur…...
数组和指针的联系(C语言)
数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了sizeof(数组名)和&数组名表示整个数组外,其他情况下都表示的是首元素的…...
安全区域边界
文章目录 安全区域边界边界防护跨边界流量通过受控接口通信非法内联非法外联限制无线网络 访问控制启用基于白名单的访问控制策略优化访问控制表根据五元组控制根据会话状态控制根据应用协议和内容控制 入侵防范外部发起的攻击内部发起的攻击对新型攻击防范及时检测攻击行为 恶…...
力扣每日一题 6/6
2938.区分黑球与白球[中等] 题目: 桌子上有 n 个球,每个球的颜色不是黑色,就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。 在每一步中,你可以选择两个相邻的…...
游戏心理学Day05
第三章 游戏即学习 《超级马里奥》是游戏史上的经典之作,我们都记得第一次踩到敌人,第一次顶碎砖块时的快乐,也记得为了通过某个关卡而付出的努力和艰辛。当我们掌握了规律和技巧之后,这些难题就不再是难题,因为我们习…...
【C、C++编译工具】CLion工具介绍与安装
一、问题 最近突发奇想想学学最开始接触的语言C,之前大学的时候用的更多的工具还是VC,工作后慢慢接触了CLion,跟pycharm其实差不多,都是集成开发环境(IDE) 解释:什么是 IDE? 根据计…...
LabVIEW中进行步进电机的位置控制
在LabVIEW中进行步进电机的位置控制,通常涉及以下几个关键步骤:设置硬件、配置通信、编写控制算法和实施反馈控制。以下是一个详细的介绍。 硬件设置 步进电机:选择合适的步进电机,根据负载和应用需求选择适当的步数和转矩。 驱…...
目标检测-AnyLabeling标注格式转换成YOLO格式
Anylabel可以极大的增加数据的标注效率,但是其标注格式如何能转换成YOLO标注格式,具体内容如下所示。 关于AnyLabeling的其它详细介绍如下链接所示 https://blog.csdn.net/u011775793/article/details/134918861 Github链接 https://github.com/vietanhd…...
MongoDB管理内存使用
优化MongoDB内存使用,可以通过一下几点来降低系统内存占用,本次主要配置WiredTiger Cache来实现 WiredTiger Cache: MongoDB 使用 WiredTiger 存储引擎,其缓存使用最近最少使用 (LRU) 算法管理。频繁访问的数据会保留在内存中&am…...
【Elasticsearch】IK分词器的下载及使用
安装IK分词器 网址:https://github.com/infinilabs/analysis-ik 3.1.在线安装ik插件(较慢,不推荐) # 进入容器内部 es为容器名称 docker exec -it es /bin/bash# 在线下载并安装 7.17.21为镜像版本要与之前保持一致 ./bin/elasticsearch-pl…...
Hyper-SD: diffusion实时出图,一步搞定,字节出品
Hyper-SD: diffusion实时出图,一步搞定,字节出品 先看效果 Real-Time Generation Demo of Hyper-SD. Abstract 近来,一系列面向扩散模型(Diffusion Models,DM)的迭代紧凑式传播推断算法陆续出现…...
:长亭雷池社区版动态防护体验测评
序 长亭雷池在最近发布了动态防护功能,据说可以动态加密保护网页前端代码和阻止爬虫行为、阻止漏洞扫描行为等。今天就来体验测试一下 WAF 是什么 WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,WAF …...
数据结构复习
基本概念和术语: 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据元素:是组成数据的,具有一定意义的基本单位,在计算机…...
小世界网络生成及其分析
研究背景: 小世界网络是一种介于规则网络和随机网络之间的网络模型,具有短平均路径和高聚集性的特点。这种网络模型被广泛应用于社交网络、互联网、生物网络等领域的研究中。研究小世界网络的生成和分析可以帮助我们理解和揭示复杂网络的结构和特性,以及网络中信息传播、动力…...
Flutter基础 -- Flutter布局练习(小项目)
目录 1. Splash 布局(第一页) 1.1 目标 1.2 当前效果图 1.3 创建 Splash 界面 1.4 设置 MaterialApp 1.5 设置 Splash 背景色 1.6 布局 Splash 界面 1.7 总结 2. Splash 圆角图片 2.1 目标 2.2 当前效果图 2.3 蓝湖下载图片 2.4 图片导入项…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果