众所周知,sbwzx在考试一结束就嚷嚷T1是个sb题。那他为什么调了2小时才调出来呢?快和小编一起看看吧。

Sb题:指除了sbwzx别人都能做出来的题

1.CE:震惊!sbwzx竟然连map都不会用,我们sbwzx实在是太sb了!

2.震惊!这题根本不需要用map,sbwzx仍然在用,还用错了!第二天才想到可以结构体排序

3.震惊!短短十几行代码就有两个明显错误!

void Solve(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
sort(a+1,a+k+1,cmp);
ll tool=1ll*n*(n+1)%mod;//没除2
ll res=1;
for(int i=1;i<=k;++i){
if(a[i].x==a[i-1].x&&a[i].x==a[i-1].x) continue;//这第二个条件比较了个寂寞
if(a[i].x!=a[i-1].x){
ans=ans*res%mod;
res=(tool-a[i].y+mod)%mod;
cnt++;
}else res=(res-a[i].y+mod)%mod;
}
ans=ans*qpow(tool,m-cnt)%mod;
printf("%lld\n",ans);
}

另外,如果这么写,最后一个特殊点是没法乘到的。

为了乘到,要人为加一个限制。

void Solve(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
sort(a+1,a+k+1,cmp);
ll tool=1ll*n*(n+1)/2%mod;
ll res=1;
a[k+1].x=a[k+1].y=0;
for(int i=1;i<=k+1;++i){
if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y) continue;
if(a[i].x!=a[i-1].x){
ans=ans*res%mod;
res=tool;
cnt++;
}
res=(res-a[i].y+mod)%mod;
}
cnt--;
ans=ans*qpow(tool,m-cnt)%mod;
printf("%lld\n",ans);
}

然后就拿到了80分的好成绩。

这是为什么呢?

原来,当\(k==0\)时,cnt是不需要减减的,特判一下,就过了!

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100000+10,mod=1e9+7;
struct node{
int x,y;
}a[maxn];
int n,m,k,cnt;
ll ans=1;
bool cmp(node A,node B){
return A.x!=B.x ? A.x<B.x : A.y<B.y ;
}
ll qpow(ll x,int b){
ll res=1;
ll base=x;
while(b){
if(b&1) res=res*base%mod;
base=base*base%mod;
b>>=1;
}
return res;
}
void Solve(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
sort(a+1,a+k+1,cmp);
ll tool=1ll*n*(n+1)/2%mod;
ll res=1;
a[k+1].x=a[k+1].y=0;
for(int i=1;i<=k+1;++i){
if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y) continue;
if(a[i].x!=a[i-1].x){
ans=ans*res%mod;
res=tool;
cnt++;
}
res=(res-a[i].y+mod)%mod;
}
if(k!=0) cnt--;
ans=ans*qpow(tool,m-cnt)%mod;
printf("%lld\n",ans);
}
int main(){
freopen("easy.in","r",stdin);
freopen("easy.out","w",stdout);
Solve();
return 0;
}

[调试笔记] 晚测5 T1 容易题的更多相关文章

  1. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

  2. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  3. 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解

    前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...

  4. Tomcat调试笔记

    调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是 ...

  5. JavaScript特效(调试笔记)

    JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...

  6. USB wifi调试笔记

    本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...

  7. VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)

    ------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015:微软在 "WDK760 ...

  8. modbus-poll和modbus-slave工具的学习使用——modbus协议功能码3的解析(及欧姆龙温控器调试笔记)

    最近的项目中使用到了欧姆龙的温控器,里面有很多的通信方式,我们使用的常见的modbus——RTU方式,其他方式我们不使用,其中通信手册上面有很多通信的实例,欧姆龙modbus还区分4字节模式和2字节模 ...

  9. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

随机推荐

  1. 地址栏url中去掉所有参数

    1.地址栏url中去掉所有参数,这个是纯前端解决,很多时候页面跳转时候会选择在url后面带参数过去,(使用?&),方便传也方便取,但是我们要做的是不要让页面的一些请求参数暴露在外面 正常项目工 ...

  2. Win8 iis 环境搭建

    http://www.cnblogs.com/Joans/archive/2012/07/16/2593828.html 系统:win8 环境:vs2012 一:安装IIS 比较win7的安装来说,多 ...

  3. 使用python实现xls批量转为xlsx

    利用win32库来实现 # -*- coding:utf-8 -*- import os import win32com.client as win32 #需要转换的数据目录 inputdir = u ...

  4. [源码解析] 深度学习分布式训练框架 horovod (21) --- 之如何恢复训练

    [源码解析] 深度学习分布式训练框架 horovod (21) --- 之如何恢复训练 目录 [源码解析] 深度学习分布式训练框架 horovod (21) --- 之如何恢复训练 0x00 摘要 0 ...

  5. pytest+allure基础知识

    介绍 pytest是基于unittest开发的另一款更高级更好用的单元测试框架 支持参数化 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败 支持运行由 nose, ...

  6. 消息队列之 kafka 集群搭建

    我们先弄清楚kafka集群环境首先需要些什么 JDK 10+ Zookeeper Kafka 2.x 首先准备三台虚拟机 centos7 ,更改IP地址为静态地址分别为,29.30.31 cd /et ...

  7. Java基础系列(28)- 方法的定义和调用

    方法的定义 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型 参数名){ -- 方法体 -- retu ...

  8. Ubuntu怎么开启/关闭防火墙

    在Ubuntu中,使用sudo ufw status命令查看当前防火墙状态. 不活动,是关闭状态. 在Ubuntu中,使用sudo ufw enable命令来开启防火墙. 在Ubuntu中,使用sud ...

  9. fiddler抓包工具 https抓取 ios手机端抓取

    fiddler抓包工具 https抓取 ios手机端抓取  转载链接:https://www.cnblogs.com/bais/p/9118297.html   抓取pc端https请求,ios手机端 ...

  10. P5748-集合划分计数【EGF,多项式exp】

    正题 题目链接:https://www.luogu.com.cn/problem/P5748 题目大意 求将\(n\)的排列分成若干个无序非空集合的方案. 输出答案对\(998244353\)取模. ...