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

Codeforces Round 1037(Div3)

第一次晚上打codeforces脑子转的就是比白天慢,写题速度明显慢了好多,有些都是碰运气刚好想到。div3依旧是思维题写完下班,只开了4个。E题虽然是思维题但是实在不想写了想了一会没想出来。前两天在hack,刚刚发现结算完毕了,俺也是有rating的人了~(图在后头)

A. Only One Digit

来源:Problem - A - Codeforces

思路

签到题,直接输出一串数字中最小的那个数就行

Code:

void solve()
{cin >>s;sort(s.begin(),s.end());cout << s[0] << endl;
}

B. No Casino in the Mountains

来源:Problem - B - Codeforces

思路

将所有好天气时间段存起来,对于每一段好天气,第一次是k天,后边都是k+1天,算算最多能访问多少峰数就行了

Code:

void solve()
{cin >> n >> m;priority_queue<int, vector<int>, greater<int>> q;q=priority_queue<int, vector<int>, greater<int>>();int x;int sum=0;for(int i=1; i<=n; i++){cin >> x;if(x==0)sum++;if(x==1||i==n){q.push(sum);sum=0;}}int cnt=0;while(!q.empty()){int f=q.top();if(f>=m){cnt++;f-=m;}cnt+=f/(m+1);q.pop();}cout << cnt << endl;
}

C. I Will Definitely Make It

思路

将比第k个平台高的平台高度存到最小堆里,一直判断它是否能在被淹到之前到达下一个平台就行了。

Code:

void solve()
{cin >> n >> m;priority_queue<int, vector<int>, greater<int>> q;q=priority_queue<int, vector<int>, greater<int>>();for(int i=1; i<=n; i++) cin >> a[i];for(int i=1; i<=n; i++){if(i==m||a[m]>=a[i]) continue;q.push(a[i]);}int yv=a[m];int ch=a[m];while(!q.empty()){int f=q.top();if(f-ch>yv){cout << "NO" << endl;return ;}ch=f;q.pop();}cout << "YES" << endl;
}

D. This Is the Last Time

思路

将每个赌场的l,r,real都存到结构体里并先后按照左边界、价值升序排序。遍历结构体,如果此时硬币数够这个区间且这个赌场的real值大于当前硬币数再进,最后就是能得到的最大值了。

Code:

struct p
{int l;int r;int val;
}k[N];
bool cmp(p a, p b)
{if(a.l!=b.l)return a.l<b.l;return a.val < b.val;
}
void solve()
{cin >> n >> m;for(int i=1; i<=n;i ++)cin >> k[i].l >> k[i].r >> k[i].val;sort(k+1,k+1+n,cmp);for(int i=1; i<=n; i++){if(m>=k[i].l&&m<k[i].val)m=k[i].val;}cout << m << endl;
}

E. G-C-D, Unlucky!

思路:

这道题在赛时没写出来,主要是对GCD的理解要深刻。对于主要部分,由题可得:

  • gcd(前i-1个元素的GCD, x[i]) = a[i]
  • gcd(x[i], 后n-i个元素的GCD) = b[i]

那么 此时的 x[i] 一定是他们的倍数,最小就是lcm(a[i],b[i]);

Code:

// *********************************************
// Problem: E. G-C-D, Unlucky!
// Contest: Codeforces - Codeforces Round 1037 (Div. 3)
// URL: https://codeforces.com/contest/2126/problem/E
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// *********************************************#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
#define endl '\n'
const int N=1e5+5;
int a[N],b[N];//前缀、后缀GCDint lcm(int x,int y)//求最小公倍数
{int g=__gcd(x, y);int z=x*y/g;return z;
}void slove(){int n;cin>>n;for(int i=1;i<=n;i++)//前缀GCDcin>>a[i];for(int i=1;i<=n;i++)//后缀GCDcin>>b[i];if(a[n]!=b[1]){//都表示整个序列的GCDcout<<"NO"<<endl;return ;}for(int i=2;i<=n;i++){//随着数的增多那么GCD一定是非递增的if(a[i-1]<a[i]){cout<<"NO"<<endl;return;}}for(int i=2;i<=n;i++){if(b[i-1]>b[i]){cout<<"NO"<<endl;return;}}for(int i=1;i<=n;i++){int l=lcm(a[i], b[i]);//lcm是满足gcd(x_i,a[i-1])=a[i]和gcd(x_i,b[i+1])=b[i]的最小可能值if(i>1){if(__gcd(a[i-1], l)!=a[i]){cout<<"NO"<<endl;return ;}}if(i+1<=n){if(__gcd(l, b[i+1])!=b[i]){cout<<"NO"<<endl;return ;}}}cout<<"YES"<<endl;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--)slove();return 0;
} 

附:

http://www.dtcms.com/a/288399.html

相关文章:

  • 【web安全】万能密码
  • 车载诊断架构 --- OEM对于DTC相关参数得定义
  • 计算机网络1.1:计算机网络在信息时代的作用
  • 教你如何借助AI精读文献
  • python基础笔记
  • LRU算法及优化
  • 佛经个人阅读(一)《心经》解析
  • 纸板制造糊机操作
  • 数据类型选择:存储销量与查询性能的平衡
  • yolov8-pos/yolov11-pos openvino C++部署
  • 后来者居上与先来后到:栈和队列的顺序哲学及算法实战(含源码)
  • C++数据结构————集合
  • Fortran实战:快速解析气象NC数据
  • c++-class
  • 系统思考—跳出症状看全局
  • 优先算法——专题十:哈希表
  • WSL的功能及用途
  • Paimon 在维表 Lookup Join 场景中的应用
  • Spring AI - ChatClient接口演示
  • FMEA-CP-PFD三位一体数字化闭环:汽车部件质量管控的速效引擎
  • 11.1Redis高可用集群部署
  • Js中var VS let VS const
  • Jmeter系列(7)-线程组
  • 6.表内容的操作之增、读
  • 【Linux服务器】-mysql数据库数据目录迁移
  • 打靶日记之xss-labs
  • undefined reference to ‘end‘
  • 从公共数据到医学研究:32 个生信数据库详解
  • [实战]巴特沃斯滤波器全流程解析:从数学原理到硬件实现
  • 磁盘阵列技术的功能与分类