没有爆零,足矣。

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

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. 关于failed to load resource 问题的处理

    问题: c++做插件,写了一个native class,继承于ue的类ActorComponent,而蓝图里也继承了这个c++ class,都在插件里,每次打开的时候就有这个错误: 之前的解决办法,复 ...

  2. java web 开发框架编

    学习web 框架上开发需要的是安装  mysql 8.0  idea 2022 git  2.2.23  node 16以上 (新版本不好拉有些库了)jdk 最好是17以上 jdk8也是行的,反正不管 ...

  3. SSL/TLS 深入浅出

    SSL,https(HTTP over SSL), X.509, SSL 证书 ,证书申请 /导入/签发, 等名词,想必有一定工作经验的小伙伴,一定都会略有耳闻,或者至少也听神边大神念叨过.虽然司空见 ...

  4. Linux系统下查找安装包所在目录

    Linux系统下查找安装包所在目录 想知道Linux系统下安装了哪些软件包,以及软件包安装在哪个目录下,可以用以下命令 1. which which命令查找出相关命令是否已经在搜索路径中,例子如下:$ ...

  5. 加油,为Vue3提供一个可媲美Angular的ioc容器

    为什么要为Vue3提供ioc容器 Vue3因其出色的响应式系统,以及便利的功能特性,完全胜任大型业务系统的开发.但是,我们不仅要能做到,而且要做得更好.大型业务系统的关键就是解耦合,从而减缓shi山代 ...

  6. BI 工具助力企业解锁数字化工厂,开启工业智能新视界

    背景 在 2022 年公布的<"十四五"数字经济发展规划>中,政府不断增加对制造业数字化转型的政策支持力度,积极倡导制造企业采用最新技术,提升自动化.数字化和智能化水平 ...

  7. 【Java】使用Druid连接池的监控面板排查慢SQL

    默认在后台服务的地址: http://localhost:8078/druid/login.html 账号信息放在配置文件中获取: server: port: 8078 spring: datasou ...

  8. 【Phoenix】4.14.1-Hbase-1.3版本 安装

    Phoenix 版本 会附带Hbase版本,要根据安装的Hbase版本下载Phoenix 下载Phoenix wget http://archive.apache.org/dist/phoenix/a ...

  9. 【Linux】11 RPM & YUM 管理工具 介绍

    rpm包的管理 介绍: 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中. 它生成具有.RPM扩展名的文件.RPM是RedHat Package Manager(RedHat软件包 ...

  10. 【Docker】07 部署挂载本地目录的Tomcat

    1.拉取Tomcat镜像: docker pull tomcat:9.0.37 2.创建并运行Tomcat容器: 挂载容器的webapps目录到本机(宿主机)自己设置的目录 docker run -d ...