Codeforces Beta Round #6 (Div. 2)【未完结】
2022.3.4
题单地址:https://codeforces.com/contest/6
目录
- A. Triangle【枚举】
- B. President's Office【枚举】
- C. Alice, Bob and Chocolate【前缀和】
- D. Lizards and Basements 2【未完成 DP】
- E. Exposition【st表 / 单调队列】
A. Triangle【枚举】
#include<bits/stdc++.h>
using namespace std;
int a[10];
int main(void)
{for(int i=0;i<4;i++) cin>>a[i];sort(a,a+4);int flag=0;for(int i=0;i<4;i++){for(int j=i+1;j<4;j++){for(int k=j+1;k<4;k++){if(a[i]+a[j]>a[k]) flag=max(flag,2);if(a[i]+a[j]==a[k]) flag=max(flag,1);}}}if(flag==2) puts("TRIANGLE");else if(flag==1) puts("SEGMENT");else puts("IMPOSSIBLE");return 0;
}
B. President’s Office【枚举】
这种同一个字符的是一个桌子。故用map来去重,求挨着的不同字符的种类即可
#include<bits/stdc++.h>
using namespace std;
int n,m;
string s[205];
char c;
map<char,int>mp;
void solve(int x,int y)
{int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};for(int i=0;i<4;i++){int tempx=x+dx[i],tempy=y+dy[i];if(tempx<0||tempx>=n||tempy<0||tempy>=m) continue;if(s[tempx][tempy]=='.') continue;if(s[tempx][tempy]==c) continue;mp[s[tempx][tempy]]++;}
}
int main(void)
{cin>>n>>m>>c;for(int i=0;i<n;i++) cin>>s[i];for(int i=0;i<n;i++){for(int j=0;j<m;j++) if(s[i][j]==c) solve(i,j);}cout<<mp.size();return 0;
}
C. Alice, Bob and Chocolate【前缀和】
用前缀和,再枚举一个将其分割成两份。看剩余的相等不相等。
如果相等说明最后一次,他们吃的是同一块,按照题目给第一个加1即可。
否则的话,我们就输出分成两份差最小的位置。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],s[N],n;
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];int temp=1e9;for(int i=1;i<=n;i++){if(s[i-1]==s[n]-s[i])//可以吃同一块{cout<<i<<" "<<n-i;return 0;}temp=min(temp,abs(s[n]-2*s[i]));}for(int i=1;i<=n;i++){if(temp==abs(s[n]-2*s[i])){cout<<i<<" "<<n-i;return 0;}}return 0;
}
D. Lizards and Basements 2【未完成 DP】
E. Exposition【st表 / 单调队列】
就是求最长的区间,区间内的最大值减去最小值的差小于等于k,且输出所有满足最长区间的左右端点。
单调队列可做,st表也可做。
这里是用二分+st表做的,二分一下区间。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int n,k,mx[N][20],mn[N][20],a[N];
int getmx(int l,int r){int tmp=log2(r-l+1);return max(mx[l][tmp],mx[r-(1<<tmp)+1][tmp]);
}
int getmn(int l,int r){int tmp=log2(r-l+1);return min(mn[l][tmp],mn[r-(1<<tmp)+1][tmp]);
}
void init()
{for(int i=1;i<=n;i++) mx[i][0]=mn[i][0]=a[i];for(int j=1;j<20;j++){for(int i=1;i+(1<<j)-1<=n;i++){mx[i][j]=max(mx[i][j-1],mx[i+(1<<j-1)][j-1]);mn[i][j]=min(mn[i][j-1],mn[i+(1<<j-1)][j-1]);}}
}
vector<pair<int,int>>ve;
bool check(int mid)
{ve.clear();for(int i=1;i+mid-1<=n;i++){int l=i,r=i+mid-1;if( (getmx(l,r)-getmn(l,r)) <=k) ve.push_back({l,r});}if(ve.size()) return true;return false;
}
int main(){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];init();int l=1,r=n;while(l<r){int mid=l+r+1>>1;if(check(mid)) l=mid;else r=mid-1;}if(check(l)) cout<<l<<" "<<ve.size()<<endl;for(int i=0;i<ve.size();i++) cout<<ve[i].first<<" "<<ve[i].second<<endl;
}
Codeforces Beta Round #6 (Div. 2)【未完结】相关推荐
- Codeforces Beta Round #4 (Div. 2)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...
- Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树。单点更新
http://codeforces.com/problemset/problem/91/B 题意: 给你n个数,求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个数 ...
- Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
题目大意 给了 n(2<=n<=105) 个点,从每个点 u 出发连向了一个点 v(共 n 条边) 现在要求添加最少的边使得整个图是一个强连通图 做法分析 这道题千万不要一般化:先求强连通 ...
- Codeforces Beta Round #4 (Div. 2 Only)
Codeforces Beta Round #4 (Div. 2 Only) A 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...
- Codeforces Beta Round #16 (Div. 2 Only)【未完结】
2022.3.9 题目地址:https://codeforces.com/contest/16 目录 A. Flag[模拟] B. Burglar and Matches[贪心] C. Monitor ...
- Codeforces Beta Round #14 (Div. 2)【未完结】
2022.3.8 题单地址:https://codeforces.com/contest/14 目录 A. Letter B. Young Photographer[差分] C. Four Segme ...
- Codeforces Beta Round #12 (Div 2 Only)【未完结】
2022.3.7 题单地址:https://codeforces.com/contest/12 目录 A. Super Agent B. Correct Solution? C. Fruits[贪心] ...
- Codeforces Beta Round #9 (Div. 2 Only)【未完结】
2022.3.6 题目地址:https://codeforces.com/contest/9 目录 A. Die Roll B. Running Student[枚举] C. Hexadecimal' ...
- Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
A. Prime Permutation 题目连接: http://www.codeforces.com/contest/123/problem/A Description You are given ...
最新文章
- 1050. 螺旋矩阵(25)
- 解决dubbo问题:forbid consumer(2)
- JavaScript实现knuth-morris-pratt(KMP)算法(附完整源码)
- 在腾讯云上安装mysql遇到的问题
- python for循环1 到10_python for循环(1)
- 云端上的字节,引擎火力全开
- Jvm(20),如何定义为垃圾对象----引用计数法
- iis服务器怎么限制运行asp文件,Win2008 r2 IIS7.5制定目录禁止执行脚本的方法
- Javascript之in操作符的用法
- 双目视觉立体匹配算法
- 增量式解析大型XML文件
- linux+极点五笔输入法,Linux技巧之Ubuntu11.04下安装极点五笔输入法
- java公司年会抽奖流程图文件流_年会抽奖程序的一些总结
- Linux Ansys
- 用计算机怎么打出箭头,箭头怎么打(电脑怎么打长箭头符号) | 土蜂蜜百科网
- 在MacOS系统下DMG文件显示压缩包无法双击安装解决办法
- Nuxt - 自定义配置修改顶部加载条颜色(loding)
- 微信小程序应该这样开发
- Pygame放大缩小照片
- 数据库技术之MySQL高级