题面: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. Jsoup 学习笔记

    这里写自定义目录标题 Jsoup 学习笔记 解析 HTML 的字符串解析 URL 解析 本地文件解析 解析数据 DOM 解析 使用选择器解析 选择器概述 选择器组合用法 过滤用法 修改数据 HTML ...

  2. HDFS API 操作实例(二) 目录操作

    1. 递归读取文件名 1.1 递归实现读取文件名(scala + listFiles) /** * 实现:listFiles方法 * 迭代列出文件夹下的文件,只能列出文件 * 通过fs的listFil ...

  3. Mybatis 使用Mapper接口的Sql动态代码方式进行CURD和分页查询

    1.Maven的pom.xml 2.配置文件 2.1.db.properties 2.2.mybatis.xml 2.3.log4j.xml 3.MybatisUtil工具类 4.Mapper映射文件 ...

  4. android的webView内部https/http混合以及自适应屏幕

    两种请求都有的情况下,会导致WebView加载不出来. //自适应屏幕 settings.setUseWideViewPort(true); settings.setLoadWithOverviewM ...

  5. 2018-10-8-Win10-使用-GHO-安装出现-UWP-软件打开闪退-应用商店无法安装软件

    title author date CreateTime categories Win10 使用 GHO 安装出现 UWP 软件打开闪退 应用商店无法安装软件 lindexi 2018-10-8 18 ...

  6. JAVA算法之简单排序

    冒泡排序: 在概念上是排序算法中最简单的,但是运行起来非常慢,冒泡排序遵循以下几个规则(假如我们现在要给一队打乱的足球队员排序): 比较两个队员 如果左边的队员比右边的高,则交换位置 向右移动一位,比 ...

  7. pipenv的使用

    首先,确保pip install pipenv已经安装 1.新建一个文件夹,并在地址栏输入cmd,回车. 2.输入pipenv install,等待虚拟环境搭建完毕. 3.输入pipenv shell ...

  8. for双重循环中的结构分离(语法结构问题)

    //增加搜索列表 function addSearchList(){ $.get("/mall/h5_get_search_list.html","",func ...

  9. MySQL 知识点随记

    1.存储过程中声明变量要在程序的最前面,也要在声明事务开始的前,不然会报错 2.Mysql 获取32位guid: REPLACE(UUID(),"-","") ...

  10. JLOI 2013 卡牌游戏 bzoj3191

    题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ...