4118. 狗和猫 - AcWing题库(模拟)
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
int cnt=0;
void solve(){
cnt++;
printf("Case #%d: ",cnt);
int n,d,c,m;
cin>>n>>d>>c>>m;
string s;
cin>>s;
for(int i=0;i<n;i++){
if(s[i]=='C'){
if(c==0){
for(int j=i+1;j<s.size();j++){
if(s[j]=='D'){
cout<<"NO"<<endl;
return;
}
}
cout<<"YES"<<endl;
return;
}
else c--;
}
else {
if(d==0){
cout<<"NO"<<endl;
return;
}
else d--;
c+=m;
}
}
cout<<"YES"<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
Problem - A - Codeforces
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
const int N=200005;
int a[N];
void solve(){
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x==i)ans++;
}
cout<<ans/2+ans%2<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
Problem - B - Codeforces
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
const int N=200005;
int a[N];
void solve(){
long long n;
cin>>n;
int cnt=0;
int ans=0;
for(int i=1;i<=1000;i++){
if(n%i==0)cnt++;
else cnt=0;
ans=max(ans,cnt);
}
cout<<ans<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
Problem - C1 - Codeforces
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
const int N=200005;
long long a[25];
void solve(){
vector<pair<int,int> >q;
int n;
cin>>n;
int ans=0;
int p1,p2;
int ma=-55;
int mi=55;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>ma){
ma=a[i];
p1=i;
}
if(a[i]<mi){
mi=a[i];
p2=i;
}
}
if(abs(mi)>abs(ma)||(ma==mi&&ma<0)){
for(int i=0;i<n;i++){
if(a[i]>0){
a[i]+=mi;
ans++;
q.push_back({i,p2});
}
}
for(int i=n-2;i>=0;i--){
ans++;
q.push_back({i,i+1});
}
}
else {
for(int i=0;i<n;i++){
if(a[i]<0){
a[i]+=ma;
ans++;
q.push_back({i,p1});
}
}
for(int i=1;i<n;i++){
ans++;
q.push_back({i,i-1});
}
}
cout<<ans<<endl;
for(int i=0;i<q.size();i++){
cout<<q[i].first+1<<' '<<q[i].second+1<<endl;
}
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
Problem - C2 - Codeforces
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
#define int long long
long long a[25];
long long b[25];
typedef pair<int,int>PII;
void solve(){
int f;
vector<PII> vz;
vector<PII> vf;
int n,nmax=-55,dn,nmin=55,xn; cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
if(a[i]>nmax){
dn=i;
nmax=a[i];
}
if(a[i]<nmin){
xn=i;
nmin=a[i];
}
}
if(nmax>0&&nmin<0){
while(a[dn]<abs(a[xn])){
a[dn]+=a[dn];
vz.push_back({dn,dn});
}
for(int i=1;i<=n;i++){
if(a[i]<0){
a[i]+=a[dn];
vz.push_back({i,dn});
}
}
for(int i=2;i<=n;i++){
if(a[i-1]>a[i]){
a[i]+=a[i-1];
vz.push_back({i,i-1});
}
}
while(abs(b[xn])<b[dn]){
b[xn]+=b[xn];
vf.push_back({xn,xn});
}
for(int i=1;i<=n;i++){
if(b[i]>0){
b[i]+=b[xn];
vf.push_back({i,xn});
}
}
for(int i=n;i>1;i--){
if(b[i-1]>b[i]){
b[i-1]+=b[i];
vf.push_back({i-1,i});
}
}
if(vz.size()>=vf.size()){
f=2;
}else{
f=1;
}
}else if(nmin>=0){
for(int i=2;i<=n;i++){
if(a[i-1]>a[i]){
a[i]+=a[i-1];
vz.push_back({i,i-1});
}
}
f=1;
}else{
for(int i=n;i>1;i--){
if(b[i-1]>b[i]){
b[i-1]+=b[i];
vf.push_back({i-1,i});
}
}
f=2;
}
if(f==1){
cout<<vz.size()<<'\n';
for(auto u:vz){
cout<<u.first<<' '<<u.second<<'\n';
}
}else{
cout<<vf.size()<<'\n';
for(auto u:vf){
cout<<u.first<<' '<<u.second<<'\n';
}
}
}
signed main(){
int t;
cin>>t;
while(t--){
solve();
}
}