这次做了ABDF。我也不知道我怎么做的(乱做-.-

A - Air Conditioner

签到题1

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define debug(x) cout<<#x<<": "<<x<<" "
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{IO;int T;cin>>T;if(T>=30) cout<<"Yes"<<endl;else cout<<"No"<<endl;return 0;
}

B - Distance

签到题2

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define debug(x) cout<<#x<<": "<<x<<" "
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{IO;int n;ll d;cin>>n>>d;int res=0;while(n--){ll x,y;cin>>x>>y;if(x*x+y*y<=d*d) res++;}cout<<res<<endl;return 0;
}

C - Repsept

群里大佬说k是2或5的倍速显然不行,其他再int范围内显然有解(为啥我看不出来显然)。反正实在不行就暴力长度1…1071\dots10^71…107

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{IO;ll k;cin>>k;if(k%2==0||k%5==0){cout<<-1<<endl;return 0;}ll sum=0,len=1,p=1;while(true){sum=(sum+7*p)%k;if(sum==0) {cout<<len<<endl;break;}len++;p=p*10%k;}return 0;
}

反思:好几次看到这种大数的都想着高精度,而且每次看到题解的时候都是因为模了一个数最终避免高精度。下次想高精度的时候需要考虑下是否能过模一个数避免高精度

D - Alter Altar

最终R全在左边,W全在右边,按照快排时候的策略,贪心+双指针。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define debug(x) cout<<#x<<": "<<x<<" "
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef long long ll;
int main()
{IO;int n;string s;cin>>n>>s;int i=0,j=n-1;int res=0;while(i<j){if(s[i]=='R'&&s[j]=='W') i++,j--;else if(s[i]=='W'&&s[j]=='R') res++,i++,j--;else if(s[i]=='W'&&s[j]=='W') j--;else i++;}cout<<res<<endl;return 0;
}

E - Logs

最大值最小二分答案。u1s1这个题不难。考试怎么没做!!!wctl

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
int a[N],n,k;
bool check(int mid)
{ll res=0;for(int i=1;i<=n;i++) res+=(a[i]+mid-1)/mid-1;return res<=k;
}
int main()
{IO;cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];int l=1,r=1e9;while(l<r){int mid=l+r>>1;if(check(mid)) r=mid;else l=mid+1;}cout<<l<<endl;return 0;
}

F - Range Set Query

HH的项链
解法一:莫队板子题5×1055×10^55×105过不了?那我开个O2还真让我水过了(滑稽
O(mn)O(m\sqrt{n})O(mn​) 1953 ms

#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=500010;
int pos[N],sz;
int cnt[N];
int a[N];
int ans[N];
ll res;
struct node
{int l,r,k;bool operator <(const node& o)const{if(pos[l]==pos[o.l]) return r<o.r;return pos[l]<pos[o.l];}
}q[N];
int n,m;
void add(int k)
{cnt[a[k]]++;if(cnt[a[k]]==1) res++;
}
void sub(int k)
{cnt[a[k]]--;if(cnt[a[k]]==0) res--;
}
int main()
{scanf("%d%d",&n,&m);sz=sqrt(n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);pos[i]=i/sz;}for(int i=0;i<m;i++){int l,r;scanf("%d%d",&l,&r);q[i]={l,r,i};}sort(q,q+m);int l=1,r=0;for(int i=0;i<m;i++){while(l<q[i].l) sub(l++);while(l>q[i].l) add(--l);while(r<q[i].r) add(++r);while(r>q[i].r) sub(r--);ans[q[i].k]=res;}for(int i=0;i<m;i++) printf("%lld\n",ans[i]);return 0;
}

