SD 一轮集训 day4 圣城鼠

非常强的构造题。

很显然的是我们要构造一个类似菊花图的东西,因为这样的话两点之间路径的点数会非常少,很容易满足第二个条件。

但是因为直接菊花图的话会不满足第一个条件,,,所以我们可以构造一个类菊花图。

(题解太神了,%一发题解)

#include<cstdio>
#define ll long long
using namespace std;
int main(){
	int k; scanf("%d",&k);
	printf("%d\n",k<<1);
	for(int i=1;i<=k;i++){
		printf("%d %d\n",i*2-1,i*2);
		for(int j=1;j<i;j++) printf("%d %d\n%d %d\n",i*2-1,j*2-1,i*2,j*2);
		for(int j=i+1;j<=k;j++) printf("%d %d\n%d %d\n",i*2-1,j*2,i*2,j*2-1);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/JYYHH/p/9176101.html

时间: 2024-10-15 01:06:20

SD 一轮集训 day4 圣城鼠的相关文章

SD 一轮集训 day1 carcar

可以发现每条边只能选一次或者两次,并且最后每个点的度数(∑邻接边选的次数和)都是偶数(代表有欧拉回路). 然后根据题意列一个 n 行 m+1 列的01矩阵,每一行代表一个异或方程组(每个点的度数是偶数),每一列(除了最后一列)代表一个变量(每条边是不是选2次),最后一列0/1代表这个点目前的度数是偶数还是奇数. 最后我们要求的就是方程所有解中逆字典序最小的解. 乍一看肯定是毫无思路,但是做了 [HAOI2018] 反色游戏 之后,就感觉这两个东西还是有点点共性的. 我们高斯消元的过程肯定是 i

SD 一轮集训 day1 lose

神TM有是结论题,我讨厌结论题mmp. 杨氏矩阵了解一下(建议去维基百科). 反正就是推柿子,使劲推,最后写起来有一点小麻烦,但是在草稿纸(然鹅我木有啊)上思路清晰的话还是没问题的. #include<cstdio> #include<cctype> #include<algorithm> #define ll long long using namespace std; const int maxn=2000000,ha=1e9+7; inline int read(

长沙集训day4(总结)(爆零记)

长沙爆零记QAQ话不多说直接进入正题: t1:淘淘的苹果(一看t2导弹拦截????t3校门外的树???哎呦哇擦,再一看题目,哦........我想多了) 第一题呢:陶陶==淘淘要去摘苹果,他的手不能弯((一脸懵逼)一看数据手贼长....)因为有的苹果太高 所以他要去拿凳子,但他太懒只想那m个凳子(你说这人想吃苹果还怕懒可怕可怕.....),所以说让你选出m个凳子 可以使他拿到最多的苹果. 思路:当时想的是区间DP,想了想,直接用结构体a[i].l和a[i].r存凳子的区间加上他的手的高度0.0

loj6102 「2017 山东二轮集训 Day1」第三题

传送门:https://loj.ac/problem/6102 [题解] 贴一份zyz在知乎的回答吧 https://www.zhihu.com/question/61218881 其实是经典问题 # include <stdio.h> # include <string.h> # include <iostream> # include <algorithm> using namespace std; typedef long long ll; typed

FJ省队集训DAY4 T2

XXX 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<vector> 7 using namespace std; 8 typedef unsigned long long ll; 9 ll a,mod=1,L=1; 10 ll tr[4],b[4],tmp[4

FJ省队集训DAY4 T1

直接上题解 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #define ll long long 7 const int Mod=1000000009,N=3000; 8 ll jc[N+10],jcny[N+10],jcnys[N+10],K[N+10],p[N+10],f[N+10];

2017雅礼集训 Day4

今日得分:100+100+80(puts("nan")骗得70分) = 280 今日题解: T1:依赖关系构成一个森林,直接树形DP T2:最终答案只会选两个区间,除去覆盖情况后枚举右端点,单调队列维护左端点即可 T3:积分后发现是求最终距离的4次方的期望,直接平方求出二次方的期望,然后容斥求出四次方 T3什么玩意

「2018山东一轮集训」鸽子

窝也不知道为什么反着BFS就是对的啊QWQ #include<cstdio> #define ll long long using namespace std; const int N=2005; int n,k,m,B[2],E[2],H,T,px[N*N],py[N*N]; int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; bool M[N][N],v[N][N]; inline bool read(){ char ch=getchar(); while(ch!

「2018山东一轮集训」 Tree

为什么出题人这么毒瘤啊??!!一个分块还要带log的题非要出成n<=2*1e5....... 为了卡过最后两个点我做了无数常数优化,包括但不限于:把所有线段树改成 存差分的树状数组:把树剖求LCA的极小的log优化成rmq O(1)求LCA:根据测试情况手动调整siz的大小: 但就是死也卡不过去,算了算了QWQ (常规套路,先把1设成根建有根树) 这个题的主要思路就是 对节点的下标分块,设 f[i][j] 为 第i个块内所有点到点j的距离和,然后看如何快速的动态维护这个玩意.... 发现改动一条