AtcoderExaWizards 2019题解】的更多相关文章

传送门 \(A\ Regular\ Triangle\) 咕咕 \(B\ Red\ or\ Blue\) 咕咕咕 \(C\ Snuke\ the\ Wizard\) 我可能脑子真的坏掉了-- 容易发现不管怎么移动相对顺序都是不变的,那么我们二分找到最右边的会从左边掉出去的点,它左边所有点也会从左边掉出去,最左边的会从右边掉出去的点同理 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R in…
Hello 2019题解 题解 CF1097A [Gennady and a Card Game] map大法好qwq 枚举每一个的第\(1,2\)位判是否与给定的重复即可 # include <bits/stdc++.h> std::map<char, int> m1, m2; int main() { std::string s[6], str; std::cin >> str; for(int i = 1; i <= 5; i++) std::cin >…
[A]Azulejos 题意简述: 有两排瓷砖,每排都有 \(n\) 个,每个瓷砖有高度 \(h_i\) 和价格 \(p_i\) 两种属性. 你需要分别重新排列这两排瓷砖,使得同一排的瓷砖满足价格不降,后一排的瓷砖的高度严格大于前一排对应瓷砖的高度. 判断无解或输出一种合法方案. 题解: 首先要满足价格不降,那么先把两排瓷分别按照 \(p_i\) 排序. 如果同一排中的两个瓷砖 \(p_i\) 不同,那么顺序已经确定.但是如果 \(p_i\) 相同,就可以任意交换顺序. 也就是说,前后两排中的瓷…
传送门 \(HMAPPY2\) 咕 话说这题居然卡\(scanf\)的么??? int T;cin>>T; while(T--){ cin>>n>>a>>b>>k; puts(n/a+n/b-n/(a*b/__gcd(a,b))*2>=k?"Win":"Lose"); } \(CHEFING\) 咕咕 int T;scanf("%d",&T); while(T--){ sc…
传送门 \(CHNUM\) 显然正数一组,负数一组 for(int T=read();T;--T){ n=read(),c=d=0; fp(i,1,n)x=read(),x>0?++c:++d; if(!c)c=d;if(!d)d=c; if(c<d)c^=d^=c^=d; printf("%d %d\n",c,d); } \(CHDIGER\) 从原来的数列中选出字典序最小的上升子序列,往后面加\(d\)就行了 //minamoto #include<bits/st…
传送门 \(PEWDSVTS\) 我哪根筋不对了要把所有可行的拿出来\(sort\)一下--还有忘开\(long\ long\)真的好难受-- int main(){ // freopen("testdata.in","r",stdin); for(int T=read();T;--T){ n=read(),A=read(),B=read(),X=read(),Y=read(),Z=read(),top=sum=0; d=(Z-B+Y-1)/Y,res=Z-1ll*…
link 题面真简洁 qaq C Stones 最终一定是连续一段 . 加上连续一段 # .直接枚举断点记录前缀和统计即可. #include<bits/stdc++.h> #define rep(i,x,y) for (int i=(x);i<=(y);i++) using namespace std; ; int n,cnt0[N],cnt1[N],ans; char s[N]; int main(){ scanf(); rep (i,,n) cnt0[i]+=s[i]=='#',c…
传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in","r",stdin); n=read(),read(s),res=0x3f3f3f3f; fp(i,1,n){ sum[i][0]=sum[i-1][0],sum[i][1]=sum[i-1][1]; ++sum[i][s[i]=='#']; } fp(i,0,n)cmin(r…
传送门 \(div2\)那几道题不来做了太水了-- \(DPAIRS\) 一个显然合法的方案:\(A\)最小的和\(B\)所有连,\(A\)剩下的和\(B\)最大的连 算了咕上瘾了,咕咕咕 const int N=2e5+5; int A[N],B[N],id[N],mxb,mxa,n,m; int main(){ // freopen("testdata.in","r",stdin); n=read(),m=read(),A[0]=inf,B[0]=-inf; f…
传送门 \(Maximum\ Remaining\) 对于两个数\(a,b\),如果\(a=b\)没贡献,所以不妨假设\(a<b\),有\(a\%b=a\),而\(b\%a<a\).综上,我们可以发现答案就是严格次大值 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R i…