生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #753 (Div. 3) A-E
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
打的爛的一批。
目錄
- A. Linear Keyboard【簡單 /模擬】
- B. Odd Grasshopper【簡單 / 找規律】
- C. Minimum Extraction【一般 / 排序 思維】
- D. Blue-Red Permutation【一般 思維 / 貪心】
- E. Robot on the Board 1【中 / 模擬 放縮】
A. Linear Keyboard【簡單 /模擬】
https://codeforces.com/contest/1607/problem/A
#include<bits/stdc++.h>
using namespace std
;
typedef long long int LL
;
const int N
=1e5*2+10;
int n
,m
,t
;
int s
[N
];
int main(void)
{int t
; cin
>>t
;while(t
--){string temp
; cin
>>temp
;string ss
; cin
>>ss
;for(int i
=0;i
<temp
.size();i
++) s
[temp
[i
]-'a']=i
+1;LL ans
=0;for(int i
=1;i
<ss
.size();i
++) ans
+=abs(s
[ss
[i
]-'a']-s
[ss
[i
-1]-'a']);cout
<<ans
<<endl
;}return 0;
}
B. Odd Grasshopper【簡單 / 找規律】
https://codeforces.com/contest/1607/problem/B
四個為一組,一組的和為0。
#include<bits/stdc++.h>
using namespace std
;
typedef long long int LL
;
LL t
,x
,n
;
int main(void)
{cin
>>t
;while(t
--){cin
>>x
>>n
;LL cnt
=n
%4;LL len
=n
/4;for(LL i
=1,j
=len
*4+1;i
<=cnt
;i
++,j
++)if(x
&1) x
+=j
;else x
-=j
;cout
<<x
<<endl
;}return 0;
}
C. Minimum Extraction【一般 / 排序 思維】
https://codeforces.com/contest/1607/problem/C
考試的時候假題了,不過想的方法也是比較垃圾,我是直接用樹狀數組模擬做的。
#include<bits/stdc++.h>
using namespace std
;
typedef long long int LL
;
typedef pair
<int,int> PII
;
const int N
=1e5*2+10;
LL t
,n
,a
[N
],tr
[N
];
LL
lowbit(LL x
){return x
&(-x
);}
LL
add(LL x
,LL v
){for(int i
=x
;i
<=n
;i
+=lowbit(i
)) tr
[i
]+=v
;}
LL
query(int x
)
{LL sum
=0;for(int i
=x
;i
;i
-=lowbit(i
)) sum
+=tr
[i
];return sum
;
}
int main(void)
{cin
>>t
;while(t
--){cin
>>n
;memset(tr
,0,sizeof tr
);for(int i
=1;i
<=n
;i
++) cin
>>a
[i
];sort(a
+1,a
+n
+1);for(int i
=1;i
<=n
;i
++){int b
=a
[i
]-a
[i
-1];add(i
,b
);} LL ans
=query(1);for(int i
=1;i
<n
;i
++){add(i
,-query(i
));ans
=max(ans
,query(i
+1));}cout
<<ans
<<endl
;}return 0;
}
簡潔寫法
#include<bits/stdc++.h>
using namespace std
;
int main(void)
{int t
; cin
>>t
;while(t
--){int n
,x
; cin
>>n
;vector
<int>ve
;for(int i
=0;i
<n
;i
++) cin
>>x
,ve
.push_back(x
);sort(ve
.begin(),ve
.end());int sum
=0,ans
=-1e9;for(int i
=0;i
<ve
.size();i
++){ans
=max(ans
,ve
[i
]+sum
);sum
=sum
-(ve
[i
]+sum
);}cout
<<ans
<<endl
;}return 0;
}
D. Blue-Red Permutation【一般 思維 / 貪心】
https://codeforces.com/contest/1607/problem/D
將紅的放一塊,藍的放一塊,分類排序討論即可。
#include<bits/stdc++.h>
using namespace std
;
const int N
=1e5*2+10;
int a
[N
],t
,n
;
bool cmp(int a
,int b
) {return a
>b
;}
int main(void)
{cin
>>t
;while(t
--){cin
>>n
;vector
<int>ve
[2];for(int i
=0;i
<n
;i
++) cin
>>a
[i
];string s
; cin
>>s
;for(int i
=0;i
<s
.size();i
++) if(s
[i
]=='B') ve
[0].push_back(a
[i
]);else ve
[1].push_back(a
[i
]);sort(ve
[0].begin(),ve
[0].end());sort(ve
[1].begin(),ve
[1].end(),cmp
);bool flag
=1;for(int i
=0,j
=1;i
<ve
[0].size();i
++,j
++)if(ve
[0][i
]<j
) flag
=0;for(int i
=0,j
=n
;i
<ve
[1].size();i
++,j
--) if(ve
[1][i
]>j
) flag
=0;if(flag
) puts("YES");else puts("NO");}return 0;
}
E. Robot on the Board 1【中 / 模擬 放縮】
https://codeforces.com/contest/1607/problem/E
不是太會,網上看了看別人的代碼
#include<bits/stdc++.h>
using namespace std
;
int t
,n
,m
;
int L
,R
,U
,D
,x
,y
,a
,b
;
string s
;
int main(void)
{cin
>>t
;while(t
--){cin
>>n
>>m
>>s
;a
=b
=1;L
=1,R
=m
;D
=1,U
=n
;x
=y
=1;for(int i
=0;i
<s
.size();i
++){if(s
[i
]=='L') y
++;if(s
[i
]=='R') y
--;if(s
[i
]=='D') --x
;if(s
[i
]=='U') ++x
;L
=max(L
,y
);D
=max(D
,x
);R
=min(R
,y
+m
-1);U
=min(U
,x
+n
-1);if(L
<=R
&&D
<=U
) a
=D
,b
=L
; }cout
<<a
<<" "<<b
<<endl
;}return 0;
}
總結
以上是生活随笔為你收集整理的Codeforces Round #753 (Div. 3) A-E的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。