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)【未完结】相关推荐

  1. Codeforces Beta Round #4 (Div. 2)【完结】

    2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...

  2. 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]之间包含了多少个数 ...

  3. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)

    题目大意 给了 n(2<=n<=105) 个点,从每个点 u 出发连向了一个点 v(共 n 条边) 现在要求添加最少的边使得整个图是一个强连通图 做法分析 这道题千万不要一般化:先求强连通 ...

  4. 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 ...

  5. Codeforces Beta Round #16 (Div. 2 Only)【未完结】

    2022.3.9 题目地址:https://codeforces.com/contest/16 目录 A. Flag[模拟] B. Burglar and Matches[贪心] C. Monitor ...

  6. Codeforces Beta Round #14 (Div. 2)【未完结】

    2022.3.8 题单地址:https://codeforces.com/contest/14 目录 A. Letter B. Young Photographer[差分] C. Four Segme ...

  7. Codeforces Beta Round #12 (Div 2 Only)【未完结】

    2022.3.7 题单地址:https://codeforces.com/contest/12 目录 A. Super Agent B. Correct Solution? C. Fruits[贪心] ...

  8. Codeforces Beta Round #9 (Div. 2 Only)【未完结】

    2022.3.6 题目地址:https://codeforces.com/contest/9 目录 A. Die Roll B. Running Student[枚举] C. Hexadecimal' ...

  9. 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 ...

最新文章

  1. 1050. 螺旋矩阵(25)
  2. 解决dubbo问题:forbid consumer(2)
  3. JavaScript实现knuth-morris-pratt(KMP)算法(附完整源码)
  4. 在腾讯云上安装mysql遇到的问题
  5. python for循环1 到10_python for循环(1)
  6. 云端上的字节,引擎火力全开
  7. Jvm(20),如何定义为垃圾对象----引用计数法
  8. iis服务器怎么限制运行asp文件,Win2008 r2 IIS7.5制定目录禁止执行脚本的方法
  9. Javascript之in操作符的用法
  10. 双目视觉立体匹配算法
  11. 增量式解析大型XML文件
  12. linux+极点五笔输入法,Linux技巧之Ubuntu11.04下安装极点五笔输入法
  13. java公司年会抽奖流程图文件流_年会抽奖程序的一些总结
  14. Linux Ansys
  15. 用计算机怎么打出箭头,箭头怎么打(电脑怎么打长箭头符号) | 土蜂蜜百科网
  16. 在MacOS系统下DMG文件显示压缩包无法双击安装解决办法
  17. Nuxt - 自定义配置修改顶部加载条颜色(loding)
  18. 微信小程序应该这样开发
  19. Pygame放大缩小照片
  20. 数据库技术之MySQL高级

热门文章

  1. 【c++】 类与对象
  2. N 组连续子串最大和
  3. Object C学习笔记12-集合
  4. Hit or Miss
  5. Java自带的多线程监控分析工具(VisualVM)
  6. [Buzz.Today]HP停止 webOS 设备的研发和运作
  7. 2003 SERVER 本地连接 TCP/IP问题[转]
  8. 设计模式总结之Builder Pattern(建造者模式)
  9. Ble Connection Events(转载)
  10. PKI/CA (6)双证书