RC-u1 不要浪费金币(分数 10)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=400010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
void solve()
{
int n,m;
cin>>n>>m;
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
int sum=0,cnt=0;
for(int i=0;i<n;i++)
{
if(sum+a[i]>m)
{
sum=a[i];
cnt++;
}
else sum+=a[i];
}
cout<<cnt;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u2 智能服药助手(分数 15)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=1010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int n,m;
int T[N];
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>T[i];
map<int,int> mp;
for(int i=1;i<=n;i++) mp[i]=-1;
while(m--)
{
int t,k;
cin>>t>>k;
vector<int> a(k+1);
for(int i=1;i<=k;i++) cin>>a[i];
for(int i=1;i<=k;i++)
{
if(T[a[i]]==-1) continue;
if(t-mp[a[i]]>=T[a[i]]||mp[a[i]]==-1) mp[a[i]]=t;
else printf("Don't take %d at %d!\n",a[i],t);
}
}
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u3 跑团机器人(分数 20)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=400010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
map<int,int> mp;
void work(int st,string s,int &l,int &r)
{
if(s.find('d')==string::npos)
{
int x=stoi(s);
l+=st*x,r+=st*x;
}
else
{
int pos=s.find('d');
string x=s.substr(0,pos),y=s.substr(pos+1);
int vx,vy;
if(x=="") vx=1;
else vx=stoi(x);
vy=stoi(y);
mp[vy]+=vx;
if(st==-1) r+=st*vx,l+=st*vx*vy;
else l+=st*vx,r+=st*vx*vy;
}
}
void solve()
{
int l=0,r=0;
string s;
cin>>s;
if(s[0]!='-'&&s[0]!='+') s="+"+s;
string tmp;
for(int i=0;i<s.size();i++)
{
int j=i+1;
while(j<s.size()&&(s[j]!='+'&&s[j]!='-')) j++;
j--;
if(s[i]=='-') work(-1,s.substr(i+1,j-i),l,r);
else work(1,s.substr(i+1,j-i),l,r);
i=j;
}
for(auto [u,v]:mp) cout<<u<<" "<<v<<endl;
cout<<l<<" "<<r;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u4 攻略分队(分数 25)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=400010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int a[6];
string b[6];
struct group
{
vector<int> ow;
vector<int> yt;
};
void print(group ans)
{
for(int i=0;i<ans.ow.size();i++)
if(!i) cout<<ans.ow[i]+1;
else cout<<" "<<ans.ow[i]+1;
cout<<endl;
for(int i=0;i<ans.yt.size();i++)
if(!i) cout<<ans.yt[i]+1;
else cout<<" "<<ans.yt[i]+1;
}
void solve()
{
for(int i=0;i<6;i++) cin>>a[i];
int tk=0;
for(int i=0;i<6;i++)
{
cin>>b[i];
if(b[i][0]=='1') tk++;
}
if(tk<2)
{
cout<<"GG";
return;
}
vector<group> ans;
for(int i=0;i<(1<<6);i++)
{
vector<int> ow,yt;
for(int j=0;j<6;j++)
if(i>>j&1)
{
if(a[j]) ow.pb(j);
}
else
{
if(a[j]) yt.pb(j);
}
bool tk1=false,tk2=false;
for(auto x:ow)
if(b[x][0]=='1') tk1=true;
for(auto x:yt)
if(b[x][0]=='1') tk2=true;
if(tk1&&tk2)
{
group res={ow,yt};
ans.pb(res);
}
else continue;
}
if(ans.size()==1)
{
print(ans[0]);
}
else
{
vector<group> ans0;
for(int i=0;i<ans.size();i++)
{
int zh1=0,gb1=0,zh2=0,gb2=0;
vector<int> ow=ans[i].ow;
vector<int> yt=ans[i].yt;
for(auto x:ow)
{
if(b[x][1]=='1') gb1++;
if(b[x][2]=='1') zh1++;
}
for(auto x:yt)
{
if(b[x][1]=='1') gb2++;
if(b[x][2]=='1') zh2++;
}
if(zh1>=1&&gb1>=1&&zh2>=1&&gb2>=1)
{
group res={ow,yt};
ans0.pb(res);
}
else continue;
}
if(ans0.size()==1)
{
print(ans0[0]);
}
else
{
if(!ans0.size())
{
for(int i=0;i<ans.size();i++)
{
int zh1=0,zh2=0;
vector<int> ow=ans[i].ow;
vector<int> yt=ans[i].yt;
for(auto x:ow)
{
if(b[x][2]=='1') zh1++;
}
for(auto x:yt)
{
if(b[x][2]=='1') zh2++;
}
if(zh1>=1||zh2>=1)
{
group res={ow,yt};
ans0.pb(res);
}
else continue;
}
}
if(ans0.size()==1)
{
print(ans0[0]);
}
else
{
vector<group> ans1;
int mn=1e9;
for(int i=0;i<ans0.size();i++)
{
vector<int> ow=ans0[i].ow;
vector<int> yt=ans0[i].yt;
int sum1=0,sum2=0;
for(auto x:ow) sum1+=a[x];
for(auto x:yt) sum2+=a[x];
mn=min(mn,abs(sum1-sum2));
}
for(int i=0;i<ans0.size();i++)
{
vector<int> ow=ans0[i].ow;
vector<int> yt=ans0[i].yt;
int sum1=0,sum2=0;
for(auto x:ow) sum1+=a[x];
for(auto x:yt) sum2+=a[x];
if(mn==abs(sum1-sum2))
{
group res={ow,yt};
ans1.pb(res);
}
}
if(ans1.size()==1)
{
print(ans1[0]);
}
else
{
vector<group> ans2;
for(int i=0;i<ans1.size();i++)
{
vector<int> ow=ans1[i].ow;
vector<int> yt=ans1[i].yt;
int sum1=0,sum2=0;
for(auto x:ow) sum1+=a[x];
for(auto x:yt) sum2+=a[x];
if(sum1>=sum2)
{
group res={ow,yt};
ans2.pb(res);
}
}
if(ans2.size()==1)
{
print(ans2[0]);
}
else
{
int mn=0;
for(int i=1;i<ans2.size();i++)
{
if(ans2[mn].ow>ans2[i].ow) mn=i;
}
print(ans2[mn]);
}
}
}
}
}
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u5 树与二分图(分数 30)
#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=1000010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int n;
int h[N],e[N],ne[N],idx;
void add(int a,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int col[N];
int dfs(int u,int color)
{
col[u]=color;
for(int i=h[u];i!=-1;i=ne[i])
{
int j=e[i];
if(col[j])
{
if(col[j]==color) return 0;
}
else if(!dfs(j,3-color)) return 0;
}
return 1;
}
void solve()
{
memset(h,-1,sizeof h);
cin>>n;
for(int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,1);
int x=0,y=0;
for(int i=1;i<=n;i++)
if(col[i]==1) x++;
else y++;
cout<<x*y-(n-1);
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}