2016多校赛2 A 数学推公式 E 极角排序,组合数(待补) L dp+bitset优化
2016 Multi-University Training Contest 2
A - Acperience
题意:给出w[],求S((w[i]-aB[i])^2)的最小值(B[i]为1或-1)。
tags:一看到就搞了个三分上去,估计是精度问题,一直挖,23333。。
就是把这个公式推下去,最后化简为 ans=S(w[i]^2) - ((S(abs(w[i])))^2)/n 。
#include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a;i<=b;i++) #define per(i,b,a) for (int i=b;i>=a;i--) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f typedef long long ll; const int N = 100005;ll w[N], s1, s2, n; int main() {int T; scanf("%d", &T);while(T--){s1=s2=0;scanf("%lld", &n);rep(i,1,n) {scanf("%lld", &w[i]);s1+= w[i]*w[i], s2+= abs(w[i]); // 绝对值。。在这挖了几发 }s1=n*s1-s2*s2;printf("%lld/%lld\n", s1/__gcd(s1,n), n/__gcd(s1,n));}return 0; }
View Code
E - Eureka
题意: 给出 n个点,多个在同一条直线上的点可以构成一个集合,问有多少个集合。
tags:
I 水题
K 水题
L - La Vie en rose
题意:两个字符串A、B。 B可以通过交换相邻位置的字符(每次每个位置只能交换一下)生成其它多个字符串。问A的每个位置(a[i]到a[i+lenB-1])是否可以匹配B或由B生成的字符串。
tags: 好题 虽然题意有点迷,但确实好题,可以练练bitset压位。可以参考大佬博客
dp[i][j][k]表示A匹配到第 i个位置,B匹配到第 j个位置时的情况(k为0表示B第 j个位置不交换,为1表示第 j个位置和 j-1交换,为2表示和 j+1交换)。 然后dp转移:
dp[i][j][0] = (dp[i-1][j-1][0] or dp[i-1][j-1][1]) and (A[i]==B[j]) dp[i][j][1] = dp[i-1][j-1][2] and (A[i]==B[j-1]) dp[i][j][2] = (dp[i-1][j-1][0] or dp[i-1][j-1][1] ) and (A[i]==B[j+1])
直接写出循环就是:
for(int j=1; j<=lenB; ++j)for(int i=1; i<=lenA; ++i) {dp[i][j][k]= }
但这样O(N*M)肯定超时,这里就是关键,又一次体会到了二进制的神奇。把dp[][][]的第一位压入bitset,第二层for循环就可以利用bitset的位运算操作完成,实现常数优化,即O(N*M/w)卡过。 另外dp[][][]第二维因为每次只要用到上一次的数据,所以可以滚动数组优化内存。
#include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a;i<=b;i++) #define per(i,b,a) for (int i=b;i>=a;i--) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f typedef long long ll; const int N = 100005, M=5005;int la, lb; char A[N], B[N]; bitset<N> dp[2][3], bs[26]; int main() {int T; scanf("%d", &T);while(T--) {scanf("%d %d %s %s", &la, &lb, A+1, B+1);rep(i,0,25) bs[i].reset();rep(i,1,la) bs[A[i]-'a'][i]=1;int now=0, las;dp[0][0]=bs[B[1]-'a']; if(lb>1) dp[0][2]=bs[B[2]-'a'];rep(j,2,lb) {las=now, now^=1;dp[now][0] = ((dp[las][0] | dp[las][1])<<1) & bs[B[j]-'a']; // 因为求出的是第i-1位的,<<1转到第i位。&bs[]是检测A[]==B[]dp[now][1] = (dp[las][2]<<1) & bs[B[j-1]-'a'];if(j<lb) dp[now][2] = ((dp[las][0] | dp[las][1])<<1) & bs[B[j+1]-'a'];}rep(i,1,la) {int ii=i+lb-1;if(ii<=la && (dp[now][0][ii] || dp[now][1][ii])) putchar('1');else putchar('0');} puts("");}return 0; }
View Code
转载于:https://www.cnblogs.com/sbfhy/p/6740006.html
2016多校赛2 A 数学推公式 E 极角排序,组合数(待补) L dp+bitset优化相关推荐
- 牛客小白赛60(F.被抓住的小竹)61(E.排队)(数学+推公式)
文章目录 前言 逆序对是典型题,常用统计数组内逆序对用树状数组.但是求排列中的总逆序对数量需要利用组合数学推导公式. F.被抓住的小竹 E.排队 总结 前言 逆序对是典型题,常用统计数组内逆序对用树状 ...
- 蓝桥杯省赛 冶炼金属 二分 推公式
⭐ 冶炼金属 输入样例 3 75 3 53 2 59 2 输出样例 20 25 ⭐ 二分解法 import java.util.Scanner;public class Main {public st ...
- 2016 多校赛3 A 水 B 期望,规律 C 各种博弈 J 物理题,积分 K 暴力,水
2016 Multi-University Training Contest 3 A - Sqrt Bo 题意:给一个数 n,问n要多少次平方后化为1,如果超过5次输出"TAT". ...
- 牛客多校6 - Binary Vector(组合数学+推公式)
题目链接:点击查看 题目大意:给出一个 n * n 的 01 矩阵,求满秩的概率 题目分析:首先公式是: 稍微解释一下吧,将 n * n 的矩阵视为 n 个长度为 n 的向量,对于每一个长度为 n 的 ...
- Forever小浮的数学推公式专题题解
B.三足鼎立 题目链接 https://vjudge.net/contest/252255#problem/B 题意 已知s,u,v满足 arctan(1/s) = arctan(1/u)+arcta ...
- CodeForces - 830C Bamboo Partition(数学+推公式)
题目链接:点击查看 题目大意:给出 nnn 个位置可以种竹子,每个位置的竹子的高度需要到达 aia_iai,所有竹子每天都会长高一个单位高度,同样每个竹子可以在任意位置砍一次,砍过之后竹子将不再长高 ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列
埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列 链接:https://www.nowcoder.com/acm/contest/91/L 来源:牛客网 题目描述 给一个数组 ...
- 华为杯数学建模优秀论文_数学建模经典例题(2016年国赛B题与优秀论文)
数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 相关推荐 数学建模经典例题(2000年国赛B题与解题思路) 数学建模经典例题(2001年国赛A题与优秀论文) 数学建模经典例题(2001 ...
- 记第一次(失败的)数学建模校赛,脚踏实地
记录第一次(失败的)数学建模校赛,脚踏实地.现在数学建模还没结束,但我已经可以开始总结自己的失败的教训了,具体的过程不想讲了,失败的教训有:首先,选题不利,在选择自己的题目上,过于快速,只是粗浅地看了 ...
最新文章
- flash动画制作成品_flash动画制作
- python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...
- mysql 检查点_my05_mysql检查点简述
- vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...
- Python 基础起步(一)写在开篇的话,写给同为小白的你
- 机械硬盘旋转时间_高端PC真的没有机械盘了么?
- SDL2源代码分析1:初始化(SDL_Init())
- 论文笔记_S2D.16-2016-3DV-利用全卷积残差网络进行深度预测
- maven 打包报错,target无法删除Failed to clean project: Failed to delete D:\*\target
- iChart--组件定制
- 难道真的是RPWT-LFS日记1
- 一分钟快速把一篇论文后面的参考文献全部下载下来
- 唱吧android逆向加密算法笔记 此文章已做脱敏处理不会对原厂家app安全构成威胁,仅供学习
- 使用 Python 全栈打造淘宝客微信机器人
- 洛谷3238 HNOI2014 道路阻塞 最短路 线段树(无代码)
- ITU-R BT.656和ITU-R BT.601
- 博学谷 - CSS笔记23 - 常见布局技巧
- 【Kafka】kafka 获取消费组 详情 Exiting due to KeeperErrorCode = NoNode for /consumers/group
- WIN7下使用超级终端
- 树莓派3实时监控系统
热门文章
- ASP.NET获取IP的6种方法
- cron 工具 每分钟_计划任务 cron和crontab
- 我所理解的卡尔曼滤波——公式推导与应用
- mysql中change用法,mysql 中alter的用法以及一些步骤
- html中有csstext方法吗,style对象的cssText方法有哪些使用方法
- django 设置媒体url_Django设置网站地图sitemap
- 13. 微型计算机中,传送cpu发出的读/写指令的总线是,我的微机原理题库
- 显微镜下的大明内容_《显微镜下的大明》epub、mobi、azw3
- c语言程序中变量先引用声明,C语言如何跨文件调用函数定义中声明的变量
- 大学计算机一级考试报名费,华北电力大学计算机等级考试报名