ICPC2024昆明站

news/2025/2/24 21:08:01/文章来源:https://www.cnblogs.com/watersail/p/18734866

H. Horizon Scanning

  • 这道题答案有单调性不假,可是也不是有单调性就一定要二分的吧?貌似直接取最小值就好了呀……
#include <bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
struct t1
{double x,y;double r;
}t[400005];
bool cmp(t1 a,t1 b)
{return a.r<b.r;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>t[i].x>>t[i].y;if(t[i].x>=0&&t[i].y>0){t[i].r=pi/2-(atan(t[i].x/t[i].y));}else if(t[i].x<0&&t[i].y>=0){t[i].r=pi-atan(-t[i].y/t[i].x);}else if(t[i].x<=0&&t[i].y<0){t[i].r=pi+(pi/2-atan(t[i].x/t[i].y));}else if(t[i].x>0&&t[i].y<=0){t[i].r=2*pi-atan(-t[i].y/t[i].x);}}sort(t+1,t+n+1,cmp);for(int i=1;i<n;i++){t[i+n]=t[i];t[i+n].r+=2*pi;}double l=0,r=2*pi;int eps=100;while(eps--){double mid=(l+r)/2;bool f=true;for(int i=1;i<=n;i++){auto check=[i,mid](t1 x){return x.r-t[i].r<mid;};int p=partition_point(t+i,t+n+i,check)-1-t;if(p-i<k){f=false;break;}}if(f==true){r=mid;}else{l=mid;}}cout<<fixed<<setprecision(10)<<l<<"\n";}return 0;
}

L. Last Chance: Threads of Despair

  • and each of his minions can attack any one minion from the opposing faction at most once. 是指每个己方势力总共只能攻击一次,而不是每个己方势力都可以攻击每个敌方势力各一次
  • 引理:必然存在一种方案使得我方先进行所有攻击操作,此后不断发生爆炸直到对方所有单位清空
  • 证明:如果一个操作方案中,在某次攻击之前发生过爆炸,那么我们将此次攻击移动到所有攻击之前,效果不变,同时也不会导致原本的其他操作失效
  • 模拟一次攻击操作太麻烦了,有没有什么更简便的做法呢?当然有了,把己方健康值-1和敌方健康值-1分离。先把己方的攻击次数统一提取出来,再贪心地分配给敌方就好啦。
#include <bits/stdc++.h>
using namespace std;
int a[500005],b[500005],n,m;
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){cin>>n>>m;int tot=0;for(int i=1;i<=n;i++){cin>>a[i];tot+=(a[i]>1);}sort(a+1,a+n+1);tot+=(a[1]==1);for(int i=1;i<=m;i++){cin>>b[i];}sort(b+1,b+m+1);int p=0,q=0,cur=0;while(q<m){while(p<n&&a[p+1]-1<=cur){p++;cur++;}if(b[q+1]>cur){tot-=(b[q+1]-cur);if(tot<0){break;}}q++;cur++;}q==m? cout<<"Yes\n":cout<<"No\n";}return 0;
}

G. GCD

  • 一开始没什么思路。午休的时候躺在床上想,你精通GCD和各种动态规划,居然想不到做法,而且榜单上还能有200多个队伍过题,会不会答案是有限的,直接搜索就好了呢?一试,真的通过了!看来,根据榜单上的过题人数感受题目大致的做法,是一项远被之前的你低估的能力。大家其实也都不太会猜,你看学校的主力队伍交了快10次才在比赛即将结束的时候通过呢
#include <bits/stdc++.h>
using namespace std;
int ans,cur;
void solve(long long a,long long b)
{if(cur>=ans){return;}if(a==0){ans=min(ans,cur+1);return;	}if(b%a==0){ans=min(ans,cur+2);return;}int g=__gcd(a,b);cur++;solve(a-g,b);solve(a,b-g);cur--;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){long long a,b;cin>>a>>b;ans=20;cur=0;solve(a,b);cout<<ans<<"\n";}return 0;
}

C. Coin

  • 倒序思考+数论分块,很轻松就解决啦~有什么难的呢?
#include <bits/stdc++.h>
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){long long n,k;cin>>n>>k;long long cur=k-1;if(cur>=n){cout<<n<<"\n";continue;}else{while(cur+cur/(k-1)+(cur%(k-1)>0)<=n){if(cur%(k-1)&&cur/(k-1)==(cur+cur/(k-1)+1)/(k-1)){long long cnt=min(n-cur,k-1-cur%(k-1))/(cur/(k-1)+1);cur=cur+cnt*(cur/(k-1))+cnt;continue;}cur=cur+cur/(k-1)+(cur%(k-1)>0);}cout<<cur<<"\n";}}return 0;
}

E. Extracting Weights

  • 原来所谓的金银牌分界题,也不过是个简简单单的高斯消元罢了~
