A.小盆友的游戏

感觉题解解释的很牵强啊……还是打表找规律比较靠谱

对于每个人,它构造了一个期望函数$f(x)$,设它的跟班个数为$cnt[x]$,那么令$f(x)=2^{cnt[x]}-1$(??鬼知道为什么要等于这个)

然后再定义当前局面的期望函数为每个人期望函数之和。

然后你会发现每次猜拳后局面期望函数变化量都是1

那么期望步数其实就是终止局面期望函数值-初始局面期望函数值

$ans=2^{n-1}-1-\sum (2^{cnt[x]}-1)$

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll qpow(ll a,ll b)
{
ll res=1;
while(b)
{
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
int n,a[100005],cnt[100005];
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
cnt[a[i]]++;
}
ll ans=qpow(2,n-1)-1;ans=(ans+mod)%mod;
for(int i=1;i<=n;i++)
ans-=qpow(2,cnt[i])-1,ans=(ans+mod)%mod;
printf("%lld\n",ans);
return 0;
}

B.花

垃圾dp。考场上想麻烦了。kuku。

$dp[i][0/1]$表示前i个字符,已经/没有出现过Triple Kill的方案数

转移就行了……

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int T,n;
ll m,dp[100005][2];
void work()
{
scanf("%d%lld",&n,&m);
if(n<3){puts("0");return ;}
memset(dp,0,sizeof(dp));
dp[1][0]=m;dp[2][0]=m*m%mod;dp[3][0]=m*m%mod*m%mod;dp[3][0]=(dp[3][0]-m+mod)%mod;dp[3][1]=m;
for(int i=4;i<=n;i++)
{
(dp[i][0]+=dp[i-1][0]*(m-1)%mod)%=mod;
(dp[i][0]+=dp[i-2][0]*(m-1)%mod)%=mod;
(dp[i][1]+=dp[i-1][1]*(m-1)%mod)%=mod;
(dp[i][1]+=dp[i-2][1]*(m-1)%mod)%=mod;
(dp[i][1]+=dp[i-3][0]*(m-1)%mod)%=mod;
//cout<<i<<' '<<dp[i][0]<<' '<<dp[i][1]<<endl;
}
printf("%lld\n",dp[n][1]);
} int main()
{
freopen("flower.in","r",stdin);
freopen("flower.out","w",stdout);
scanf("%d",&T);
while(T--)work();
return 0;
}

C.表格

