题面:https://www.cnblogs.com/Juve/articles/11678524.html

骆驼:构造题,留坑

根据5×5的矩形构造成大矩形

毛一琛:

mid in the middle思想,先dfs一半,然后dfs后一半

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<unordered_map>
#include<set>
#define int long long
#define re register
using namespace std;
const int MAXN=;
int n,m[MAXN],ans=,tot=;
unordered_map<int,int>mp;
set<int>s[<<];
bool vis[<<];
void DFS(re int now,re int num,re int st){
if(now>n){
if(mp.find(num)==mp.end()) return ;
int t=mp[num];
for(set<int>::iterator it=s[t].begin();it!=s[t].end();++it){
if(vis[(*it)|st]==) ++ans;
vis[(*it)|st]=;
}
return ;
}
DFS(now+,num,st);
DFS(now+,num+m[now],st|(<<(now-)));
DFS(now+,num-m[now],st|(<<(now-)));
}
void dfs(re int now,re int num,re int st){
if(now>n/){
int t;
if(mp.find(num)==mp.end()) t=mp[num]=++tot;
else t=mp[num];
s[t].insert(st);
return ;
}
dfs(now+,num,st);
dfs(now+,num+m[now],st|(<<(now-)));
dfs(now+,num-m[now],st|(<<(now-)));
}
signed main(){
scanf("%lld",&n);
for(re int i=;i<=n;++i) scanf("%lld",&m[i]);
vis[]=;
dfs(,,);DFS(n/+,,);
printf("%lld\n",ans);
return ;
}

毛二琛:dp,不会

毛三琛:

二分思路考场上想到了,但是没有想到优化骗分

把x随机排个序,二分前先check一下是否比当先的ans优,不优就不二分

再加个clock

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define re register
using namespace std;
const int MAXN=1e4+;
int n,k,p,a[MAXN],res,l=0x3f3f3f3f,r=,ans=,x[MAXN],b[MAXN];
inline bool check(re int lim){
re int tot=,sum=;
for(re int i=;i<=n;++i){
if(b[i]>lim) return ;
if(sum+b[i]>lim){
++tot;
sum=b[i];
if(tot>=k) return ;
}else sum+=b[i];
}
return ;
}
signed main(){
re double ck=clock();
scanf("%lld%lld%lld",&n,&p,&k);
for(re int i=;i<=n;++i){
scanf("%lld",&a[i]);
r+=a[i],l=min(l,a[i]);
}
for(re int i=;i<=p;++i) x[i]=i-;
srand(time());
random_shuffle(x+,x+p+);
ans=r;
for(re int i=;i<=p;++i){
if(clock()-ck>) break;
l=,r=ans;
for(re int j=;j<=n;++j){
b[j]=(a[j]+x[i])%p;
l=max(l,b[j]);
}
if(!check(r)) continue;
while(l<r){
re int mid=(l+r)>>;
if(check(mid)) r=mid;
else l=mid+;
}
ans=min(ans,l);
}
printf("%lld\n",ans);
return ;
}

简单的序列:

推式子,dp也可以

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=1e5+,mod=1e9+;
int n,m,tot=,ans=,cnt=;
char s[MAXN];
int max(int a,int b){
return a>b?a:b;
}
int q_pow(int a,int b,int p){
int res=;
while(b){
if(b&) res=res*a%p;
a=a*a%p;
b>>=;
}
return res;
}
int fac(int N){
int res=;
for(int i=;i<=N;++i) res=res*i%mod;
return res%mod;
}
int C(int n,int m){
if(m>n) return ;
if(m==n) return ;
return fac(n)*q_pow(fac(m)%mod,mod-,mod)%mod*q_pow(fac(n-m)%mod,mod-,mod)%mod;
}
int sta[MAXN],top=;
signed main(){
scanf("%lld%lld%s",&n,&m,s+);
for(int i=;i<=m;++i){
if(s[i]=='(') sta[++top]=;
else if(top) ++cnt,--top;
}
if(n&){
puts("");
return ;
}
ans=C(n-m+,n/-m+cnt);
printf("%lld\n",ans);
return ;
}

简单的期望

