没有爆零,足矣。

发现绍兴一中机房的一个特点:键盘打得贼响!!

T1 ctrl

啃臭键在哪里

(中文名我都不好意思大打)

第一遍测T1一分都没得啊!

这跟题目描述自相矛盾有关,导致我只是轻微考虑了一下 \(a[i]\) 为负的情况。

但是没有考虑的是 \(p[i]\) 竟然也可以为零

仁者见仁,智者见智吧

一天以后的现在晚上8:00,终于把一二问的正解打出来了。主要是昨天没法测,今天lemon又频频炸掉。还好在super OJ上AK了,回来把题解补上。

T1看了题解后打对了,解题思路很巧妙,与我之前分别算法不同。正解是相对于一种状态(冰之格),把翻:转每一个各自的贡献都放在一个新数组中,情况一共分为四类:

  1. 翻同种状态(翻冰之格)

    1. $a[i]\geq0 $ 不选,反转后贡献 \(-p[i]\)
    2. \(a[i]\leq0\) 初始选,反转后无法选择,贡献为 \(a[i]-p[i]\)
  2. 翻不同状态(翻火之格)
    1. \(a[i]\geq0\) 翻转后依然不选(重点,当时没搞懂),贡献为 \(-p[i]\)
    2. \(a[i]\leq0\) 翻转后选,贡献 \(a[i]-p[i]\)

      对于当前情况的贡献数组sort一下,去前m个整数即可,是不是很妙!!

      这是AC代码:
#include<bits/stdc++.h>
using namespace std;
#define N 800000
int n,m,p[N],a[N],b[N],fa[N],fb[N];
long long suma=0,sumb=0;
int main(){
freopen("ctrl.in","r",stdin);
freopen("ctrl.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&p[i]);
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
if(b[i]==1&&a[i]>=0) suma+=a[i];
if(b[i]==0&&a[i]>=0) sumb+=a[i];
}
for(int i=1;i<=n;i++){
if(b[i]==1){
if(a[i]<0) fa[i]=-p[i];
else fa[i]=-a[i]-p[i];
}
else{
if(a[i]<0) fa[i]=-p[i];
else fa[i]=a[i]-p[i];
}
if(b[i]==0){
if(a[i]<0) fb[i]=-p[i];
else fb[i]=-a[i]-p[i];
}
else{
if(a[i]<0) fb[i]=-p[i];
else fb[i]=a[i]-p[i];
}
}
sort(fa+1,fa+1+n);
sort(fb+1,fb+1+n);
int ma=m,mb=m;
for(int i=n;i>=1;i--){
if(fa[i]>0&&ma>0) suma+=fa[i],ma--;
if(fb[i]>0&&mb>0) sumb+=fb[i],mb--;
}
printf("%lld",max(suma,sumb));
return 0;
}

T2 genshin

原神,启动!

这道题刚刚才调对,思路就是疯狂分类讨论,我的答题思路没错,但因为if过多,加上多重样例,被卡掉了。

简单说一下思路,以黑白相邻的填充方法填充整个区间,发现角落里的贡献是2,边上贡献是3,其余贡献是4。发现用这些数可以任意组成 \(1\)~\(2*n*(n-1)\) 中除了 \(1\) ,和 \(2*n*(n-1)-1\) 外,其他均可用2,3,4组和而成。中间还要注意,我是以4位基数,而四的个数只足够完全覆盖一般,也就是 \(n*n(n-1)\),可以发现剩下一般与前一半是对称的。所以这道题就做出来了。判断输出方法可能有待改进。

以下是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n4,n2,n3,sum,n,m,mm;
int check(){
int m4=0,m2=0,m3=0;
mm=m;
int f=0;
if(m>n*(n-1)){
mm=(2*n*(n-1)-m);
f=1;
}
if(mm%2==1){
m3=1;
mm-=3;
}
m4=min(n4,mm/4);
m2=(mm-m4*4)/2;
// cout<<" "<<m3<<" "<<n3;
if(f){
n4-=m4;n3-=m3;n2-=m2;
}
else{
n4=m4;n3=m3;n2=m2;
}
return 1;
}
int main(){
freopen("genshin.in","r",stdin);
freopen("genshin.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n==1||m==1||m>2*n*(n-1)||m==2*n*(n-1)-1){
printf("Impossible\n");
continue;
}
if(m<=n){
printf("Possible\n");
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==1&&j<=m-1) printf("1");
else printf("0");
}
printf("\n");
}
continue;
}
int halfn=(n*n+1)/2;
if(n%2==0){
n2=2;n3=(n/2-1)*4;n4=halfn-n3-n2;
}
else {
n2=4;n3=((n+1)/2-2)*4;n4=halfn-n2-n3;
}
// printf("n:%d,n2:%d,n3:%d,n4:%d\n",n,n2,n3,n4);
if(check()){
printf("Possible\n");
int flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
flag=flag^1;
if(i==1&&j==1&&n2>0){ printf("1"),--n2;continue;}
if(i==1&&j==n&&n2>1){ printf("1"),--n2;continue;}
if(i==n&&j==1&&n2>1){ printf("1"),--n2;continue;}
if(i==n&&j==n&&n2>0){ printf("1"),--n2;continue;}
if(flag==1&&i==1&&j!=1&&j!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&j==1&&i!=1&&i!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&i==n&&j!=1&&j!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&j==n&&i!=1&&i!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&i!=1&&j!=1&&i!=n&&j!=n&&n4>0){ printf("1"),--n4;continue;}
printf("0");
}
printf("\n");
if(n%2==0) flag=flag^1;
}
}
}
return 0;
}

