[考试反思]1013csp-s模拟测试71:徘徊


分差好大。。。但是从排名上看也许还可以接受?
不算太炸

但是这个还是算了吧。。。
其实状态不是很好。
T1不会,打的搜索,想到一个剪枝但是感觉没什么用,所以没打。
考后打上,85了。。。打上另一个就90了。。。
T3已经想到正解思路了,但是不完善
T2想到正解,但是没有证明它是树形,于是没有打。。。
又说不完,晚上又要考,改善状态。
T1:毛一琛
又是meet in miiddle。又没想到。
其实也就是双向搜索,然后hash_map查状态即可。
打的lower_bound,多了一个log。勉强过了。
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>X[],Y[];
int n,x[],ans,y[],r;
void sch1(int p,int w,int st){
if(p-==n>>){if(w>=)X[st].push_back(w);return;}
sch1(p+,w-x[p],st|<<p-);sch1(p+,w,st);sch1(p+,w+x[p],st|<<p-);
}
void sch2(int p,int w,int st){
if(p==n+){if(w>=)Y[st].push_back(w);return;}
sch2(p+,w+x[p],st|<<p-r);sch2(p+,w,st);sch2(p+,w-x[p],st|<<p-r);
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&x[i]);r=(n>>)+;
sch1(,,);sch2(r,,);
for(int i=;i<<<(n>>);++i)sort(X[i].begin(),X[i].end());
for(int i=;i<<<n-(n>>);++i)sort(Y[i].begin(),Y[i].end());
for(int i=;i<<<(n>>);++i)for(int j=;j<<<n-(n>>);++j)
for(int v=;v<X[i].size();++v)
if(lower_bound(Y[j].begin(),Y[j].end(),X[i][v])!=Y[j].end())
if(*(lower_bound(Y[j].begin(),Y[j].end(),X[i][v]))==X[i][v])
y[i<<n-(n>>)|j]=;
for(int i=;i<<<n;++i)ans+=y[i];//,printf("%d\n",y[i]);
printf("%d\n",ans);
}
T2:毛二琛
首先这题puts("0")会爆零,所以所有情况都有解。
考虑每一个数移动的方向,那么其实就限制了q序列上某两个相差为1的值的相对位置。
这样的话就是SAO那道题简化到序列上了,dp[i][j]表示考虑到操作i,其相对位置是j,前缀和优化就完事了。
代码倒好说。想到就能写出来。
#include<cstdio>
#define mod 1000000007
inline int Mod(int p){return p>=mod?p-mod:p;}
int p[],np[],n,dir[],dp[][],sum[][];//dir=2先i后i-1
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&p[i]),p[i]++,np[p[i]]=i;
for(int i=;i<=n;++i)
if(np[i]>i){dir[i]=;for(int j=i+;j<p[i];++j)dir[j]=;}
else {dir[i]=;for(int j=i-;j>np[i];--j)dir[j]=;}
dp[][]=sum[][]=;
for(int i=;i<=n-;++i){
if(dir[i]==)for(int j=;j<=i;++j)dp[i][j]=Mod(mod+sum[i-][i-]-sum[i-][j-]);
else for(int j=;j<=i;++j)dp[i][j]=sum[i-][j-];
for(int j=;j<=i;++j)sum[i][j]=Mod(sum[i][j-]+dp[i][j]);
}printf("%d\n",sum[n-][n-]);
}
T3:毛三琛
二分答案,剪枝,及时跳出。
如果目前的x连目前最优答案都不到,continue。
#include<bits/stdc++.h>
using namespace std;
int n,k,p,a[],ans=;
int Mod(int x){return x>=p?x-p:x;}
int chk(int w,int xx){
int al=,f=;
for(int i=;i<=n&&al<=k;++i){int x=Mod(xx+a[i]);if(x>w)return ;if(f+x>w)al++,f=x;else f+=x;}
if(al<=k)return ;
return ;
}
int main(){
scanf("%d%d%d",&n,&p,&k);
for(int i=;i<=n;++i)scanf("%d",&a[i]);
for(int i=;i<p;++i){
if(!chk(ans,i))continue;
register int l=,r=ans;
while(l<r-)if(chk(l+r>>,i))r=l+r>>;else l=(l+r>>)+;
ans=min(ans,chk(l,i)?l:r);
}
printf("%d\n",ans);
}
[考试反思]1013csp-s模拟测试71:徘徊的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
- [考试反思]0816NOIP模拟测试23
210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...
- [考试反思]0801NOIP模拟测试11
8月开门红. 放假回来果然像是神志不清一样. 但还是要接受这个事实. 嗯,说好听点,并列rank#7. 说难听点,垃圾rank#18. 都不用粘人名就知道我是哪一个吧... 因为图片不能太长,所以就不 ...
随机推荐
- 【柠檬班】jmeter 不写代码,秒秒钟提取动态列表最后一个值
在用jmeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.如: 获取用户列表,用户信息是个列表,类似的接 ...
- 访问http接口时返回502 Bad Getway什么原因怎么解决
使用 httpclient 工具通过代理服务器请求第三方http 接口,多次返回 502 Bad Getway,少数返回正常. 502 Bad Getway是什么意思? 502 Bad Gateway ...
- Linux内存描述之内存页面page–Linux内存管理(四)
服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...
- 一份超级完整的PyCharm图解教程
微信搜索公众号:Python极客社区. 每天分享不一样的Python干货 PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm ...
- indexeddb:浏览器中的数据库
随着浏览器功能的不断加强,越来越多的网站开始考虑将大量的数据存储在客户端.这样的考虑是为了直接从本地获取数据,减少从服务器获取数据耗费的网络资源. 原有的浏览器数据存储方案都不适合存储大量数据.Coo ...
- std::to_string
头文件 #include <string> std::string to_string( int value ); std::string to_string( long value ); ...
- pytest7-多个fixtures执行顺序
举例: import pytest order = [] @pytest.fixture(scope='session') def s1(): order.append("s1") ...
- 02jmeter-函数助手使用
示例:__Random函数 1.打开函数助手,并按提示写入value 2.引用.复制出${__Random(1,99,gp)}放到需要引用的地方 3.请求成功后可通过debug sampler查看变量 ...
- OSI七层模型和五层TCP/IP协议
1.查公网ip的方法: windows,打开浏览器,访问百度,搜IP即可 linux:curl ifconfig.me 2.OSI七层模型 ==网络工程师:== 物理层 1层,通信介质的信号到数字信号 ...
- 利用SpringBoot+Logback手写一个简单的链路追踪
目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...