17/10-17/11做题记录

1.Luogu P1155 双栈排序

Code:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define inf 0x7fffffff
 5 #define MN 1005
 6 #define ME 1000005
 7 using namespace std;
 8 inline int in(){
 9     int x=0;bool f=0; char c;
10     for (;(c=getchar())<‘0‘||c>‘9‘;f=c==‘-‘);
11     for (x=c-‘0‘;(c=getchar())>=‘0‘&&c<=‘9‘;x=(x<<3)+(x<<1)+c-‘0‘);
12     return f?-x:x;
13 }
14 struct edge{
15     int to,next;
16 }e[ME];
17 int head[MN],col[MN],a[MN],f[MN],st1[MN],st2[MN];
18 int n,cur,c1,c2,cnt=0;
19 inline void ins(int x,int y){
20     e[++cnt].to=y;e[cnt].next=head[x];head[x]=cnt;
21 }
22 inline bool dfs(int u,int c){
23     col[u]=c;
24     for (int i=head[u];i;i=e[i].next){
25         int v=e[i].to;
26         if (col[v]==c) return 0;
27         if (col[v]==-1) dfs(v,c^1);
28     }return 1;
29 }
30 int main()
31 {
32     n=in();f[n+1]=inf;memset(col,-1,sizeof(col));
33     for (int i=1;i<=n;++i) a[i]=in();
34     for (int i=n;i;--i) f[i]=min(a[i],f[i+1]);
35     for (int i=1;i<=n;++i)
36     for (int j=i+1;j<=n;++j){
37         if (a[i]<a[j]&&a[i]>f[j+1]) ins(i,j),ins(j,i);
38     }for (int i=1;i<=n;++i) if(col[i]==-1)
39     if (!dfs(i,0)) {printf("0");return 0;}cur=1;
40     for (int i=1;i<=n;++i){
41         if (!col[i]) st1[++c1]=a[i],printf("a ");
42         else st2[++c2]=a[i],printf("c ");
43         while ((c1&&st1[c1]==cur)||(c2&&st2[c2]==cur)){
44             while (c1&&st1[c1]==cur) printf("b "),--c1,++cur;
45             while (c2&&st2[c2]==cur) printf("d "),--c2,++cur;
46         }
47     }return 0;
48 }

2.Luogu P1099 树网的核

Code:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define inf 0x3f3f3f3f
 5 #define ME 605
 6 #define MN 303
 7 using namespace std;
 8 inline int in(){
 9     int x=0;bool f=0; char c;
10     for (;(c=getchar())<‘0‘||c>‘9‘;f=c==‘-‘);
11     for (x=c-‘0‘;(c=getchar())>=‘0‘&&c<=‘9‘;x=(x<<3)+(x<<1)+c-‘0‘);
12     return f?-x:x;
13 }
14 struct edge{
15     int to,next,val;
16 }e[ME];
17 int head[MN],dis[MN][MN],st[MN];
18 int n,m,s,t,dmx=0,md=inf,res=inf,mx=0,dx,dy,cnt=0,v,ct=0;
19 bool vis[MN],mk=0;
20 inline void ins(int x,int y,int v){
21     e[++cnt].to=y;e[cnt].next=head[x];head[x]=cnt;e[cnt].val=v;
22     dis[x][y]=v;
23 }
24 inline void dfs(int u){
25     if (u==dy) {mk=1;return;}
26     for (int i=head[u];i;i=e[i].next){
27         int v=e[i].to;
28         if (!vis[v]){
29             vis[v]=1;st[++ct]=v;dfs(v);
30             if (mk) return;--ct;
31         }
32     }
33 }
34
35 int main()
36 {
37     n=in();m=in();
38     memset(dis,0x3f,sizeof(dis));
39     for (int i=1;i<=n;++i) dis[i][i]=0;
40     for (int i=1;i<n;++i){
41         s=in();t=in();v=in();
42         ins(s,t,v);ins(t,s,v);
43     }
44     for (int k=1;k<=n;++k)
45     for (int i=1;i<=n;++i)
46     for (int j=1;j<=n;++j)
47     dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
48     for (int i=1;i<=n;++i)
49     for (int j=i+1;j<=n;++j){
50         if (dmx<dis[i][j]) dmx=dis[i][j],dx=i,dy=j;
51     }vis[dx]=1,st[++ct]=dx;dfs(dx);memset(vis,0,sizeof(vis));
52     for(int i=1;i<=ct;++i)
53     for(int j=i;j<=ct;++j){
54         int sum=dis[st[i]][st[j]],mx=0;if (sum>m) break;
55         for (int k=1;k<=n;++k){
56             md=inf;for (int l=i;l<=j;++l)
57             md=min(md,dis[k][st[l]]);mx=max(mx,md);
58         }res=min(res,mx?mx:inf);
59     }printf("%d",res);return 0;
60 }

