Codeforces Round #615 (Div. 3) (題解)
題目大意:
給你三個數,用另外一個數n加到這三個數中去,看能不能使得他們相等。
思路:
先對齊,即都先加到三個數中最大數的大小,然後看剩餘的數模
3
3
3是否為0。
程式碼:
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
typedef long long int ll;
void solved(){
vector<ll>ve;
ll a,b,c,n;cin>>a>>b>>c>>n;
ve.push_back(a);ve.push_back(b);ve.push_back(c);
sort(ve.begin(),ve.end());
ll x = (ve[2] - ve[0]) + (ve[2] - ve[1]);
if((n - x) >= 0 && (n - x) % 3 == 0){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
int main(){
int t;cin>>t;
while(t--)
solved();
return 0;
}
題目大意:
你在座標
(
0
,
0
)
(0,0)
(0,0)然後有
n
n
n個箱子的座標,問你能不能拿到所有的箱子,你每次只能向上(U)或者向右移動( R),找到最小移動步數,並且移動結果字典序最小,如果不能全部拿到輸出NO。
思路:
方便處理先按照橫縱座標升序,然後模擬即可。優先處理向右移動再向上即可滿足字典序最小。
程式碼:
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
const int maxn = 1e4;
typedef long long int ll;
struct node{
int x,y;
}a[maxn];
bool cmp(node a,node b){
if(a.x != b.x)
return a.x < b.x;
return a.y < b.y;
}
void solved(){
int n;cin>>n;
for(int i = 1; i <= n; i++)cin>>a[i].x>>a[i].y;
sort(a + 1,a + 1 + n,cmp);
int lx = a[1].x;
int ly = a[1].y;
string ans;
for(int i = 1; i <= lx; i++)ans += "R";
for(int i = 1; i <= ly; i++)ans += "U";
for(int i = 2; i <= n; i++){
if(a[i].x >= lx && a[i].y >= ly){
for(int t = lx; t < a[i].x; t++)ans += "R";
for(int t = ly; t < a[i].y; t++)ans += "U";
lx = a[i].x;ly = a[i].y;
}else{
cout<<"NO"<<endl;return ;
}
}
cout<<"YES"<<endl;
cout<<ans<<endl;
}
int main(){
int t;cin>>t;
while(t--)
solved();
return 0;
}
題目大意:
給定
n
n
n是否存在
a
∗
b
∗
c
=
n
a*b*c=n
a∗b∗c=n。
思路:
質因數分解即可。
程式碼:
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
typedef long long int ll;
void solved(){
ll n;cin>>n;
vector<int>ve;
int cnt = 0;
for(int i = 2; i * i <= n; i++){
if(n % i == 0){
n /= i;
ve.push_back(i);
cnt++;
if(cnt == 2){
ve.push_back(n);
break;
}
}
}
if(cnt == 2 && ve[1] != ve[2]){
cout<<"YES"<<endl;
for(int i = 0; i < ve.size(); i++)cout<<ve[i]<<" ";cout<<endl;
}else cout<<"NO"<<endl;
}
int main(){
int t;cin>>t;
while(t--)
solved();
return 0;
}
題目大意:
給你
q
q
q個詢問和一個數
x
x
x,每次詢問後會把詢問的數加入一個陣列(一開始是0),你可以對陣列的任意元素
−
x
,
+
x
-x,+x
−x,+x,問你每個詢問最大的
m
e
x
mex
mex。
思路:
如果答案已經滿足了,那麼下一個只會比上一個更優,注意到
x
x
x不是很大,我們可以把每次詢問的數構造在
[
0
,
x
−
1
]
[0,x-1]
[0,x−1]範圍內並且對它計數,即
y
m
o
d
x
y mod x
ymodx因為
+
x
,
−
x
+x,-x
+x,−x本質就是mod
x
x
x,然後找答案就行了。具體看程式碼吧,感覺程式碼更加清晰。
程式碼:
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
typedef long long int ll;
int mp[500000];
void solved(){
int q,x;cin>>q>>x;
int ans = 0;
for(int i = 1; i <= q; i++){
int y;cin>>y;
mp[y % x]++;//計數
while(mp[ans % x]){//答案可以增加
mp[ans % x]--;//確定這個數,即這個數失去下次給它加的意義
ans++;//答案增加
}
cout<<ans<<endl;
}
}
int main(){
solved();
return 0;
}
相關文章
- Codeforces Round 946 (Div. 3) 題解
- Codeforces Round 984 (Div. 3) 題解
- Codeforces Round 962 (Div. 3) 題解
- Codeforces Round 981 (Div. 3) 題解(A-E)
- Codeforces Round 957 (Div. 3) A-G 題解
- Codeforces Round 984 (Div. 3) 題解總結
- Codeforces Round #713 (Div. 3)AB題
- Codeforces Round 988 (Div. 3)題解記錄(A~F)
- Codeforces Round 962 (Div. 3) D. Fun 題解
- Codeforces Round 984 (Div. 3)題解記錄(A~F)
- Codeforces Round 976 (Div. 2) 題解
- Codeforces Round 965 (Div. 2) 題解
- Codeforces Round #956 (Div. 2)題解
- Codeforces Round 983 (Div. 2) 題解
- Codeforces Round 951 (Div. 2) 題解
- Codeforces Round 943 (Div. 3)
- Codeforces Round 933 (Div. 3)
- Codeforces Round 981 (Div. 3)
- Codeforces Round 966 (Div. 3)
- Codeforces Round 974 (Div. 3)
- Codeforces Round 946 (Div. 3)
- Codeforces Round 962 (Div. 3)
- Codeforces Round 962(Div. 3)
- Codeforces Round 954 (Div. 3)
- Codeforces Round 957 (Div. 3)
- Codeforces Round 916 (Div. 3)
- Codeforces Round 950 (Div. 3)
- Codeforces Round 991 (Div. 3)
- Codeforces Round #690 (Div. 3)
- Codeforces Round 932 (Div. 2) DE 題解
- Codeforces Round #681 (Div. 2)E題解
- Codeforces Round 990 (Div. 2) 題解 (A ~ E)
- Codeforces Round 950 (Div. 3)個人題解(A~F1)
- Codeforces Round 938 (Div. 3) E
- 2024.11.17 Codeforces Round 988 (Div. 3)
- Codeforces Round 970 (Div. 3)A~F
- Codeforces Round 970 (Div. 3) ABCDEFGH
- Codeforces Round 966 (Div. 3) VP