NOIp 0916 爆零记
题目来自神犇chad
上次爆零是说着玩,这次真的爆零了QAQ
好吧貌似是TYVJ的模拟赛打多了..一直按照TYVJ的格式提交的压缩包..
然后莫名其妙就AK了hhh
来的时候迟到了半小时,昨晚痛苦的补作业补到了1点..,晚上补作业留下的泪就是白天浪时脑子里进的水
所以刚来的时候脑子有点昏,所以T1又是喜闻乐见的不会..
然后按照以往的套路滚去看T2
慢着...这道题好像有些眼熟?这不是我之前放在OJ上的一道题嘛 skip!
去看了看T3,Tarjan+分层图。可以,这很图论,水了一发模板
//chad round T3
//by Cydiater
//2016.9.16
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
#define ll long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define down(i,j,n) for(int i=j;i>=n;i--)
typedef pair<int,int> pii;
#define FILE "trip"
;
const int oo=0x3f3f3f3f;
inline int read(){
,f=;
;ch=getchar();}
+ch-';ch=getchar();}
return x*f;
}
,LEN=,Link[MAXN],group[MAXN],group_num=,dfn[MAXN],low[MAXN],dfs_clock=,stack[MAXN],top=,Node[MAXN][],cnt=,dis[MAXN],ans=;
priority_queue<pii, vector<pii>, greater<pii> >q;
bool vis[MAXN];
struct edge{
int x,y,next,v;
}e[MAXN],E[MAXN<<];
namespace solution{
inline void insert(int x,int y,int v){e[++len].next=LINK[x];LINK[x]=len;e[len].y=y;e[len].v=v;e[len].x=x;}
inline void Insert(int x,int y,int v){E[++LEN].next=Link[x];Link[x]=LEN;E[LEN].y=y;E[LEN].v=v;E[LEN].x=x;}
void init(){
N=read();M=read();K=read();
up(i,,M){
int x=read(),y=read(),v=read();
insert(x,y,v);
}
}
void tarjan(int node){
vis[node]=;dfn[node]=low[node]=++dfs_clock;
stack[++top]=node;
for(int i=LINK[node];i;i=e[i].next)
if(!dfn[e[i].y]){
tarjan(e[i].y);
low[node]=min(low[node],low[e[i].y]);
}else if(vis[e[i].y]) low[node]=min(low[node],dfn[e[i].y]);
if(dfn[node]==low[node]){
group_num++;
int tmp;
do{
tmp=stack[top--];
vis[tmp]=;
group[tmp]=group_num;
}while(tmp!=node);
}
}
void dijkstra(){
memset(dis,,sizeof(dis));
memset(vis,,sizeof(vis));
dis[Node[group[]][]]=;q.push(make_pair(dis[Node[group[]][]],Node[group[]][]));
while(!q.empty()){
pii tmp=q.top();q.pop();
int dist=tmp.first,node=tmp.second;
if(vis[node])continue;
vis[node]=;
for(int i=Link[node];i;i=E[i].next)
if(dis[E[i].y]>dis[node]+E[i].v){
dis[E[i].y]=dis[node]+E[i].v;
q.push(make_pair(dis[E[i].y],E[i].y));
}
}
}
void slove(){
memset(vis,,sizeof(vis));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
up(i,,N)if(!dfn[i])tarjan(i);
up(i,,N)up(k,,K)Node[i][k]=++cnt;
up(i,,len){
int x=e[i].x,y=e[i].y,v=e[i].v;
if(group[x]==group[y])continue;
up(k,,K) Insert(Node[group[x]][k],Node[group[y]][k],v);
up(k,,K-) Insert(Node[group[x]][k],Node[group[y]][k+],);
}
dijkstra();
}
void output(){
up(k,,K)ans=min(ans,dis[Node[group[N]][k]]);
)ans=-;
cout<<ans<<endl;
}
}
int main(){
//freopen("input.in","r",stdin);
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
using namespace solution;
init();
slove();
output();
;
}
这些模板敲过好几遍了,不拍了。去看T1!
$ans \leq 50$
好呀,搞个二维前缀和枚举
//chad round T1
//by Cydiater
//2016.9.16
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <iomanip>
#include <ctime>
#include <cmath>
using namespace std;
#define ll long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define down(i,j,n) for(int i=j;i>=n;i--)
#define FILE "papercut"
;
const int oo=0x3f3f3f3f;
inline int read(){
,f=;
;ch=getchar();}
+ch-';ch=getchar();}
return x*f;
}
int N,M,K,cnt[MAXN][MAXN];
namespace solution{
void init(){
N=read();M=read();K=read();
memset(cnt,,sizeof(cnt));
up(i,,K){
int x=read(),y=read();
cnt[x][y]=;
}
up(i,,N)up(j,,M)cnt[i][j]=cnt[i-][j]+cnt[i][j-]-cnt[i-][j-]+cnt[i][j];
}
void slove(){
down(ans,min(min(N,M),),){
up(i,ans,N)up(j,ans,M){
int tmp1=cnt[i][j],tmp2=cnt[i][j-ans]+cnt[i-ans][j]-cnt[i-ans][j-ans];
){
printf("%d\n",ans);
return;
}
}
}
puts(");
}
}
int main(){
//freopen("input.in","r",stdin);
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
using namespace solution;
init();
slove();
;
}
然后水了水T2的模板
//chad round T2
//by Cydiater
//2016.9.16
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
#define ll long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define down(i,j,n) for(int i=j;i>=n;i--)
#define FILE "string"
;
const int oo=0x3f3f3f3f;
inline int read(){
,f=;
;ch=getchar();}
+ch-';ch=getchar();}
return x*f;
}
char s[MAXN];
,ans=;
namespace solution{
inline bool equ(int x,int y,int l){return rank[x]==rank[y]&&rank[x+l]==rank[y+l];}
void init(){
scanf();
N=strlen(s+);
}
void suffix_sort(){
up(i,,N){rank[i]=s[i];sa[i]=i;}
,i,sig=,pos=;pos<N;sig=pos){
,i=N-l+;i<=N;i++)p[++pos]=i;
;i<=N;i++)if(sa[i]>l)p[++pos]=sa[i]-l;
;i<=sig;i++)cnt[i]=;
;i<=N;i++)cnt[rank[i]]++;
;i<=sig;i++)cnt[i]+=cnt[i-];
for(i=N;i;i--)sa[cnt[rank[p[i]]]--]=p[i];
,i=;i<=N;i++)tmp[sa[i]]=equ(sa[i],sa[i-],l)?pos:++pos;
;i<=N;i++)rank[i]=tmp[i];
l=l==?:l<<;
}
}
void get_height(){
,j=,k;i<=N;i++){
])){j=;continue;}
if(j)j--;
while(s[i+j]==s[k+j])j++;
height[rank[i]]=j;
}
}
void slove(){
suffix_sort();
get_height();
up(i,,N)ans+=N-sa[i]+-height[i];
}
void output(){
cout<<ans<<endl;
}
}
int main(){
//freopen("input.in","r",stdin);
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
using namespace solution;
init();
slove();
output();
;
}
小结
除了T2出后缀数组比较坑,其他的题都很不错。其实NOIp通用的知识点就那么几个,关键还是看考试的状态。连着这几场考试都没有数论,很有可能是一个flag..
陷入LCT的坑无法自拔感觉各种基础算法都忘光了
NOIp 0916 爆零记的更多相关文章
- NOIp 0910 爆零记
这套题是神犇chty出的. 刚拿到题的时候有点懵逼,因为按照一般的套路第一题都是一眼题,但是看到第一题后想了很多个算法和数据结构好像都不能很好的解决.然后就随手敲了个暴力去看T2. 嗯...文件名是b ...
- 「游记」NOIP 2021 爆零记
推荐访问本人自建博客 \(\text{cjwen.top}\) 欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉,第一次参加 \(NOIP\),欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉. 第一题比较简单,用类似于筛质数的做法 ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)爆零记
昨晚一个瓜皮说今晚有cf,听说是晚间场,我瞅了一眼,娃,VK Cup,上分的好机会,看着比赛时间就有点心酸了,0:35,当时一直在纠结要不要打的问题,当时想着应该不难吧,要不打一下吧,要不还是看看题先 ...
- HNOI2019 爆零记
HNOI2019爆零记 day \(-inf\) ~ day \(0\) 开学一周之后才停的课,停课之后就开始每天被包菜.我三月份几乎没有更博,就是因为每天都被虐的自闭了. day \(0\) 本来是 ...
- PKUWC 2019&WC 2019爆零记
PKUWC 2019&WC 2019爆零记 毕竟过了很久了,杂七杂八的东西就不写了,并且除成绩之外的内容不保证其正确性. Day1 T1:看到这道题很舒服啊,枚举top序算合法图的数量,状压D ...
- 雅礼集训1-9day爆零记
雅礼集训1-9day爆零记 先膜一下虐爆我的JEFF巨佬 Day0 我也不知道我要去干嘛,就不想搞文化科 (文化太辣鸡了.jpg) 听李总说可以去看(羡慕)各路大佬谈笑风声,我就报一个名吧,没想到还真 ...
- CTS&&APIO2019爆零记
如果你只好奇测试相关请跳至day 2 day 3 day 6 scoi 2019 之后 由于实力问题,省选的时候排名在三十多,显然是没有进队.不过可能是受过的打击比较多,所以还没有特别颓废,甚至连 ...
- [日常] NOIWC 2018爆零记
开个坑慢慢更(逃 (然而没准会坑掉?) day 0 大概 $8:30$ 就滚去雅礼了qwq 过去的时候发现并没有人...进报到处楼门的时候还被强行拍照围观了一波OwO 然后就领了HZ所有人的提包和狗牌 ...
- HNOI2019爆零记
HNOI2019真-爆零祭 我怎么这么菜QAQ day-37 从学科溜过来搞OI. 班主任一直在谈论我退役的事情,这就是NOIP挂分的后果...说我没考好就找理由,人家xxxxxxx可不是xxxxxx ...
随机推荐
- 你是否还在质疑EF的性能
1. 写在前面的话 一直没有写博客的习惯,感觉太浪费时间,没有那么多精力,其实仔细一想,写博客是一种习惯,也是一种心境,同时也是对自己所掌握的知识结构的一个梳理过程,对自己知识体系的一个巩固,同时也是 ...
- memcache 安装
1 下载两个文件 wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz wget http://www.monkey.org/ ...
- 东大OJ-1391-Big big Power
题目描述 Calculate the power num a^(b^c) mod 1e9+7 输入 Multiple test cases,each case has three integers a ...
- Android四大组件之Activity详解——创建和启动Activity
前面我们已经对Activity有过简单的介绍: Android开发——初始Activity Android开发——响应用户事件 Android开发——Activity生命周期 先来看一下最终结果 项目 ...
- Ajax深入学习
1.ajax如何减轻服务器的负担的? 2.如何合理的使用ajax? 3.一个页面一进来等文档加载完毕:走ajax请求去了? 用户体验真的好吗?
- Linux chkconfig命令
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...
- 重新打开singleTask画面时传值问题
记录学习之用 大家都知道假如当我们的A画面设置了android:launchMode="singleTask"时,从A画面跳到B画面之前没有finishA画面,然后在B画面使用st ...
- FastDFS搭建及java整合代码【转】
FastDFS软件介绍 1.什么是FastDFS FastDFS是用C语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高 ...
- 哈希 poj 3349
n个雪花 判断有没有相同的 正的和倒的相同都可以 哈希一下 比的少了就可以 #include<stdio.h> #include<algorithm> #include< ...
- NHibernate中session.update()及session.merge()的区别
今天的工作中遇到一个奇怪的问题,如下: "a different object with the same identifier value was already associated w ...