Delete Edges
生活随笔
收集整理的這篇文章主要介紹了
Delete Edges
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Delete Edges
題意:
給出一個n個點(diǎn)的完全圖,刪一些三元環(huán)使得邊數(shù)<n
輸出所刪的三元環(huán)
3<=n<=2000
題解:
肯定是結(jié)論題,但是我不會。。
結(jié)論:x+y+z=0(mod n)1<=x<y<z<=n所有解即可
證明過程可以看看下面博客講的
講解1
講解2
我覺得當(dāng)個結(jié)論,萬一之后用到
代碼:
#include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<string> #include<vector> #define Debug(in) cout<<#in<<"="<<(in)<<endl #define mm(a,x) memset(a,x,sizeof(a)) #define mkp(a,b) make_pair(a,b) #define all(x) x.begin(),x.end() #define sz(x) (int)x.size() #define sync std::ios::sync_with_stdio(false);std::cin.tie(0) #define endl '\n' using namespace std; typedef long long ll; typedef pair<int,int> pii; const int inf=0x3f3f3f3f,mod=1e9+7; struct node{int x,y,z; }; vector<node>res; int main(void) {sync;int n;cin>>n;for(int i=1;i<=n;++i)for(int j=i+1;j<=n;++j){int k=((n-i-j-1+n)%n)%n+1;if(k<=j) continue;res.push_back({i,j,k});}cout<<sz(res)<<endl;for(auto x:res) cout<<x.x<<" "<<x.y<<" "<<x.z<<endl;return 0; } //考慮邊界!!! //Think TWICE, Code ONCE!總結(jié)
以上是生活随笔為你收集整理的Delete Edges的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hopping Rabbit
- 下一篇: 麻痹性斜视症状有哪些