dp[i][j][k][0/1]表示操作了i次,最后8位是j,右移8位后最后有连续k位是0/1。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define re register
using namespace std;
const int MAXN=;
int x,n,pre[];
double p,ans,f[MAXN][(<<)+][][];
signed main(){
scanf("%lld%lld%lf",&x,&n,&p);
for(int i=;i<=(<<);++i) pre[i*]=pre[i]+;
int d=x&,b=x&,c=;
x>>=;p/=100.0;
while(x&&(x&)==d){
x>>=;
++c;
}
f[][b][c][d]=1.0;
for(int i=;i<=n;++i){
for(int j=;j<(<<);++j){
for(int k=;k<=;++k){
if(j==((<<)-)){
f[i][][k][]+=f[i-][j][k][]*(1.0-p);
f[i][][][]+=f[i-][j][k][]*(1.0-p);
}else{
f[i][j+][k][]+=f[i-][j][k][]*(1.0-p);
f[i][j+][k][]+=f[i-][j][k][]*(1.0-p);
}
if(j>=(<<)){
int b=(j<<)&((<<)-);
int tmp=((j<<)&(<<))>>;
if(tmp!=){
f[i][b][k+][]+=f[i-][j][k][]*p;
f[i][b][][tmp]+=f[i-][j][k][]*p;
}else{
f[i][b][][tmp]+=f[i-][j][k][]*p;
f[i][b][k+][]+=f[i-][j][k][]*p;
}
}else{
f[i][j<<][][]+=f[i-][j][k][]*p;
f[i][j<<][k+][]+=f[i-][j][k][]*p;
}
}
}
}
for(int j=;j<=(<<);j++){
for(int k=;k<=;k++)
ans+=pre[j]*(f[n][j][k][]+f[n][j][k][]);
}
for(int k=;k<=;k++)
ans+=((f[n][][k][]+f[n][][k][])*)+f[n][][k][]*k;
printf("%0.6lf\n",ans);
return ;
}

csps模拟测试707172部分题解myc的更多相关文章

  1. [CSP-S模拟测试50]反思+题解

    ??大部分人都觉得T3是道不可做题去刚T1T2了,于是我就侥幸苟到了前面? 这场考试比较成功的就是快速水掉了T1T2的部分分,1h拿到88分起码为之后硬肝T3上了保险(赛后发现就算T3爆零也能rank ...

  2. [CSP-S模拟测试48]反思+题解

    状态很垃圾的一场考试.感觉“这么多分就够了”的心态很是在给自己拖后腿. 打开题面,第一页赫然写着:$Claris' Contest$. 吓得我差点手一抖关掉.不过后来想想似乎强到变态的人出的题都不是很 ...

  3. [CSP-S模拟测试47]反思+题解

    打开题面,T3似乎被换过了.(那我就更有理由直接弃掉了) T1是我最害怕的乱搞题,赶紧扔了看T2.发现是个sb板子?雨天的尾巴弱化版? 然而线段树合并早忘干净了(最近几道可以线段树合并的题都是用别的方 ...

  4. csps模拟测试7576一句话题解

    题面:https://www.cnblogs.com/Juve/articles/11694454.html 75考了数学,化学和物理... T1: 假设有一个A和B,那么对于每一个j!=i,都有$\ ...

  5. csp-s模拟测试97

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

  6. csp-s模拟测试87

    csp-s模拟测试87 考场状态还可以$T1$我当时以为我秒切,$T2$确认自己思路不对后毅然决然码上,$T3$暴力挂了太可惜了. 03:01:28 03:16:07 03:11:38 140 03: ...

  7. csp-s模拟测试80(b)

    csp-s模拟测试80(b) 水题没什么可写的. $T1SB$规律题正解调了仨小时就过了. $T2SBDp$题颓完题解就秒了. $T3SB$数据结构考场想到正解就弃了,考后太懒一半正解一发随机化就A了 ...

  8. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  9. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

随机推荐

  1. CocoaPods更新2018年11月06日16:06:48

    https://gems.ruby-china.org点进去就知道了…… CocoaPods命令 更新 sudo gem install -n /usr/local/bin cocoapods --p ...

  2. day 88 DjangoRestFramework学习二之序列化组件、视图组件

    DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组件 ...

  3. mybatis 3 批量插入返回主键 Parameter 'id' not found

    @Insert("<script>INSERT INTO scp_activity_gift (activity_id,type,gift_id,status,limit_num ...

  4. Vue的项目搭建及请求生命周期

    目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...

  5. 2018 年 -- 15 个有意思的 JavaScript 和 CSS 库

    在Tutorialzine上你可以了解最新最酷的Web发展趋势.这就是为什么每个月都会发布一些偶然发现并认为值得你关注的最佳资源的缘由. Direction Reveal (方向展示) 该插件检测光标 ...

  6. D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)

    定量比例尺 : 数学上有函数的概念,不是编程中所说的函数,如线性函数.指数函数.对数函数等,而指的是一个量随着另一个量的变化而变化.例如有一下线性函数 : y=2x+1该函数在二维坐标系中绘制出来的图 ...

  7. Python全栈开发:django网络框架(二)

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  8. duilib教程之duilib入门简明教程8.完整的自绘标题栏

    看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~    看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~      duilib实现以 ...

  9. python定时任务模块APScheduler

    一.简单任务 定义一个函数,然后定义一个scheduler类型,添加一个job,然后执行,就可以了 5秒整倍数,就执行这个函数 # coding:utf-8 from apscheduler.sche ...

  10. vue-router 基本操作

    安装 vue-router 在命令行中进入 vue 的项目目录里,运行命令 npm install vue-router --save 来进行安装   npm install vue-router - ...