比赛链接:ABC345
先签个到。
#include <bits/stdc++.h>
using namespace std;
int main(){
string S;
cin>>S;
if(S=='<'+string(S.size()-2,'=')+'>')
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
就是上取整。
#include <bits/stdc++.h>
using namespace std;
int main(){
long long X;
cin>>X;
if(X>0)
cout<<(X-1)/10+1<<endl;
else
cout<<X/10<<endl;
return 0;
}
当然,也可以用ceil函数。
非常简单的组合数学。说到底就是握手问题。
#include <bits/stdc++.h>
using namespace std;
int cnt[30];
int main(){
string S;
cin>>S;
for(auto c:S)
cnt[c-'a']++;
int n=S.size();
long long ans=0;
for(int i=0;i<26;i++)
ans+=(1LL*cnt[i]*(cnt[i]-1)/2);
ans=1LL*n*(n-1)/2-ans;
cout<<ans<<endl;
return 0;
}
注意小心ans为0的情况,以及long long。
不可以,总司令!然后:
得25pts。
----------------------------------------------------------------------------------------------------------------------------
这题dfs爆搜即可,就是代码量有点大。
#include <bits/stdc++.h>
using namespace std;
const int maxn=50;
int N,H,W;
int A[maxn],B[maxn];
bool vis[maxn],f[maxn][maxn];
void dfs(int x,int y){
if(x==H){
cout<<"YES"<<endl;
exit(0);
}
if(y==W)
dfs(x+1,0);
if(f[x][y])
dfs(x,y+1);
for(int i=0;i<N;i++){
if(!vis[i]){
vis[i]=true;
for(int t=0;t<2;t++){
if(x+A[i]<=H && y+B[i]<=W){
bool ok=true;
for(int u=0;u<A[i];u++){
for(int v=0;v<B[i];v++){
if(f[x+u][y+v])
ok=false;
}
}
if(ok){
for(int u=0;u<A[i];u++){
for(int v=0;v<B[i];v++)
f[x+u][y+v]=true;
}
dfs(x,y+1);
for(int u=0;u<A[i];u++){
for(int v=0;v<B[i];v++)
f[x+u][y+v]=false;
}
}
}
swap(A[i],B[i]);
}
vis[i]=false;
}
}
}
int main(){
cin>>N>>H>>W;
for(int i=0;i<N;i++)
cin>>A[i]>>B[i];
dfs(0,0);
cout<<"NO"<<endl;
return 0;
}
好了Y(^o^)Y,以上就是本期的全部内容。我们下期再见!
温馨提示:本期的代码都有问题,请不要无脑Ctrl C+Ctrl V