做网站的一般多钱携程网站联盟
news/
2025/9/23 3:17:17/
文章来源:
做网站的一般多钱,携程网站联盟,wordpress statraq,做网站的成本有多少解析
本题也算看了一半题解吧 看到“数学归纳法”退出来自己推的 这题想到归纳法后面也就简单了
首先#xff0c;n3和n4的时候显然有解#xff0c;可以打表 然后考虑在获得n-2的答案时#xff0c;如何获得n的答案 如果n为奇数#xff0c;我们可以把(1,n-1,2,n)、(3,n-1,4…解析
本题也算看了一半题解吧 看到“数学归纳法”退出来自己推的 这题想到归纳法后面也就简单了
首先n3和n4的时候显然有解可以打表 然后考虑在获得n-2的答案时如何获得n的答案 如果n为奇数我们可以把(1,n-1,2,n)、(3,n-1,4,n)…(n-4,n-1,n-3,n)各连两次最后连两个(n-2,n-1,n) 如果n为偶数我们可以把(1,n-1,2,n)、(3,n-1,4,n)…(n-5,n-1,n-4,n)各连两次最后连一个(n-3,n-1,n-2,n)、(n-3,n-1,n)和(n-2,n-1,n) 然后…这道黑题就解决了… 本人自己写了个checker欢迎取用
代码
#includebits/stdc.h
const int N2e6100;
const int mod1e97;
#define ll long long
using namespace std;
inline ll read() {ll x(0),f(1);char cgetchar();while(!isdigit(c)) {if(c-)f-1;cgetchar();}while(isdigit(c)) {x(x1)(x3)c-0;cgetchar();}return x*f;
}int n,m;
int num[N],x[N],y[N],z[N],k[N],tot;
inline void add(int a,int b,int c){tot;x[tot]a;y[tot]b;z[tot]c;num[tot]3;
}
inline void add(int a,int b,int c,int d){tot;x[tot]a;y[tot]b;z[tot]c;k[tot]d;num[tot]4;
}
void work(int n){if(n1) return;if(n4){add(1,2,3);add(2,3,4);add(3,4,1);add(4,1,2);return;}if(n1){for(int i1;in-3;i2) add(i,n-1,i1,n),add(i,n-1,i1,n);add(n-2,n-1,n);add(n-2,n-1,n);work(n-2);}else{for(int i1;in-4;i2) add(i,n-1,i1,n),add(i,n-1,i1,n);add(n-3,n-1,n);add(n-2,n-1,n);add(n-3,n-1,n-2,n);work(n-2);}
}
int main(){#ifndef ONLINE_JUDGEfreopen(a.in,r,stdin);freopen(a.out,w,stdout);#endifnread();work(n);//printf(%d ,n);printf(%d\n,tot);for(int i1;itot;i){printf(%d ,num[i]);if(num[i]3) printf(%d %d %d\n,x[i],y[i],z[i]);else printf(%d %d %d %d\n,x[i],y[i],z[i],k[i]);}
}
/*
1
281239
*/checker
#include cstdio//checker by wind_whisper
#include algorithmusing namespace std;
#define ll long long
const int N 1e6 10;
inline ll read() {ll x(0),f(1);char cgetchar();while(!isdigit(c)) {if(c-)f-1;cgetchar();}while(isdigit(c)) {x(x1)(x3)c-0;cgetchar();}return x*f;
}
int n,m;
int vis[900][900],x[5];
int main() {freopen(a.out,r,stdin);nread();mread();for(int i1;im;i){int kread();for(int j1;jk;j){x[j]read();if(j1) vis[x[j]][x[j-1]],vis[x[j-1]][x[j]];}vis[x[1]][x[k]];vis[x[k]][x[1]];}for(int i1;in;i){for(int j1;ji;j){if(vis[i][j]!2){printf(WA! (%d %d) have %d edges\n,i,j,vis[i][j]);return 0;}}}printf(AC!\n);return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911213.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!