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. PHP 实现并发-进程控制 PCNTL

    参考 基于PCNTL的PHP并发编程 PCNTL 是 PHP 中的一组进程控制函数,可以用来 fork(创建)进程,传输控制信号等. 在PHP中,进程控制支持默认关闭.编译时通过 --enable-p ...

  2. java RMI 远程调用

    1.背景 在学习代理模式的过程中接触到了远程调用,jdk有自己的RMI实现,所以这边自己实现了RMI远程调用,并记录下心得. 感受最深的是RMI和现在的微服务有点相似,都是通过"注册中心&q ...

  3. 剑指offer--day09

    1.1 题目:栈的压入.弹出序列:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列 ...

  4. Vue2.0---将页面中表格数据导出excel

    这不是教程,是随笔. 项目中将后台返回的数据v-for到表格中,然后需要将这个表格导出为EXCEL 只说怎么做. 一.需要安装三个依赖: npm install -S file-saver xlsx ...

  5. Spring Boot系列(三) Spring Boot 之 JDBC

    数据源 类型 javax.sql.DataSource javax.sql.XADataSource org.springframework.jdbc.datasource.embedded,Enbe ...

  6. postman小白教程

    转载:之前看到的保存了下来,没有找到转载地址,所以如果侵权的话联系我加下转载地址,感觉这篇文章写的很好,详细

  7. Bootstrap selectpicker 强制向下

    selectpicker的方向是自适应的,但是有些界面,我们需要强制向下,可以使用属性data-dropup-auto data-dropup-auto="false" 官网上的o ...

  8. 对第一个HelloWorld程序的总结:

    /* 注释的作用 :提高了代码的阅读性:调试程序的重要方法 对第一个程序的总结: 创建:创建一个以.java结尾的文件叫做源文件 编译:(javac 源文件名.java) 会生成一个或多个字节码(.c ...

  9. 打开虚拟机提示 无法获得vmci 驱动程序的版本:句柄无效

    我从另一台电脑复制过来虚拟机,提示如题. 找到  我的虚拟机的  *.vmx文件(如NeoKylin.vmx),其中有 vmci0.present = "TRUE",将TRUE改为 ...

  10. POJ 1383题解(树的直径)(BFS)

    题面 Labyrinth Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 4997 Accepted: 1861 Descript ...