备:这道题改出来确实不容易,完全坚定自己思路肝出来的一道题,祭。

T3 Ity

雨田天宇

这道题解决方法偏数学数论,代码没有打出来。但是有思路。

考场暴力有十分,非常朴素,暴力枚举每一种a,排完序后求贡献,时间复杂度 \(O(!n*nlogn*n)\) 很明显,这个暴力过于朴素。

对绝对值进行转化 \(\sum^n_{i=1}\sum^m_{j=1}(a_i \leq j)\oplus(a_{n-i+1} \leq j)\)

交换一下 \(\sum^m_{j=1}\sum^n_{i=1}(a_i \leq j)\oplus(a_{n-i+1} \leq j)\)

枚举 i ,枚举 j,计算贡献。

T4 Plan

不会,当时题都没看,溜了,溜了~

SXYZ-6.26模拟赛的更多相关文章

  1. 6.26模拟赛(1)总结(T1:信息传递;T2:传染病控制;T3:排列;T4:最大数)

    16:33:56 2020-06-26 当然可以先看一下成绩: 非常显然的成绩不能算有多好,当然其实这也可能是假期水课的报应  (额) 但是比我集训前想象的要好一点(集训时想象的是排名前30就可以,嗯 ...

  2. 2019.7.26 NOIP 模拟赛

    这次模拟赛真的,,卡常赛. The solution of T1: std是打表,,考场上sb想自己改进匈牙利然后wei了(好像匈牙利是错的. 大力剪枝搜索.代码不放了. 这是什么神仙D1T1,爆蛋T ...

  3. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  4. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  5. 7.29NOIP模拟赛

    7.29NOIP模拟赛 T1 YSG (1s,64MB,ysg.in,ysg.out) 描述 ysg,yxy,azw 三人正在刷题. 他们每做一题的时间都是一个有理数. 如果在某一时刻,三人同时做完一 ...

  6. 2014-10-31 NOIP模拟赛

        10.30 NOIp  模拟赛   时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...

  7. ZROI 普及组模拟赛02总结

    ZROI 普及组模拟赛02总结 先放[网址][http://zhengruioi.com/contest/96] 可能是有一段时间没有打这种正式的比赛了,今天打的很奇怪... T1 模拟水题 既然是普 ...

  8. 冲刺$\mathfrak{CSP-S}$集训模拟赛总结

    开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...

  9. 20201101gryz模拟赛解题报告

    写在前面 2020rp++ 停课的第一场模拟赛 拿上一年的上一年的day1来考的, 结果得分期望220pts,实际135pts,rank3,太菜了 考着考着机房灯突然灭了,当时慌的一批 以为断电代码要 ...

  10. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

随机推荐

  1. 配置docker镜像时碰到的问题

    在配置docker镜像时,首先我是这样操作的 , echo "registry-mirrors": ["https://ry1ei7ga.mirror.aliyuncs. ...

  2. MFC 关于按键状态获取

    alt键会阻断消息? moousemovealt键无法判断,按下一次 并松开一次状态改变一次#define KeyState GetAsyncKeyState BOOL bCtrlDown = (Ke ...

  3. [WPF] 脱机环境实现支持拼音模糊搜索的AutoCompleteBox

    AutoCompleteBox是一个常见的提高输入效率的组件,很多WPF的第三方控件库都提供了这个组件,但基本都是字符串的子串匹配,不支持拼音模糊匹配,例如无法通过输入ldh或liudehua匹配到刘 ...

  4. mysql数据库无法录入汉字问题

    1.插入数据出现错误 show full columns from 表名;//查看数据表列编码 2. alter table 表名 change 列名 列名 varchar(自己设置) charact ...

  5. 全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自定义异常类的实现

    全网最适合入门的面向对象编程教程:27 类和对象的 Python 实现-Python 中异常层级与自定义异常类的实现 摘要: 本文主要介绍了在使用 Python 进行面向对象编程时,异常的层级和如何使 ...

  6. Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务

    众所周知,WSL 2 为 Windows 用户提供了一个强大.高效且灵活的 Linux 环境,特别适合开发者使用.它结合了 Windows 和 Linux 的优点,为用户提供了更加全面和高效的工作环境 ...

  7. 【Spring Data JPA】10 对象导航查询

    定义: 查询一个记录时,也就是查询这个对象,通过这个对象查询他的关联对象 [说白了不就是从我们设置好的集合中获取不就完了吗] 环境搭建: INSERT INTO `jpa`.`cst_customer ...

  8. python绘图库matplotlib:画线的标志marker的设置——类型/size/空心/边线颜色及大小/显示marker超出边界部分

    如题,最近有绘图的工作,要求就是使用python绘图库来画线并打上坐标点的标志,这时候就遇到了问题,这个线上的标志如果是实心的话就难以有区分度,但是设置为空心就需要考虑标志的边线粗细等问题,于是便有了 ...

  9. 【转载】Ubuntu20.04安装Bazel

    原文地址: https://zhuanlan.zhihu.com/p/311406177 ====================================== sudo apt install ...

  10. oracle利用job实现存储过程异步执行

    1.背景 在实际开发中,我们可能会利用存储过程批量处理业务, 对应有些存储过程可能会执行很长时间,这时我们需要客户端点操作后,存储过程异步执行 具体实现如下 1.创建处理业务的存储过程:sp_test ...