题面: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. Maven详解()-- 常用命令

    Maven常用命令: Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ 一,Maven常用命令: ...

  2. python爬虫_从零开始破解js加密(一)

    除了一些类似字体反爬之类的奇淫技巧,js加密应该是反爬相当常见的一部分了,这也是一个分水岭,我能解决基本js加密的才能算入阶. 最近正好遇到一个比较简单的js,跟大家分享一下迅雷网盘搜索_838888 ...

  3. springboot项目大量打印debug日志问题

    目前,java下应用最广泛的日志系统主要就是两个系列: log4j和slf4j+logback . 其中,slf4j只包含日志的接口,logback只包括日志的具体实现,两者加起来才是一个完整的日志系 ...

  4. Django开发学习BUG记录--RemovedInDjango19Warning:Model class apps.user.models.User doesn't declare an explicit app_label

    报错信息: /home/python/PycharmProjects/dailyfresh/apps/user/models.py:8: RemovedInDjango19Warning: Model ...

  5. Spring MVC @PathVariable注解(3)

    下面用代码来演示@PathVariable传参方式 1 @RequestMapping("/user/{id}") 2 public String test(@PathVariab ...

  6. 整理及优化CSS代码的7个原则

    作为网页设计师(前端工程师),你可能还记得曾经的那个网页大小建议:一个网页(包括HTML.CSS.Javacript.Flash和图片)尽量不要超过30KB的大小,随着互联网的日益庞大,网络带宽也在飞 ...

  7. 判断APP是否已安装

    NSString *str = [NSString stringWithFormat:@"%@://%@",[dic objectForKey:@"ios_url_sch ...

  8. mysql中重复数据只取条

    select * from table_a where id in (select min(id) from table_a group by a) )) SUBSTRING_INDEX(cids,' ...

  9. Erlang学习记录:运算符

    数学运算符 说明 详细 符号 加减乘 +-* 浮点数除 结果为浮点数 / 整数除 除数和被除数都必须是整数,结果为整数 div 整数取余 rem 逻辑运算符 说明 符号 详细 and 前后两个值都为真 ...

  10. scala中类的简单使用记录

    import scala.collection.mutable.ArrayBuffer /** * scala 中内部类的使用 */ class Classes { class Stu(name:St ...