#include <bits/stdc++.h>
using namespace std;
vector<int>a[305];
int c[305*305][305],tmp[305*305][305];
int n,m,k;
int q[305];
bool Gauss()
{memcpy(tmp,c,sizeof(tmp));for(int i=1;i<=n;i++){for(int j=i;j<=m;j++){if(c[j][i]>0){swap(c[i],c[j]);break;}}if(!c[i][i]){return false;}q[i]=c[i][n+2];for(int j=1;j<=m;j++){if(i!=j&&c[j][i]){for(int k=1;k<=n;k++){c[j][k]^=c[i][k];}}}}memcpy(c,tmp,sizeof(c));return true;
}
void Gauss(int n)
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j&&c[j][i]){for(int k=1;k<=n+1;k++){c[j][k]^=c[i][k];}}}}cout<<"!";for(int i=2;i<=n;i++){cout<<" "<<c[i][n+1];}cout<<endl;
}
int s[305];
void dfs(int n1,int dep,int fa)
{s[dep]=n1;if(dep==k){m++;c[m][0]=s[0];for(int i=0;i<=k;i++){c[m][s[i]]=1;}c[m][n+1]=s[k];c[m][n+2]=m;return;}for(int i=0;i<a[n1].size();i++){if(a[n1][i]!=fa){dfs(a[n1][i],dep+1,n1);}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin>>n>>k;for(int i=1;i<n;i++){int u,v;cin>>u>>v;a[u].push_back(v);a[v].push_back(u);}m=1;c[1][1]=1;for(int i=1;i<=n;i++){dfs(i,0,0);}if(Gauss()){cout<<"YES"<<endl;cout<<"? "<<n-1;for(int i=2;i<=n;i++){cout<<" "<<c[q[i]][0]<<" "<<c[q[i]][n+1];}cout<<endl;for(int i=2;i<=n;i++){int w;cin>>w;c[q[i]][n+1]=w;memcpy(tmp[i],c[q[i]],sizeof(tmp[i]));}memcpy(c,tmp,sizeof(c));Gauss(n);}else{cout<<"NO"<<endl;}return 0;
}

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

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

相关文章

Chapter1

Chapter 1 Introduction 引言数据库管理系统(DataBase Management System, DBMS) 互相关联的数据集合和一组用以访问这些数据的程序组成。 提供方便,高效的存取数据信息。1.1 应用联机事务处理。(online transaction processing)大量用户使用数据库,每个用户检索相对少量的数…

0224

关于中州养老入住办理的业务分析 1.原型如下如上可以将入住办理的业务总体看为5个表格,总体分为两部分: ​ 1:所有老人入住详情表:>1. 搜索:老人姓名为模糊搜索,老人身份证号为精准搜索;>2. 列表数据:列表中所展示的数据是入住成功且未退住的老人信息>3. 发起入住…

生成式AI之旅

还记得ChatGPT刚出来时,体验后的感觉是:知识渊博,无所不通;智慧在线,逻辑清晰,简直可以用“高端,大气,上档次”形容,但也不失“低调,奢华,有内涵”。使用GPT经历过几个阶段:最开始是娱乐阶段:以聊天,写诗之类为主;之后经历了漫长的搜索引擎阶段:搜索知识点,技…

2025省选模拟15

2025省选模拟15\(T1\) P1045. 数 \(100pts\)原题: SP6408 KKKCT2 - Counting Triangles 2 | SP5464 CT - Counting triangles考虑枚举直角顶点 \((i,j),0 \le i \le x,0 \le j \le y\),然后分为了 \(8\) 种贡献情况。设 \(\begin{cases} a=\min(i,y-j) \\ b=\min(x-i,j) \\ c…

独立开发之五个月干到4万$+

写文章的起因 本来在群里跟大伙聊天的时候,然后就聊产品终于赚钱,我说要不我写个小册或者出个课把,就写我们这种穷逼独立开发怎么做产品变现,然后我认真想了一下可能我花1个月写小册的时间的性价比不是很高。 然后本来这个话题都完结了,有小伙伴就私聊我,直接发了我个红包…

Prompt入门

Prompt,,提示词,是使用生成式AI的必备前提,好的提示词能让生成式AI给出更精准的结果,不仅能节省时间,还能节省tokens(这可是美金呀),所以在生成式AI出来后,就有Prompt Engineer提示工程师之说。于是,就有很多分享提示的文章,还有很多网站,专门收集各种场合的提示词…

SEO完全指南 从原理到实战的搜索引擎优化手册 第三章SEO与内容优化

第三章:SEO与内容 1. 基于算法的内容优化策略 搜索引擎算法的主要目标是为用户提供最相关、最有价值的内容。这些算法使用复杂的机器学习模型来理解和评估网页内容。它们考虑多个因素,包括关键词的使用、内容的深度和质量、用户交互数据以及网站的整体结构和权威性。要在搜索…

【攻防世界】CatchCat

上网一查发现是GPS数据文件 到这个GPS绘图网址上传.txt文件即可 还有一种方法,先转为KML文件txt2kml网址kml绘图

智能化客户行为轨迹分析:AI视频监控在大型商场的技术方案介绍(part7)

项目背景:为了提升顾客体验并支持精准营销,卖场或商场需要通过智能化手段分析客户在商场内的行为路线。一、具体需求 1、行为路径分析:跟踪顾客在商场内的移动轨迹,了解顾客的购物习惯和偏好。 2、高频活动区域识别:通过分析顾客停留和活动频率,识别出顾客聚集的区域。 3…

在Android源码中为APK编译系统权限

在Android源码中为APK编译系统权限,授权使用 android:sharedUserId="android.uid.system" 系统权限,可以在Android开发中授予更多功能,以瑞芯微3568平台为例系统权限获取 打包为APK进行系统签名对于 部分功能的访问需要使用到系统权限,需要 添加 android:shared…

PNG图片宽高隐写

https://www.cnblogs.com/senior-engineer/p/9548347.html

[tldr] vscode的remote插件的config文件内容解析

参考VS Code Remote SSH配置 解决了什么问题 vscode的remote插件可以直接通过可视化的UI新建一个连接通过ssh指令添加服务器的连接方式但是这种方式添加的服务器名字等于服务器IP地址,难以理解 如果出现同一个IP地址,使用不同端口的SSH,那么会被视作同一个服务器,因为连接名字和…