正解不会。闲的没事自主研发了个指针二维线段树的板子拿了个部分分。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int base=1001,M=2002,inf=0x3f3f3f3f;
int read()
{
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
int maxx=-inf,minx=inf,maxy=-inf,miny=inf,ans;
int n;
struct node
{
node *ls,*rs;
node *ys;
int v;
node()
{
ls=rs=NULL;
v=0;
}
/*void down()
{
if(this->ls!=NULL)this->ls->v=this->v;
if(this->rs!=NULL)this->rs->v=this->v;
}*/
};
node *root;
void judge(node *&k)
{
if(k==NULL)k=new node();
}
void upy(node *&k,int l,int r,int x,int y,int xx,int yy,int val)
{
if(y<=l&&yy>=r)
{
k->v=val;return ;
}
int mid=l+r>>1;
if(y<=mid)
{
judge(k->ls);
upy(k->ls,l,mid,x,y,xx,yy,val);
}
if(yy>mid)
{
judge(k->rs);
upy(k->rs,mid+1,r,x,y,xx,yy,val);
} } void upx(node *&k,int l,int r,int x,int y,int xx,int yy,int val)
{
if(x<=l&&xx>=r)
{
judge(k->ys);
upy(k->ys,1,M,x,y,xx,yy,val);
return ;
}
int mid=l+r>>1;
if(x<=mid)
{
judge(k->ls);
upx(k->ls,l,mid,x,y,xx,yy,val);
}
if(xx>mid)
{
judge(k->rs);
upx(k->rs,mid+1,r,x,y,xx,yy,val);
}
}
void asky(node *&k,int l,int r,int x,int y)
{
ans=max(ans,k->v);
if(l==r)return ;
int mid=l+r>>1;
if(y<=mid)
{
judge(k->ls);
asky(k->ls,l,mid,x,y);
}
else
{
judge(k->rs);
asky(k->rs,mid+1,r,x,y);
}
}
void askx(node *&k,int l,int r,int x,int y)
{
judge(k->ys);
asky(k->ys,1,M,x,y);
if(l==r)return ;
int mid=l+r>>1;
if(x<=mid)judge(k->ls),askx(k->ls,l,mid,x,y);
else judge(k->rs),askx(k->rs,mid+1,r,x,y);
}
int vis[100005];
#define F
int main()
{
#ifdef F
freopen("excel.in","r",stdin);
freopen("excel.out","w",stdout);
#endif
n=read();root=new node();
for(int q=1;q<=n;q++)
{
int x=read()+base+1,y=read()+base+1,xx=read()+base,yy=read()+base;
swap(x,y);swap(xx,yy);
minx=min(minx,x);maxx=max(maxx,xx);
miny=min(miny,y);maxy=max(maxy,yy);
upx(root,1,M,x,y,xx,yy,q);
}
int cnt=1;
for(int i=minx;i<=maxx;i++)
{
//puts(" ");
for(int j=miny;j<=maxy;j++)
{
ans=0;askx(root,1,M,i,j);
if(ans&&!vis[ans])vis[ans]=1,cnt++;
//cout<<ans<<' ';
}
} printf("%d\n",cnt);
return 0;
}

[CSP-S模拟测试97]题解的更多相关文章

  1. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

  2. [考试反思]1101csp-s模拟测试97:人品

    上来粘6个图皮一下.(以后粘排行榜是不是都应该粘两份啊...文件出入的确挺难受的) 话说最近RP为什么会这么高啊???我干什么好事了???不知道. 这次考试的题挺有水准的,但是我的分数挺没水准的. T ...

  3. CSP-S 模拟测试94题解

    T1 yuuustu: 可以对两边取对数,然后就转化为两个double的比较,时间复杂度$O(n)$ 然后我就用神奇0.4骗分水过 #include<bits/stdc++.h> usin ...

  4. CSP-S模拟测试 88 题解

    T1 queue: 考场写出dp柿子后觉得很斜率优化,然后因为理解错了题觉得斜率优化完全不可做,只打了暴力. 实际上他是可以乱序的,所以直接sort,正确性比较显然,贪心可证,然后就是个sb斜率优化d ...

  5. CSP-S 模拟测试92 题解

    话说我怎么觉得我没咕多长时间啊,怎么就又落了20多场题解啊 T1 array: 根据题意不难列出二元一次方程,于是可以用exgcd求解,然而还有一个限制条件就是$abs(x)+abs(y)$最小,这好 ...

  6. CSP-S 模拟测试57题解

    人生第一次A,B层一块考rank2,虽然说分差没几分,但还是值得纪念. 题解: T1 天空龙: 大神题,因为我从不写快读也没有写考场注释的习惯,所以不会做,全hzoi就kx会做,kx真大神级人物. T ...

  7. CSP-S 模拟测试 51 题解

    考试过程: 惯例先看一遍三道题,T1 一开始反应要求割点,但是这是有向图,肯定不能求割点,康了一下数据范围,有40%是树的,还不错,决定待会在打. 看T2 字符串题,完了我字符串最弱了,肯定只能打暴力 ...

  8. CSP-S 模拟测试 45 题解

    由于咕掉的题解太多了,所以只能趁改完不动题的时间,来补补坑qwq,还是太弱了. 考试过程: 到新机房的第一次考试,貌似海星? 第一题一开始就觉得是个贪心,但以为所有小怪兽都要打完,所以想复杂了,但后来 ...

  9. [CSP-S模拟测试96]题解

    以后不能再借没改完题的理由不写题解了…… A.求和 求$\sum \sum i+j-1$ 柿子就不化了吧……这年头pj都不考这么弱智的公式化简了…… 坑点1:模数不定,可能没有2的逆元,那么只要先把乘 ...

随机推荐

  1. 基于Quartz.net 的任务调度平台Weiz.TaskManager

    Weiz.TaskManager https://github.com/weizhong1988/Weiz.TaskManager 任务管理平台 系统简介 Quartz.net是一个开源的任务调度工具 ...

  2. Krypton Suite of .NET WinForms Controls

    The Krypton Suite of .NET WinForms controls are now freely available for use in personal or commeric ...

  3. 前端005/React生命周期

    ES6中React生命周期 一.React生命周期 React生命周期主要包括三个阶段:初始化阶段.运行中阶段和销毁阶段. 在React不同的生命周期里,会依次触发不同的钩子函数. 二.React的生 ...

  4. Java 操作pdf与excel

    java 操作pdf组件  itextpdf <dependency> <groupId>com.itextpdf</groupId> <artifactId ...

  5. [Web 前端] 020 css 定位之绑定定位

    绑定定位 少废话,上例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. mysql续集(查询部分)

    mysql查询部分,从基础的查询到关键字,where子句,group by, order by, limit ,having,子查询分为from子查询和where子查询,左连接和右连接,内连接的连表查 ...

  7. ARM汇编2

    一. 数据处理汇编指令 1.1. 数据传输指令 1.1.1.  mov(Move) 指令 示例:mov  r0, r0, LSL#3           ; r0 = r0* 8 mov  pc, r ...

  8. 偏序问题及CDQ分治详解

    CDQ用来解决分治时左半部分对右半部分造成影响的问题. CDQ分治的经典问题是三维偏序问题. 要想解决三维偏序问题,首先你要知道什么是偏序.(废话) 一维偏序: 给出直线上的n个点,问有多少对点满足x ...

  9. uve (mui/light7)写APP的使用心得(大坑);

    话说mui这个框架的UI确实挺好看的(个人觉得)所以项目使用了他,结果里面的坑太TM多,不得不说MUI做东西太不用心了,社区不活跃,提问都没人管!; mui第一个坑: 日期选择器默认值无效:使用代码跟 ...

  10. Django重点之url别名

    django重点之url别名[参数名必须是name,格式是name="XXX] 不论后台路径如何进行修改路径,前台访问的路径不变,永远是alias, 这样方便开发 前台根据 {{ url & ...