題面:
磚塊:直接模擬即可,map統計被覆蓋的次數
#include#include#include#include#includeusing namespace std;數字:顯然不會const int maxn=1005;
int n,k,len,a,b,x,y,ans=0;//a,b:xia,x,y:shang
char opt[maxn];
map< pair,int>m;
void workn(int &a,int &b,int &x,int &y)else ++b,++y;
for(int i=a;i<=x;++i) }}
void works(int &a,int &b,int &x,int &y)else --b,--y;
for(int i=a;i<=x;++i) }}
void workw(int &a,int &b,int &x,int &y)else--a,--x;
for(int i=a;i<=x;++i) }}
void worke(int &a,int &b,int &x,int &y)else ++x,++a;
for(int i=a;i<=x;++i) }}
int main()
if(a==x)else
} return 0;
}
粘個50分**:
1 #include2 #include3 #include4 #include5view code#define int long long
6using
namespace
std;
7int n,k,t,fac[10000010];8
signed main()
15 scanf("
%lld
",&t);
16while(t--)
23return0;
24 }
甜圈:但是會有順序的影響,1+3+2也會被我們算為合法
為了排除順序的影響,我們給它乙個hash,每次區間加我們先讓它乘上base,然後再加
這樣就是乙個支援區間加,區間乘的線段樹
#include#include#include#include#define ull unsigned long long另:區間加和區間乘的線段樹板子:using namespace std;
const int base=31;
const int maxn=200005;
int n,k,t;
ull tot;
struct node
}tr[maxn<<2];
void down(int k,int l,int r)
if(tr[k].laz_add!=0)
}void update(int k,int l,int r,int opl,int opr,int val)
down(k,l,r);
int mid=(l+r)>>1;
if(opl<=mid) update(k<<1,l,mid,opl,opr,val);
if(opr>mid) update(k<<1|1,mid+1,r,opl,opr,val);
tr[k].sum=(tr[k<<1].sum+tr[k<<1|1].sum);
}int query(int k,int l,int r)
down(k,l,r);
int mid=(l+r)>>1;
return query(k<<1,l,mid)+query(k<<1|1,mid+1,r);
}signed main()
printf("%d\n",query(1,1,n));
return 0;
}
#include#include#include#include#define int long longusing namespace std;
const int maxn=1e5+5;
int n,m,p,a[maxn];
struct nodetr[maxn<<2];
void build(int k,int l,int r)
int mid=(l+r)>>1;
build(k<<1,l,mid),build(k<<1|1,mid+1,r);
tr[k].sum=(tr[k<<1].sum+tr[k<<1|1].sum)%p;
}void down(int k,int l,int r)
if(tr[k].laz_add!=0)
}void update_add(int k,int l,int r,int opl,int opr,int val)
down(k,l,r);
int mid=(l+r)>>1;
if(opl<=mid) update_add(k<<1,l,mid,opl,opr,val);
if(opr>mid) update_add(k<<1|1,mid+1,r,opl,opr,val);
tr[k].sum=(tr[k<<1].sum+tr[k<<1|1].sum)%p;
}void update_mul(int k,int l,int r,int opl,int opr,int val)
down(k,l,r);
int mid=(l+r)>>1;
if(opl<=mid) update_mul(k<<1,l,mid,opl,opr,val);
if(opr>mid) update_mul(k<<1|1,mid+1,r,opl,opr,val);
tr[k].sum=(tr[k<<1].sum+tr[k<<1|1].sum)%p;
}int query(int k,int l,int r,int opl,int opr)
signed main()
else if(opt==2)
else
}return 0;
}
考試反思 1005csp s模擬測試61 休止
連續不知道多少場了,都是一場10名以內一場20以外。波動極大。還極有規律。拿到這套題,看到t1大模擬無話可說。然後考場上我覺得t2很簡單。然後就碼了兩個半小時。t3資料水了暴力70。t1 磚塊 大模擬。其實也不大。記錄上下左右前後邊界然後滾就是了 閒得慌打hash map 1 include2 in...
csp s模擬測試94
一場簡單題,打爆了。t1 腦抽分解質因數準備分子分母消,想了半天發現 jb 互質直接上天,果斷碼了高精滾蛋。t2 無腦手玩大樣例,突然靈光一閃想到對映到前 k 大小的區間,t3 寫完暴力準備划水,突然發現特殊性質可寫,10 分鐘拯救了 25 分。8003 24 46 7003 24 58 6503 ...
csp s模擬測試93
自閉場。t1 想到 cdq 因為複雜度少看見乙個 0 打了半年還用了 sort 直接廢掉,t2 t3 直接自閉暴力分都沒有。考場太慌了,心態不好。8002 07 34 003 12 11 0 03 11 53 8003 12 11 沒有前途就是垃圾趁早滾回實驗二安度晚年吧。cdq 不接受反駁。最簡單...