[考试总结]noip模拟17
爆零了!
菜爆了
弱展了
垃爆了
没有什么可以掩饰你的菜了
这次考试为我带来了第一个 \(\color{red}{ \huge{0}}\) 分,十分欣慰。。。。
最近的暴力都打不对,你还想什么正解???
考完之前就差不多知道自己大概是一个零分,然而抱着侥幸打开赛时排行榜的时候,直接翻到最下方就直接看到了自己的名字。。。。
无 \(fa\) 可说。。
自己看题都看不全,谁告诉过你 题目背景 就一定没有用了???
然而 \(sb\;XIN\) 直接跳过,并且默认无向图。。。
\(\huge{\text{你不爆零谁爆零?}}\)
T2 贪心都打不对,真垃。
\(\huge{\text{你不爆零谁爆零?}}\)
T3 打的都不配叫做爆搜。
\(\huge{\text{你不爆零谁爆零?}}\)
菜就是了。。。
世界线:
\(bitset\) + \(toposort\)。
就这?
就这。。
\(bitset\) 常数极小,其实平常的 \(bool\) 数组都可以换成 \(bitset\)。
然后 \(toposort\) 就很普通
#include<bits/stdc++.h>
using std::cout; using std::endl;
#define debug cout<<"debug"<<endl
#define int long long
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
template<class type>inline type get()
{
type s = 0,f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
return s * f;
}
}
using namespace xin_io; static const int maxn = 6e4+50,maxm = 1e6+10,inf = 0x7f7f7f,mod = (1<<30);
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define throw(i,a,b) for(register signed i=a;i>=b;--i)
typedef long long ll;
namespace xin
{
int l,r,an[maxn];
class xin_edge{public:int next,ver;}edge[maxm];
int head[maxn],zhi = 0;
inline void add(int x,int y) {edge[++zhi].ver = y;edge[zhi].next = head[x]; head[x] = zhi;}
int n,m;
int ou[maxn];
int outd[maxn],num[maxn];
bool vis[maxn];
int ret = 0;
std::bitset<(maxn/20)>lian[maxn];
int ans = 0,ind[maxn];
inline void topo()
{
std::queue<int>q;
try(i,1,n) if(!outd[i]) q.push(i);//,cout<<"i = "<<i<<endl;;
while(!q.empty())
{
register int x = q.front(); q.pop();
if(x>=l and x<=r)lian[x][(x-l)] = 1;
for(register int i=head[x];i;i=edge[i].next)
{
register int y = edge[i].ver;
if(x>=l and x<=r)lian[x][(x-l)] = 1;
lian[y] |= lian[x];
if(y>=l and y<=r)lian[y][(y-l)] = 1;
outd[y]--;
if(!outd[y]) q.push(y);
}
}
try(i,1,n)an[i] += lian[i].count();
}
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get<signed>(); m = get<signed>();
try(i,1,m)
{
register int x = get<signed>(),y = get<signed>();
add(y,x);ou[x]++; outd[x]++; ind[y]++;
}
l=1;r=std::min(3000ll,n);
while(l<=n)
{
try(i,1,n) lian[i] = 0;
topo();
try(i,1,n)outd[i]=ou[i];
l=r+1,r=std::min(l+3000ll-1,n);
}
try(i,1,n)
ans += an[i] - ind[i];
cout<<ans - n<<endl;
return 0;
}
}
signed main() {return xin::main();}
时间机器:
一个大贪心。
然而你却看不出来。
一个 \(\mathcal O(n^2)\) 暴力狂扫直接 \(70pts\)
然后进一步 \(map\) 优化直接 \(100pts\)
真垃。
#include<bits/stdc++.h>
using std::cout; using std::endl;
#define debug cout<<"debug"<<endl
#define int long long
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
template<class type>inline type get()
{
type s = 0,f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
return s * f;
}
}
using namespace xin_io; static const int maxn = 1e6+10,maxq = 3e5+10,inf = 0x7f7f7f7f;
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define throw(i,a,b) for(register signed i=a;i>=b;--i)
typedef long long ll;
namespace xin
{
int T,n,m;
class node
{
public:
ll l,r,cnt,op;
friend bool operator < (const node &a,const node &b)
{return (a.l==b.l)?a.op<b.op:a.l<b.l;}
}t[maxn];
std::map<ll,ll> mp;
std::map<ll,ll>::iterator it;
inline short main()
{
T = get<signed>();
while(T--)
{
n = get<signed>();m = get<signed>();
mp.clear();
ll cnt=0;
try(i,1,n) t[++cnt].l=get<signed>(),t[cnt].r=get<signed>(),t[cnt].cnt=get<signed>(),t[cnt].op=1;
try(i,1,m) t[++cnt].l=get<signed>(),t[cnt].r=get<signed>(),t[cnt].cnt=get<signed>(),t[cnt].op=-1;
int ok=1;
std::sort(t+1,t+1+cnt);
try(i,1,cnt)
{
//printf("t.op=%lld\n",t[i].op);
if(t[i].op==-1)
mp[t[i].r]+=t[i].cnt;
else
{
while(t[i].cnt)
{
it=mp.lower_bound(t[i].r);
// printf("mp[%lld]=%lld\n",t[i].r,mp[t[i].r]);
if(it==mp.end()) {ok = 0;break; }
if(t[i].cnt >= it->second) t[i].cnt -= it->second,mp.erase(it);
else it->second-=t[i].cnt,t[i].cnt = 0;
}
if(!ok)break;
}
}
!ok ? printf("No\n") : printf("Yes\n");
}
return 0;
}
}
signed main() {return xin::main();}
weight:
首先最小生成树那就先求出来一个。
然后 \(tarjan\) 判断割边就有很多分数。
然后树剖线段树维护就可以 \(\mathcal O(nlogn^2)\)
然而调不出来
[考试总结]noip模拟17的更多相关文章
- 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]
6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...
- NOIP模拟17.9.21
NOIP模拟17.9.21 3 58 145 201 161.5 样例输出21.6 数据规模及约定对于40% 的数据,N <= 20对于60% 的数据,N <= 1000对于100% 的数 ...
- NOIP模拟17.9.22
NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥
- NOIP模拟 17.8.20
NOIP模拟17.8.20 A.阶乘[题目描述]亲爱的xyx同学正在研究数学与阶乘的关系,但是他喜欢颓废,于是他就制作了一个和阶乘有关系的数学游戏:给出两个整数 n,m,令 t = !n,每轮游戏的流 ...
- NOIP模拟 17.8.18
NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也 ...
- NOIP模拟 17.8.15
NOIP模拟17.8.15 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...
- NOIP模拟 17.8.17
NOIP模拟17.8.17 A 小 G 的字符串文件名 输入文件 输出文件 时间限制 空间限制str.pas/c/cpp str.in str.out 1s 128MB[题目描述]有一天,小 L 给小 ...
- NOIP模拟 17.8.16
NOIP模拟17.8.16 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...
- NOIP模拟 17.8.14
NOIP模拟17.8.14 (天宇哥哥考察细心程度的题) [样例解释]如果删去第一个 1:在[3,1,2]中有 3 个不同的数如果删去 3:在[1,1,2]中有 2 个不同的数如果删去第二个 1:在[ ...
随机推荐
- Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 大家在工作中或许或多或少都接触过Docker,那你知道Docker以及容器化背后的原理到底是什么吗? 容器化 ...
- 重新整理 .net core 实践篇—————文件系统[二十二]
前言 简单介绍一下文件系统. 正文 文件系统,主要是下面3个接口组成: IFileProvider IFileInfo IDirectoryContents 那么他们的实现是: physicalFil ...
- csp-s模拟测试「9.14」A·B·C(三分,贪心)
博客大概咕了很久了......... T1 A 大概推下式子就好了,考试时数据点分治DFS前30点T了,然后后70分因为两数相乘爆long long然后本来可以A掉,就WA零了....... 式子推出 ...
- 在Intellij IDEA中查看TestNG自带的测试报告
执行TestNG框架的测试用例,会生成测试报告.如果在IDEA中看不到,可做如下配置. 1. 点击IDEA工具栏中Run->Edit Configuration菜单,或者直接点击右上角编辑配置的 ...
- 为什么excel里面有的数据用CTRL+F,搜索搜不到?
- 解决java socket在传输汉字时出现截断导致乱码的问题
解决java socket在传输汉字时出现截断导致乱码的问题 当使用socket进行TCP数据传输时,传输的字符串会编码成字节数组,当采用utf8编码时,数字与字母长度为1个字节,而汉字一般为3个字节 ...
- 深度解读MRS IoTDB时序数据库的整体架构设计与实现
[本期推荐]华为云社区6月刊来了,新鲜出炉的Top10技术干货.重磅技术专题分享:还有毕业季闯关大挑战,华为云专家带你做好职业规划. 摘要:本文将会系统地为大家介绍MRS IoTDB的来龙去脉和功能特 ...
- Java实现适配器模式
适配器模式(Adapter) 适配器模式涉及到3个角色:要被适配的接口,适配器,目标接口 适配器的工作就是将被适配的接口转换为目标接口 "鸭子类型"就是一个典型的适配器模式:如果它 ...
- Unity VideoPlayer视频模糊
如果视频出现模糊或者尺寸不对只需要修改Texture的Size就可以 注意一点 Size的值要跟视频尺寸一直
- 12、创建mysql用户及赋予用户权限
1.通过help命令查看grant的用法: CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON db1.* ...