0225
Done
IOI
Start at: 2026-2-25 8:00
3.7
hour(s)
Host:
41
温馨提示,先做T4
T1
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int dp[1009][1009];
int a[1009];
int main(){
//freopen("10.in","r",stdin);
//freopen("10.out","w",stdout);
int m,s,maxx;cin>>m>>s>>maxx;
dp[0][s]=1;
for(int i=1;i<=m;i++)cin>>a[i];
for(int i=1;i<=m;i++){
for(int j=0;j<=maxx;j++){
if(dp[i-1][j]){
if(j+a[i]<=maxx)dp[i][j+a[i]]=1;
if(j-a[i]>=0)dp[i][j-a[i]]=1;
}
}
}
for(int i=maxx;i>=0;i--){
if(dp[m][i]){
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}
T2
#include<bits/stdc++.h>
#define ll long long
#define scnaf scanf
using namespace std;
int dp[1000000],ttime[1000000],tx[1000000],ty[1000000];
int main(){
// freopen("5.in","r",stdin);
// freopen("5.out","w",stdout);
int m,n;scnaf("%d%d",&m,&n);
for(int i=1;i<=n;i++){
scnaf("%d%d%d",&ttime[i],&tx[i],&ty[i]);
dp[i]=1;
}
int ans=1;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(abs(tx[i]-tx[j])+abs(ty[i]-ty[j])<=ttime[i]-ttime[j]){
dp[i]=max(dp[i],dp[j]+1);
ans=max(ans,dp[i]);
}
}
}cout<<ans;
return 0;
}
T3
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
int read(){int d=1,k=0;char c=getchar();
while(!(c>='0' and c<='9' or c=='-'))c=getchar();if(c=='-')d=-1,c=getchar();
while(c>='0' and c<='9')k=(k<<3)+(k<<1)+(c^48),c=getchar();return d*k;}
const int mod=998244353,G=3,g1=332748118;
int a[1000000],jc[1000000],n,k;
int ksm(int x,int k){
int re=1;while(k){
if(k&1)re=re*x%mod;
k>>=1;x=x*x%mod;
}return re;
}
int c(int x,int y){return jc[x]*ksm(jc[x-y]*jc[y]%mod,mod-2)%mod;}
int f[1000000],g[1000000],ans[1000000];
int r[1000000],l,N=1;
void ntt(int *u,int type){
for(int i=0;i<=N;i++)if(i<r[i])swap(u[i],u[r[i]]);
for(int mid=1;mid<N;mid<<=1){
int w=ksm((type==1?G:g1),(mod-1)/(mid*2));
for(int i=0;i<N;i+=2*mid){
int e=1;for(int j=0;j<mid;j++,e=e*w%mod){
int x=u[i+j],y=u[i+j+mid]*e%mod;
u[i+j]=x+y;u[i+j]%=mod;
u[i+j+mid]=x-y+mod;u[i+j+mid]%=mod;
}
}
}
}
int k1[1000000];
signed main(){
freopen("10.in","r",stdin);
freopen("10.out","w",stdout);
n=read(),k=read();
jc[0]=1;for(int i=1;i<=min(900000ll,n+k+2);i++)jc[i]=jc[i-1]*i%mod;
for(int i=1;i<=n;i++)a[i]=read();
k1[0]=k-1;for(int i=1;i<=n;i++)k1[i]=k1[i-1]*((k-1+i)%mod)%mod;
int tg=ksm(k1[0],mod-2);g[0]=1;
for(int i=1;i<=n;i++)g[i]=k1[i]*tg%mod*ksm(jc[i],mod-2)%mod;
for(int i=1;i<=n;i++)f[i]=g[i-1]*a[i]%mod;
if(k==1){
for(int i=1;i<=n;i++)f[i]=a[i]*c(i+k-2,k-1);
for(int i=0;i<=n;i++)g[i]=c(i+k-1,k-1);
}
while(N<=n*2)N<<=1,l++;
for(int i=0;i<=N;i++)r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
ntt(f,1),ntt(g,1);for(int i=0;i<=N;i++)ans[i]=f[i]*g[i]%mod;
ntt(ans,-1);int inv=ksm(N,mod-2);
for(int i=1;i<=n;i++)printf("%lld ",ans[i]*inv%mod);
return 0;
}
T4
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
int read(){int d=1,k=0;char c=getchar();
while(!(c>='0' and c<='9' or c=='-'))c=getchar();if(c=='-')d=-1,c=getchar();
while(c>='0' and c<='9')k=(k<<3)+(k<<1)+(c^48),c=getchar();return d*k;}
const int mod=1e9+7;
set<int>L,R;
map<int,int>al,ar;
int ans=1,n;
queue<int>q;
char s[11];
signed main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
L.insert(-1e17),R.insert(1e17);
n=read();for(int i=1;i<=n;i++){
scanf("%s",s+1);
int x=read();
if(s[2]=='C'){
if(al[x]){
al[x]=0;
if((*L.rbegin())==x){
L.erase(x);
while(q.size())R.insert(q.front()),ar[q.front()]=1,q.pop();
}else{cout<<0;return 0;}
}else if(ar[x]){
ar[x]=0;
if((*R.begin())==x){
R.erase(x);
while(q.size())L.insert(q.front()),al[q.front()]=1,q.pop();
}else{cout<<0;return 0;}
}else{
ans=ans*2%mod;
while(q.size()){
int u=q.front();q.pop();
if(u==x)continue;
if(u<x){
al[u]=1;
L.insert(u);
}else{
ar[u]=1;
R.insert(u);
}
}
}
}else{
if(x<(*L.rbegin())){
al[x]=1;
L.insert(x);
}else if(x>(*R.begin())){
ar[x]=1;
R.insert(x);
}else q.push(x);
}
}
ans=(ans*(1+q.size()))%mod;
cout<<ans;
return 0;
}
- Status
- Done
- Rule
- IOI
- Problem
- 4
- Start at
- 2026-2-25 8:00
- End at
- 2026-2-25 11:39
- Duration
- 3.7 hour(s)
- Host
- Partic.
- 41