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 图片导入项…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
