咻咻咻

令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能惨惨的迎接剩下的16天(吧)

下面是题解的代码(填坑),神奇的是这四道题都需要DP。参加SXOI的大佬真是tql,此处手动@ljt12138@__stdcall

T1找性质,popcnt为1的加上popcnt为0的就是答案(然而当时没想到只打了暴力)

#include<bits/stdc++.h>
typedef long long ll;
ll a, b, c, d, n, x;
int cnt[65536], sz[2];
int main(){
scanf("%d%lld%lld%lld%lld%lld", &n, &a, &b, &c, &d, &x);
for(int i = 0; i < 65536; i++) cnt[i] = cnt[i >> 1]^(i&1);
for(int i = 1; i <= n; i++){
x = (a*x%d*x%d+b*x%d+c)%d;
sz[cnt[x & 65535] ^ cnt[x >> 16]]++;
}
printf("%lld\n", (long long)sz[0]*sz[1]);
return 0;
}

T2枚举公差和塔即可

#include<bits/stdc++.h>
const int M = 998244353;
inline int chk(int x){return x >= M? x-M : x;}
int n, max, ans=1, h[1000001];
int d[1001][40001];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", &h[i]), max = std::max(max, h[i]);
for(int i = 2; i <= n; i++){
for(int j = 1; j < i; j++){
int num = d[j][h[i] - h[j] + 20001]+1;
d[i][h[i]-h[j]+20001] += num;
if(d[i][h[i]-h[j]+20001]>=M) d[i][h[i]-h[j]+20001] -= M;
}
for(int j = -max+20000; j <= max+20000; j++) ans = chk(ans+d[i][j]);
ans = chk(ans+1);
}
printf("%d\n", ans);
return 0;
}

T3是一个DAG上的最长路问题,看懂题解后发现真**简单

#include<bits/stdc++.h>
const int N = 2e6+4;
int n, k, s, f[N]; std::vector<int> ans[21];int a[N];
bool vis[N];
int main(){
scanf("%d%d", &n, &k); s = (1 << k) -1;
for(int i = 1; i <= n; i++) scanf("%d", &a[i]), vis[a[i]] = true;
for(int i = s; i>=0; i--){
if(vis[i]) f[i]++;
for(int j = 1; j < s; j <<= 1)
if(i&j) f[i^j] = std::max(f[i^j], f[i]);
}
printf("1\n%d\n", f[0]);
for(int i = s; i>=0; i--) if(vis[i]) ans[f[i]].push_back(i);
for(int i = 1; i <= f[0]; i++){
int size = ans[i].size(); printf("%d ", size);
for(int j = 0; j < size; j++) printf("%d ", ans[i][j]);
puts("");
}
return 0;
}

T4是一道自始至终都没看懂的数论题,只好先拿租酥雨大佬的代码填填坑

#include<bits/stdc++.h>
const int mod = 1000000007;using std::map; using std::pair;
inline void inc(int &x,int y){x+=y;x>=mod?x-=mod:x;}
inline void dec(int &x,int y){x-=y;x<0?x+=mod:x;}
int fastpow(int a,int b){
int res=1;
while (b) {if (b&1) res=1ll*res*a%mod;a=1ll*a*a%mod;b>>=1;}
return res;
}
int n,P,R,B,sqr,S,inv[5005],C[505][505],ans;
struct poly{
int a[505];
poly(){memset(a,0,sizeof(a));}
poly operator * (poly b){
poly c;
for (int i=0;i<=n;++i)
for (int j=0;j<=i;++j)
c.a[i]=(c.a[i]+1ll*a[j]*b.a[i-j]%mod*C[i][j])%mod;
return c;
}
}dp[3][2][80],zero;
map<pair<pair<int,int>,int>,int>M;
int calc(int u,int v,int w){
return (dp[0][0][u%sqr]*dp[0][1][u/sqr]*dp[1][0][v%sqr]*dp[1][1][v/sqr]*dp[2][0][w%sqr]*dp[2][1][w/sqr]*zero).a[n];
}
int main(){
scanf("%d%d%d", &n, &P, &R);
B=R/P;while (sqr*sqr<P) ++sqr;
inv[1]=1;for (int i=2;i<P;++i) inv[i]=inv[P%i]*(P-P/i)%P;
for (int i=C[0][0]=1;i<=n;++i)
for (int j=C[i][0]=1;j<=i;++j)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
for (int i=0;i<3;++i){
dp[i][0][0].a[0]=dp[i][1][0].a[0]=dp[i][0][1].a[0]=1;
for (int j=1;j<=n;++j) dp[i][0][1].a[j]=(fastpow(B+(i>0),j)+fastpow(B+(i>1),j))%mod;
for (int j=2;j<=sqr;++j) dp[i][0][j]=dp[i][0][j-1]*dp[i][0][1];
for (int j=1;j<=sqr;++j) dp[i][1][j]=dp[i][1][j-1]*dp[i][0][sqr];
}
for (int i=0;i<=n;++i) zero.a[i]=fastpow(B,i);
S=fastpow(R,n);inc(ans,S);dec(ans,fastpow(R-B,n));
for (int i=1;i<P;++i){ int u=0,v=0,w=0;
for (int j=1;j<P;++j){
int x=inv[j]*i%P;
if (x<j){ if (j<=R-B*P) ++w; else if (x<=R-B*P) ++v; else ++u;}
}
pair<pair<int,int>,int>pr=std::make_pair(std::make_pair(u,v),w);
if (M.find(pr)==M.end()) M[pr]=calc(u,v,w);
inc(ans,S);dec(ans,M[pr]);
}
printf("%d\n",ans);
return 0;
}

