没有爆零,足矣。

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

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. [rCore学习笔记 020]第二章作业

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 编程题 ...

  2. Tomcat日志信息有乱码的处理方法

    1.问题描述 1.1.Idea中的tomcat日志有乱码 1.2.直接启动tomcat的日志有乱码 1.3.原因分析 问题是由于tomcat使用的编码和操作系统使用的编码不一致导致: Windows1 ...

  3. 【MySQL】DB-Link 跨库访问

    相关说明: https://blog.csdn.net/qq_48721706/article/details/124088963 DB-LINK以一个远程访问方式访问其他MYSQL实例 连接实例和被 ...

  4. 【C3】05 层叠与继承

    本文旨在让你理解CSS的一些最基本的概念 --层叠.优先级和继承-- 这些概念决定着如何将CSS应用到HTML中,以及如何解决冲突. 尽管与课程的其他部分相比,完成这节课可能看起来没有那么直接的相关性 ...

  5. 【OracleDB】 03 数据类型和常见对象概述

    我们可以通过PLSQL来查看Oracle的数据类型 总分类: - 字符型 1.CHAR 0 - 2000 字节 固定长度字符串 2.NCHAR 0 - 1000 字节 固定长度字符串[Unicode字 ...

  6. 世界机器人大会 —— 人形机器人(humanoid)、双足机器人、四足机器人 —— 我国最大的机器人展览会

    相关资料: https://www.bilibili.com/video/BV1iG411g7B4/ https://www.youtube.com/watch?v=8cJV08MTwA0 官网主页: ...

  7. AQS源码深度解析之cancelAcquire方法解读

    1.背景 2.源码解读 调用该方法的地方 方法源码解读 /** * 取消获取资源(异常处理时都需要用到) * 方法主要功能: * 1.处理当前取消节点的状态: * 2.将当前取消节点的前置非取消节点和 ...

  8. 字符串系列目录&&说明

    字符串准备写成一个系列. 目录 \(\text{KMP笔记}\) \(\text{Manacher笔记}\) [] [] [] 格式与说明 下面的说明和格式将被应用于整个系列. 说明 所有字符串的下标 ...

  9. 我们与高效工作流的距离:使用AI阅读工具ChatDOC+笔记软件Obsidian Slide,直接从 PDF 文献直接输出 PPT 报告

    我们与高效工作流的距离 在当今信息化的时代,为了实现高效工作和学习,如何实现快速地输入和输出成为每个人的必修课题. 然而,对于输入而言,每一天大量的信息,往往会使我们陷入信息过载和知识爆炸的困境,难以 ...

  10. MPTCP(二):MPTCP版本说明

    MPTCP版本说明 简介 参考链接 https://github.com/multipath-tcp/mptcp_net-next/wiki MPTCP的两个版本 MPTCPv0: 在5.6之前的li ...