AtCoder Beginner Contest 174 总结

这次做了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^71107

#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;
}

要加油哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【KMP】周期长度和(luogu 3435/ybtoj KMP-3)

正题 luogu 3435 ybtoj KMP-3 题目大意 定义S的proper前缀为S中非空且len<|S|的前缀&#xff0c;若Q是A的proper前缀&#xff0c;且A是QQ的前缀 现在问你字符串S所有前缀的最大周期之和 解题思路 如上图&#xff0c;对于一个字符串S&#xff0c;如果有周期Q&#xff0c;那…

P6097-[模板]子集卷积

正题 题目链接:https://www.luogu.com.cn/problem/P6097 题目大意 长度为2n2^n2n的序列a,ba,ba,b求一个ccc满足 ck∑i∣jk,i&j∅aibjc_k\sum_{i|jk,i\&j\varnothing}a_i\times b_jck​i∣jk,i&j∅∑​ai​bj​ 解题思路 从炫酷反演魔术过来的&#xff0c;顺便写…

dotnet core 开发无缝兼容Http和Websocket协议的接口服务

在应用接口开发中往往要针对不同协义开发相应的代理服务&#xff0c;但对于Websocket和http这两种协议来说就有些不同&#xff0c;从实现上来看Websocket可以说是Http的升级子协议&#xff0c; 两者在协议处理上基本一致&#xff0c;具体可以在解释Body上有所不同。FastHttpApi…

【KMP】子串拆分(ybtoj KMP-4)

正题 ybtoj KMP-4 题目大意 给出字符串S&#xff0c;问你有多少个子串满足ABA的形式&#xff0c;且∣A∣⩾k,∣B∣⩾1|A|\geqslant k,|B|\geqslant 1∣A∣⩾k,∣B∣⩾1 解题思路 可以先枚举左端点&#xff0c;然后跑KMP&#xff0c;使其满足左右两个A&#xff0c;然后判断A,…

[SDOI2008]SUE的小球

[SDOI2008]SUE的小球 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 Sue和Sandy最近迷上了一个电脑游戏&#xff0c;这个…

Codeforces Round #661 (Div. 3)

A - Remove Smallest 排个序&#xff0c;如果相邻的数大于一就不满足题意 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #define debug(x) cout<<#x<<": "<<x<<" " #include<iostream> #include<alg…

centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用。当然&#xff0c;在真实的产线环境中需要分析的数据和难度远远高于demo所示&#xff0c;所以demo的作用也仅仅只能起到介绍工具的作用。通常正常情况下&#xff0c;分析个几天才能得出一个结论的的结果都还是比较…

P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】

除了最后一题都比较简单就写一起了 P4450-双亲数 题目链接:https://www.luogu.com.cn/problem/P4450 题目大意 给出A,B,dA,B,dA,B,d求有多少对(a,b)(a,b)(a,b)满足gcd(a,b)dgcd(a,b)dgcd(a,b)d且a∈[1,A],b∈[1,B]a\in[1,A],b\in[1,B]a∈[1,A],b∈[1,B] 解题思路 很显然的…

【Trie】最大异或对(ybtoj Trie-2)

正题 ybtoj Trie-2 题目大意 给你n个数&#xff0c;选择2个&#xff0c;使其异或值最大 解题思路 对于每个数的二进制建立Trie&#xff0c;然后每个数在Trie中搜索&#xff0c;每次尽量走不同方向 代码 #include<cstdio> #include<cstring> #include<iostrea…

[SCOI2003]字符串折叠

[SCOI2003]字符串折叠 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 折叠的定义如下&#xff1a; 一个字符串可以看成它自身的折叠。记作S S X(S)是X(X>1)个S连接在一…

Codeforces Round #662 (Div. 2)

就写了两个题&#xff0c;以为要掉分&#xff0c;结果早上起来发现还上分了&#xff08;说明wtcl A - Rainbow Dash, Fluttershy and Chess Coloring 无论边长是奇数还是偶数&#xff0c;考虑每次操作最外层的一圈&#xff0c;一个人操作一圈的一般&#xff0c;然后另一个人就…

.NET微服务方案调查

.NET Core就是专门针对模块化的微服务架构而设计&#xff0c;调查下大家选择.NET微服务情况&#xff0c;如果你有微服务方面的需求可以找我哦&#xff0c;可加我微信geffzhang&#xff1a;相关文章&#xff1a;Service Fabric 与Ocelot 的集成Ocelot简易教程&#xff08;二&…

Loj#116-[模板]有源汇有上下界最大流

正题 题目链接:https://loj.ac/p/116 题目大意 nnn个点mmm条边的一张图&#xff0c;每条边有流量上下限制&#xff0c;求源点到汇点的最大流。 解题思路 先别急着求上面那个&#xff0c;考虑一下怎么求无源点汇点的上下界可行流。 可以考虑先把下限流满&#xff0c;这样就会…

【Trie】最长异或路径(ybtoj Trie-3/luogu 4551)

正题 ybtoj Trie-3 luogu 4551 题目大意 给你一棵树&#xff0c;让你找一条路径&#xff0c;使这条路径的亦或值最大 解题思路 对于每个数存下到根节点的亦或值&#xff0c;然后拿这些数去Trie中跑最大亦或 因为相同部分亦或后为0&#xff0c;所以得出结果就是最大路径亦或…

Codeforces Round #663 (Div. 2)

2020/8/9晚上断网了&#xff0c;本来不想打就顺便看看题目&#xff0c;发现能做几个&#xff0c;然后就交了。&#xff08;做完1、2两题才敢交&#xff09;最终做了3个题tcl。 A - Suborrays 脑筋急转弯题目。位运算OR运算结果只会变大不会变小&#xff0c;直接正序输出就可 …

【每日一题】7月16日题目精讲—点权和

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 给你一棵树&#xff0c;最开始点权为0&#xff0c;每次将与一个点x树上距离<1的所…

中国开源年会 COSCon 2018 今起接受报名!

大会官网二维码名片&#xff1a;点击文末左下角阅读原文&#xff0c;直达报名链接写在大会前开源 20 年&#xff0c;我们遇到了什么问题&#xff1f;‍围绕开源的方式来开发软件项目&#xff0c;正在走向业界的主流。随着开源的崛起&#xff0c;相应的问题也来了&#xff1a;Re…

【Trie】阅读理解(luogu 3879/ybtoj Trie-4)

正题 luogu 3879 ybtoj Trie-4 题目大意 给你n篇文章&#xff0c;还有m个单词&#xff0c;问你这些单词在哪几篇文章中出现过 解题思路 对文章中的单词建Trie&#xff0c;然后那查询的单词去匹配 代码 #include<map> #include<vector> #include<cstdio> …

P6222-「P6156 简单题」加强版【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P6222 题目大意 给出kkk&#xff0c;TTT组询问给出nnn求 ∑i1n∑j1n(ij)kgcd(i,j)μ(gcd(i,j))2\sum_{i1}^n\sum_{j1}^n(ij)^k\times gcd(i,j)\times \mu(gcd(i,j))^2i1∑n​j1∑n​(ij)kgcd(i,j)μ(gcd(i,j))2 解题思路 开…

Codeforces Round #664 (Div. 2)

写了三个题结果C fst了O.0 A - Boboniu Likes to Color Balls 回文串&#xff0c;最多有球是一个奇数个。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<cstdio> #include<iostream> #include<algorithm> using namespace std…