总之,这是一场体验极差的比赛。甚至有可能是NOIp的前奏

洛谷10月月赛II题解的更多相关文章

  1. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  2. 洛谷 4933 洛谷10月月赛II T2 大师

    [题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...

  3. 洛谷 4932 洛谷10月月赛II T1 浏览器

    [题解] x xor y的结果在二进制下有奇数个1,等价于x与y在二进制下的1的个数之和为奇数,因为x xor y减少的1的个数一定是偶数(两个数这一位都为1,xor的结果为0,减少了2个1) 那么答 ...

  4. 洛谷10月月赛II

    #A: P4924 [1007]魔法少女小Scarlet 这道题考了矩阵旋转 其实很考验推公式的能力和代码能力 这里有个小技巧 可以设(x, y)为原点,然后去推公式,然后实际操作中横坐标加上x,纵坐 ...

  5. 【LGR-061】洛谷10月月赛 II & X Round 4 Div.1&Div 2

    X Round的题目质量还是一如既往的高 然而每次周末我都要写作业没法用心打233主要是被陈指导放了鸽子 占坑代填(最近坑开的有点多)

  6. [LGR-054]洛谷10月月赛II

    浏览器 结论popcnt(x^y)和popcnt(x)+popcnt(y)的奇偶性相同. 然后就是popcnt为奇数的乘为偶数的.预处理一下\(2^{16}\)次方以内的popcnt,直接\(O(1) ...

  7. 【LGR-070】洛谷 3 月月赛-官方题解

    本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!

  8. 洛谷10月月赛R2·浴谷八连测R3题解

    早上打一半就回家了... T1傻逼题不说了...而且我的写法比题解要傻逼很多T T T2可以发现,我们强制最大值所在的块是以左上为边界的倒三角,然后旋转4次就可以遍历所有的情况.所以二分极差,把最大值 ...

  9. 【LGR-060】洛谷10月月赛 I div.1&div.2

    Preface 一边打一边写作文打的像shit,T2失智严重特判错了233 Orz Div1 Rank2的foreverlastnig聚聚,顺便说一句显然Luogu的比赛质量比以往显著提高了啊 以下题 ...

随机推荐

  1. python常见问题汇总

    1.python使用selenium中的时间等待 a.强制等待 time.sleep() b.隐式等待: 如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素. 默 ...

  2. MySQL【日期和时间处理函数】的使用方法

    名称 调用示例 示例结果 描述 NOW NOW() 2018-09-19 09:24:10 返回当前日期和时间 CURDATE CURDATE() 2018-09-19 返回当前日期 CURTIME ...

  3. 第4次作业 -- 基于Jenkins的持续集成

    Jenkins 配置使用心得 先在 https://jenkins.io/download/ 下载Jenkins 下载之后安装,在指定的地方找到了初始密码,安装了一些插件之后,Jenkins就可以使用 ...

  4. LeetCode 98 验证二叉搜索树

    题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...

  5. bit、byte、与字符

    bit bit是计算机中最小的传输单元 是计算机晶体管的一种状态(通电与断电).就是0与1,真与假. 示例: 2bit : 10; 4bit : 1111; 8bit : 1111 1111; byt ...

  6. Problem 9: Special Pythagorean triplet

    flag = 0 for a in range(1,1000): for b in range(a+1,1000): if a*a + b*b == (1000-a-b)**2: print(a,b) ...

  7. jsp视频如何播放

    网站开发小白们对如何插入视频有较大的困扰,一段时间不知道从何下手,想在数据库里面直接导入,但没能成功,后又尝试直接在myeclipse里面直接放入视频. 对于不同的播放器,视频的格式也有要求,建议使用 ...

  8. 利用Django实现webUI展示

    1.说明 最近老大想要做一个webUI界面,为了展示我们数据中心工作内容,需要把各自的工作内容用webUI展示出来.目前我负责的做公司名称归一化的问题. 2.Django实现web 具体实现是完全按照 ...

  9. 简单网络管理协议(SNMP)

    SNMP是TCP/IP网络中应用最为广泛的网络管理协议,工作在TCP/IP参考模型的应用层,是一种面向无连接的协议 功能:SNMP的功能是使网络设备之间能方便的交换管理信息,从而使网络管理员了解网络运 ...

  10. Mysql慢查询-Mysql慢查询详细教程

    一.简介开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能.二.参数说明slow_query_log 慢查询开启状态slow_quer ...