解法二:离线树状数组
对于求不同数的个数,给定区间一个数出现n次对答案的贡献只是1,我们不妨让每次贡献都看作是该区间最后这个数的出现给予的(前面出现的不算答案的贡献)。树状数组维护每个数对答案的贡献。
O(mlogn+n)O(mlogn+n)O(mlogn+n) 222 ms

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=500010;
int tree[N];
int a[N],last[N];//a[]原数组 last[x]动态记录x再原数组最后一次出现的位置
int ans[N];
int n,m;
struct node
{int l,r,k;bool operator <(const node& o)const{return r<o.r;}
}q[N];
int lowbit(int x)
{return x&-x;
}
void add(int x,int c)
{for(;x<=n;x+=lowbit(x)) tree[x]+=c;
}
int sum(int x)
{int res=0;for(;x;x-=lowbit(x)) res+=tree[x];return res;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=0;i<m;i++){int l,r;scanf("%d%d",&l,&r);q[i]={l,r,i};}sort(q,q+m);//按照区间右端点排序int k=1;//指针 动态维护到的位置(每次维护到询问右端点)for(int i=0;i<m;i++)//每一个询问{for(;k<=q[i].r;k++){int x=a[k];if(last[x]) add(last[x],-1);//说明x之前出现过 在之前出现的位置减1add(k,1);//该位置产生了一个新种类的数last[x]=k;}ans[q[i].k]=sum(q[i].r)-sum(q[i].l-1);}for(int i=0;i<m;i++) printf("%lld\n",ans[i]);return 0;
}

要加油哦~

AtCoder Beginner Contest 174 总结相关推荐

  1. AtCoder Beginner Contest 174 E.Logs

    AtCoder Beginner Contest 174 E.Logs 题目链接 到最后才发现是二分,菜菜的我/(ㄒoㄒ)/~~ 我们直接二分 [1,max{a[i]}][1,max\lbrace a ...

  2. AtCoder Beginner Contest 174 C.Repsept

    AtCoder Beginner Contest 174 C.Repsept 题目链接 思维题~ 首先无论多少个 777 对 101010 取模都不为 000,所以对 101010 的因子的倍数直接输 ...

  3. 【Atcoder】AtCoder Beginner Contest 174总结

    目录 A Air Conditioner B Distance C Repsept D Alter Altar E Logs F Range Set Query A B C D E F √ √ ● ○ ...

  4. Atcoder Beginner Contest 174(ABC174) 题解

    打到了Rank33Rank\ 33Rank 33,还是不错的. 第一次顺顺畅畅没有WA地AK了一场ABC,写篇题解纪念一下-- Solution T1 直接模拟即可. T2 分别枚举每个点并用已给的公 ...

  5. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  6. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  7. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  8. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  9. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

最新文章

  1. IIS 伪静态配置(安装ISAPI_Rewrite配置)
  2. cuda error invalid argument
  3. 字符集详解 ------------------------ UNICODE +UTF8
  4. 【ssh从零单排】关于HTTP Status 404的debug问题
  5. SpringCloud OpenFeign 远程HTTP服务调用用法与原理
  6. 牛客网 --java问答题
  7. thunderbird html签名,Thunderbird中配置签名
  8. 跨站点脚本(XSS)
  9. html5和c3属性,H5与C3不得不说的知识点
  10. 关联分析:FP-Growth算法
  11. 如何识别一个人是web前端程序员
  12. 网络通信中关于请求数据、断点续传和写入本地文件
  13. java io流缓冲理解
  14. linux php错误日志在哪里,宝塔的php错误日志在哪
  15. Linux开发板循环显示红绿蓝
  16. 如何用金山打字通等软件练习准确地打JAVA语言
  17. Kudu Partition Tablet Bucket
  18. 计算机技术与软件专业技术资格(水平)考试岗位设置与描述
  19. 一看就懂手机里的PDF转换成PPT的方法
  20. 重新安装macOS 一直报no bag entry

热门文章

  1. python变量的作用_python 变量的作用范围
  2. 8-1 回溯法实验报告 (15 分)(思路+详解)
  3. [MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略
  4. 多重背包问题以及二进制优化
  5. 算法导论第三版第十一章11.1-4
  6. 大一计算机上机考试第七套,国家开放大学电大《计算机组网技术》机考第七套题库及答案.doc...
  7. matlab贝叶斯优化工具箱_经济学人的神器——BEAR(贝叶斯估计、分析和回归工具包)...
  8. 使用Java查询Sql Server数据库
  9. LeetCode动态规划 分割等和子集
  10. 进程间通信的方式总结