缺省源
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read() {
ll ret=0,f=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
ret=ret*10+(ch-'0');
ch=getchar();
}
return ret*f;
}
ll fpow(ll a,ll b,ll mod) {
ll ret=1;
while(b) {
if(b&1) {
ret*=a;
ret%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ret;
}
int main() {
return 0;
}
2026.10.19
在线C++IDE
2026年10月20日
# 任务2
q={
'李冰': ['战国秦国官员', '任职蜀郡郡守', '在岷江流域开展水利工程建设', '修建大型防洪灌溉水利工程', '主持修建都江堰'],
'秦始皇': ['秦朝开国君主', '结束长期分裂局面完成全国统一', '确立中央集权官僚制度', '推行统一文字货币度量衡', '修筑万里长城'],
'司马迁': ['西汉文人官员', '出身史学世家', '遭受过宫刑屈辱', '耗费多年编撰史学巨著', '创作我国第一部纪传体通史《史记》'],
'张成勇': ['高一17班班主任', '名师工作室室长', '语文老师', '长得像丘成桐', '男性']
}
for guess in q.keys():
print('新题目')
for x in range(5):
print('线索', x , q[guess][x])
a=input('你猜的是:')
if guess==a:
print('答对了')
break
else:
print('答错了')
print('答案是:',guess)
# 任务三
q={
'李冰': ['战国秦国官员', '任职蜀郡郡守', '在岷江流域开展水利工程建设', '修建大型防洪灌溉水利工程', '主持修建都江堰'],
'秦始皇': ['秦朝开国君主', '结束长期分裂局面完成全国统一', '确立中央集权官僚制度', '推行统一文字货币度量衡', '修筑万里长城'],
'司马迁': ['西汉文人官员', '出身史学世家', '遭受过宫刑屈辱', '耗费多年编撰史学巨著', '创作我国第一部纪传体通史《史记》'],
'张成勇': ['高一17班班主任', '名师工作室室长', '语文老师', '长得像丘成桐', '男性']
}
score=0
for guess in q.keys():
print('新题目')
cnt=5
for x in range(5):
print('线索', x , q[guess][x])
cnt=cnt-1
a=input('你猜的是:')
if guess==a:
print('答对了')
break
else:
print('答错了')
print('答案是:',guess)
score=score+cnt
print("最终得分是",score)
# 任务四
q={
'李冰': ['战国秦国官员', '任职蜀郡郡守', '在岷江流域开展水利工程建设', '修建大型防洪灌溉水利工程', '主持修建都江堰'],
'秦始皇': ['秦朝开国君主', '结束长期分裂局面完成全国统一', '确立中央集权官僚制度', '推行统一文字货币度量衡', '修筑万里长城'],
'司马迁': ['西汉文人官员', '出身史学世家', '遭受过宫刑屈辱', '耗费多年编撰史学巨著', '创作我国第一部纪传体通史《史记》'],
'张成勇': ['高一17班班主任', '名师工作室室长', '语文老师', '长得像丘成桐', '男性']
}
score=0
qui=False
for guess in q.keys():
print('新题目')
cnt=5
for x in range(5):
print('线索', x , q[guess][x])
cnt=cnt-1
a=input('你猜的是:')
if guess==a:
print('答对了')
break
else:
if a=="quit":
qui=True
break
else:
print('答错了')
if qui==True:
print('提前退出')
break
else:
print('答案是:',guess)
score=score+cnt
print("最终得分是",score)
ABC480E

P4683 [IOI 2008] Type Printer
ABC480G

2026年10月27日
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read() {
ll ret=0,f=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-') {
f=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9') {
ret=ret*10+(ch-'0');
ch=getchar();
}
return ret*f;
}
ll fpow(ll a,ll b,ll mod) {
ll ret=1;
while(b) {
if(b&1) {
ret*=a;
ret%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ret;
}
struct Edge{
ll v,nxt;
};
const ll maxn=5e4+5;
Edge e[maxn<<5];
ll a[maxn],b[maxn];
bool tag[maxn];
ll c[maxn],cnt[maxn],head[maxn]; //color
vector<ll> pos[maxn];
ll n,ecur;
void add_edge(ll u,ll v) {
++ecur;
e[ecur]={v,head[u]};
head[u]=ecur;
return;
}
//将颜色u染色为c 并返回代价
ll full(ll u,ll col) {
if(c[u]) {
if(c[u]==col) {
return 0;
}else{
return 0;
}
}
ll ret=0;
c[u]=col;
if((c[u]>n&&col==1)||(c[u]<=n&&col==2)) {
++ret;
}
for(ll i=head[u];i;i=e[i].nxt) {
ll v=e[i].v;
ll tmp=full(v,col==1?2:1);
if(tmp==-1) {
return -1;
}
ret+=tmp;
}
return ret;
}
void add_tag(ll u) {
if(tag[u]) {
return;
}
for(ll i=head[u];i;i=e[i].nxt) {
ll v=e[i].v;
add_tag(v);
}
return;
}
int main() {
n=read();
for(ll i=1;i<=n;++i) {
a[i]=read();
++cnt[a[i]];
pos[a[i]].push_back(i);
}
for(ll i=1;i<=n;++i) {
b[i]=read();
pos[b[i]].push_back(i+n);
}
//开始建立图
//先确定图合法
for(ll i=1;i<=n;++i) {
if(cnt[i]!=2) {
puts("-1");
return 0;
}
}
//开始建立图
//建图按照位置建
for(ll i=1;i<=n;++i) {
add_edge(i,i+n);
add_edge(i+n,i);
}
//建图按照值建立
for(ll i=1;i<=n;++i) {
add_edge(pos[i][0],pos[i][1]);
add_edge(pos[i][1],pos[i][0]);
}
//我们开始建立图
return 0;
}
2026年11月2日
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read() {
ll ret=0,f=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-') {
f=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9') {
ret=ret*10+(ch-'0');
ch=getchar();
}
return ret*f;
}
ll fpow(ll a,ll b,ll mod) {
ll ret=1;
while(b) {
if(b&1) {
ret*=a;
ret%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ret;
}
const ll maxn=2e6+5;
ll dp[maxn],f[maxn];
ll a[maxn];
ll n,d,c,t;
ll pre(ll x) {
ll ret=1;
for(ll l=1,r=x;l<=r;) {
ll mid=(l+r)>>1;
if(a[x]-a[mid]<=d) {
ret=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ret;
}
ll nxt(ll x) {
ll ret=1;
for(ll l=x,r=n;l<=r;) {
ll mid=(l+r)>>1;
if(a[mid]-a[x]<=d) {
ret=mid;
l=mid+1;
}else{
r=mid-1;
}
}
return ret;
}
void work() {
n=read();
d=read();
fill(a+1,a+1+n,0);
fill(dp+1,dp+1+n,0);
fill(f+1,f+1+n,0);
for(ll i=1;i<=n;++i) {
a[i]=read();
}
//我们预处理dp和f
dp[1]=1;
for(ll i=2;i<=n;++i) {
dp[i]=1;
//往前找
ll tmp=pre[i];
if(nxt(tmp)==i) {
dp[i]+=dp[tmp];
}
}
f[n]=1;
for(ll i=n-1;i>=1;i--) {
dp[i]=1;
ll tmp=nxt[i];
if(pre(tmp)==i) {
f[i]+=f[tmp];
}
}
//然后我们求解
for(ll i=1;i+1<=n;++i) {
//从i和i+1是不同的位置
ll x,y;
x=pre(i+1);
y=nxt(i);
if(nxt(i+1)!=y || pre(i)!=x) {
//这个点对不会成为中间点对
continue;
}
ans+=dp[x]*f[y];
}
printf("%lld\n",ans);
return;
}
int main() {
c=read();
t=read();
while(t--) {
work();
}
return 0;
}
#include <bits/stdc++.h>
#define ls(x) ((x)<<1)
#define rs(x) ((x)<<1|1)
using namespace std;
typedef long long ll;
ll read() {
ll ret=0,f=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
ret=ret*10+(ch-'0');
ch=getchar();
}
return ret*f;
}
ll fpow(ll a,ll b,ll mod) {
ll ret=1;
while(b) {
if(b&1) {
ret*=a;
ret%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ret;
}
struct robot{
ll x,d;
};
const ll inf=1e18;
const ll maxn=2e5+5;
ll dp[maxn];
ll seg[maxn<<2];
robot a[maxn];
ll nxt[maxn];
ll n;
ll ask(ll p,ll l,ll r,ll x,ll y) {
if(x<=l&&r<=y) {
return seg[p];
}
ll mid=(l+r)>>1;
ll ret=0;
if(x<=mid) {
ret=ask(ls(p),l,mid,x,y);
}
if(y>mid) {
ret=max(ret,ask(rs(p),mid+1,r,x,y));
}
return ret;
}
void chg(ll p,ll l,ll r,ll x,ll y) {
if(l==r) {
seg[p]=y;
return;
}
ll mid=(l+r)>>1;
if(x<=mid) {
chg(ls(p),l,mid,x,y);
}else{
chg(rs(p),mid+1,r,x,y);
}
seg[p]=max(seg[ls(p)],seg[rs(p)]);
return;
}
int main() {
n=read();
for(ll i=1;i<=n;++i) {
a[i].x=read();
a[i].d=read();
}
sort(a+1,a+1+n,[](const robot &a,const robot &b){return a.x<b.x;});
for(ll i=n;i>=1;i--) {
//我们二分法知道他最多跳到那里
ll tmp=i;
for(ll l=i,r=n;l<=r;) {
ll mid=(l+r)>>1;
if(a[i].x+a[i].d>a[mid].x) {
tmp=mid;
l=mid+1;
}else{
r=mid-1;
}
}
if(tmp==i) {
nxt[i]=i;
}else{
nxt[i]=ask(1,1,n,i+1,tmp);
}
chg(1,1,n,i,nxt[i]);
}
dp[n+1]=1;
for(ll i=n;i>=1;i--) {
dp[i]=dp[i+1]+dp[nxt[i]+1];
}
printf("%lld\n",dp[1]);
return 0;
}