<not_completed>

时间: 2024-10-31 08:48:56

17/10-17/11做题记录的相关文章

【BZOJ做题记录】07.07~?

在NOI一周前重开一个坑 最后更新时间:7.07 11:26 7.06 下午做的几道CQOI题: BZOJ1257: [CQOI2007]余数之和sum:把k mod i写成k-k/i*i然后分段求后面的部分就好了 BZOJ1258: [CQOI2007]三角形tri:在草稿纸上按照位置和边找一下规律就好了 BZOJ1260: [CQOI2007]涂色paint:简单的区间DP BZOJ1303: [CQOI2009]中位数图:小于中位数的改为-1大于的改为1,算一算前缀和然后哈希一下乘一乘就好

project euler做题记录

ProjectEuler_做题记录 简单记录一下. problem 441 The inverse summation of coprime couples 神仙题.考虑答案为: \[\begin{array}{c} S(n) & = & \sum_{i = 1} ^ n \sum_{p = 1} ^ i \sum_{q = p + 1} ^ i \frac {1}{pq}[p + q \geq i][gcd(p, q) = 1] \& = & \sum_{i = 1} ^

退役前的做题记录5.0

退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树,这样跨越\(mid\)的点对之间的最短路一定会经过\(mid\),因此两点之间的最短路径就可以描述成最短路树上的两段到根路径.对每棵最短路树处理\(dfs\)序,用树状数组维护权值修改即可. [Wannafly挑战赛4F]线路规划 类似SCOI2016萌萌哒一题,并查集\(f_{i,j}\)表示从

后缀自动机做题记录

目录 后缀自动机做题记录 sp1811 sp1812 sp10570 luogu 2463 CF873F TJOI2015 弦论 AHOI2013 差异 HEOI2016/TJOI2016 字符串 HAOI2016 找相同字符 SDOI2016 生成魔咒 ZJOI2015 诸神眷顾的幻想乡 留坑待填 广义SAM 其他 NOI原题练习 后缀自动机做题记录 来填之前的坑了...考后大概会做做有字符串的综合题吧 sp1811 lcs板子,对于第一个串建出SAM,第二个串在上面跑,即可求出对于每一个位置

清华集训2014 做题记录

清华集训2014做题记录 已完成 [清华集训2014]玛里苟斯 [清华集训2014]主旋律 [清华集训2014]奇数国 [清华集训2014]矩阵变换 [清华集训2014]sum [清华集训2014]虫逢 [清华集训2014]玄学 [清华集训2014]文学 未完成 [清华集训2014]卡常数 [清华集训2014]简单回路 [清华集训2014]Router [清华集训2014] Breaking Bomber 写一题要膜一题题解,膜完题解膜代码,膜完代码膜指导,膜了好几天了还有四个题没做. [清华集

2020年3月做题记录

[不定时更新,赶论文,赶项目,1月~2月做题记录还在整理,自我训练] 反转链表 链接:https://leetcode-cn.com/problems/reverse-linked-list/ 类名: 考察点:链表.迭代.递归 解题过程: 力扣3月每日1题,题解链接: https://leetcode-cn.com/problems/reverse-linked-list/solution/di-2ci-da-qia-lian-biao-fan-zhuan-di-gui-by-wu-xi-/ 就

安装完Ubuntu 17.10后要做的几件事

前几天Ubuntu 17.10终于出来了,正好前几天我电脑重装系统,顺便留了一个分区用来装Linux.所以就在我电脑上安装了Ubuntu 17.10. 安装过程就不说了,图形化安装程序,基本安装过几次就熟悉了.所以重点 还是安装完成之后的美化过程. 其实说起来,ArchLinux.Fedora等等Linux系统我都折腾过很多了,但是最后还是选择了Ubuntu.因为Ubuntu以及Debian系还是目前Linux中的大头,各种软件基本上都官方支持.如果用ArchLinux这些比较小众的话,很多东西

Educational Codeforces Round 79做题记录

这套题感觉出的不咋滴,第四题和第五题难度差了1000分!!! 前四题都还简单,第五题就31人做出……我算了…… 懒得写题解了,做个记录吧(这就是偷懒的理由???) 比赛传送门 A.New Year Garland 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 #define re

POI做题记录:第二届POI

Trees Memory limit: 32 MB Trees occur very often in computer science. As opposed to trees in nature, computer science trees "grow upside down"; the root is up and the leaves are down. A tree consists of elements named nodes. A root is one of the