当前位置: 首页 > backend >正文

The 2023 ICPC Asia Taoyuan Regional Programming Contest

The 2023 ICPC Asia Taoyuan Regional Programming Contest(A,B,D,F,H,M)

原题链接:https://codeforces.com/gym/105544

A.Counterfeit Money

思路:根据题意将字符串分割成若干组,每组有三个元素,然后±交替进行的到最后的总和,判断总和是否能被13整除

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;void solve(){ string s;cin>>s;reverse(s.begin(),s.end());    //翻转s更好处理vector<int>vec;for(int i=0;i<s.size();i+=3){       //以3为步长string str=s.substr(i,3);reverse(str.begin(),str.end());       vec.push_back(stoi(str));  }int ok=1,sum=0;for(auto it:vec)if(ok)  sum+=it,ok=0;else sum-=it,ok=1;if(sum%13==0){cout<<abs(sum)<<" "<<"YES"<<endl;}else cout<<abs(sum)<<" "<<"NO"<<endl;}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve();
}

M. Task scheduler

思路:按照题目所给的排序最后输出排序后的结果

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
typedef pair<int,int>PII;PII a[N];bool cmp(PII a,PII b){if(a.second==b.second) return a.first<b.first;return a.second<b.second;}void solve(){ int n;cin>>n;for(int i=1;i<=n;i++)  cin>>a[i].first;for(int i=1;i<=n;i++)  cin>>a[i].second;sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++)cout<<a[i].first<<" ";cout<<endl;}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve();
}

H. Bank Deposit Challenge

思路:很裸露的一道01背包板题,需要注意的是处理字符串分割,获取v,w

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int n,m,f[N]; vector<int>split(string s){istringstream iss(s);vector<int>tokens;string stoken;while(iss>>stoken)tokens.push_back(stoi(stoken));return tokens;   
}   void solve(){ cin>>m;string s;getline(cin,s);getline(cin,s);vector<int>w=split(s);getline(cin,s);vector<int>v=split(s);for(int i=0;i<w.size();i++)for(int j=m;j>=v[i];j--)f[j]=max(f[j],f[j-v[i]]+w[i]);cout<<f[m]<<endl;	   }int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
//	   int t;
//	   cin>>t;
//	   while(t--)solve();
}

B - Recurring Decimal to Fractions

思路:给你一个小于0的小数,一部分是非循环节,一部分是循环节,最后让你求出分子和分母的最简之比

通过数学表示将循环节去掉表示成分数的形式,然后再用gcd求出最大公约数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;ll gcd(ll a, ll b)
{return b ? gcd(b, a % b) : a;
}void solve()
{ll n, m;cin >> n >> m;ll  b, c;cin >> b >> c;ll fz = b * (pow(10, m) - 1) +c;ll fm = (pow(10, m) - 1) * pow(10, n);ll w = gcd(fz, fm);ll ans1 = fz / w, ans2 = fm / w;cout << ans1 << " " << ans2 << endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t;cin >> t;while (t--)solve();
}

D. Quarantine Policy

思路:模拟题,跟着题意描述模拟即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=500;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};     //上下左右四个方向
int dxx[4]={-1,-1,1,1},dyy[4]={-1,1,1,-1};   //左上右上左下右下四个方向void solve() {int t;cin>>t;for (int w=1;w<=t;w++){int n,m,d1,d2;cin>>n>>m>>d1>>d2;vector<vector<char>>vec(n+10,vector<char>(m+10,0));vector<vector<int>>ans(n+10,vector<int>(m+10,0));for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)cin>>vec[i][j];for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)if (vec[i][j]=='V'){for (int k=0;k<4;k++){int a=i+dx[k],b=j+dy[k];if (a<1||a>n||b<1||b>m)  continue;ans[a][b]=max(ans[a][b],d1);}for (int k=0;k<4;k++){int a=i+dxx[k],b=j+dyy[k];if (a<1||a>n||b<1||b>m)  continue;ans[a][b]=max(ans[a][b],d2);}}cout<<"Airplane #"<<w<<":"<<endl;for (int i=1;i<=n;i++){for (int j=1;j<=m;j++)if (vec[i][j]=='V')  cout<<vec[i][j];else cout<<ans[i][j];cout<<endl;}}}int main()
{ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);// int t;// cin>>t;// while (t--)solve();
}

F - Baker’s Dilemma

思路:耍杂技的牛的问题,两个物品谁在前谁在后可能会对结果造成不同的影响,根据通项推公式得到一个排序方式,则按照这个排序方式执行命令则最后的花费最小

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
typedef struct node{ll id,x,y;  
};
node a[N];bool cmp(node a,node b){if(a.x*b.y==a.y*b.x)  return a.id<b.id;return a.x*b.y<a.y*b.x;   
}void solve(){int n;cin>>n;for(int i=1;i<=n;i++){a[i].id=i;cin>>a[i].x>>a[i].y;		 }sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++)cout<<a[i].id<<" ";cout<<endl;}int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve();} 
http://www.xdnf.cn/news/4197.html

相关文章:

  • 13.Spring boot中使用Actuator 监控
  • 深入了解linux系统—— 进程地址空间
  • CVE-2025-24813:Apache Tomcat RCE 漏洞分析
  • 拟南芥T2T基因组-文献精读127
  • Github上如何准确地搜索开源项目
  • 高等数学第四章---不定积分(4.4有理函数的不定积分2)
  • Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
  • 甲骨文云服务器技术全景解析:从基础架构到行业赋能​
  • 从0开始学习大模型--Day2--大模型的工作流程以及初始Agent
  • NLP 和大模型技术路线
  • 51单片机同一个timer 作为定时器和波特率发生器么?
  • AutoDL+SSH在vscode中远程使用GPU训练深度学习模型
  • 临床智能体AI与环境感知AI的融合:基于python的医疗自然语言处理深度分析
  • 荣耀A8互动娱乐组件部署实录(第2部分:界面逻辑与资源加载机制)
  • 当智能科技遇上医疗行业会帮助疫苗如何方便管理呢?
  • LeetCode 热题 100 279. 完全平方数
  • Qt开发经验 --- 避坑指南(4)
  • Linux/AndroidOS中进程间的通信线程间的同步 - POSIX IPC
  • SVG数据可视化设计(AI)完全工作流解读|计育韬
  • VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程
  • hybird接口配置
  • 【基础】Python包管理工具uv使用教程
  • 从零实现基于Transformer的英译汉任务
  • 翻转二叉树(简单)
  • uniapp开发09-设置一个tabbar底部导航栏且配置icon图标
  • Ubuntu 安装 containerd
  • 【东枫科技】代理英伟达产品:交换机系统
  • 如何修改 JAR 包中的源码
  • 地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据
  • mapbox基础,加载Fog云雾效果