日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

Input

輸入文件第一行包含一個正整數 k。之后是 k 組測試用例。 每組測試用例的第一行為一個整數 n。接下來 n 行,每行 n 個以空格隔開的數,用來 描述棋盤的初始狀態。

Output

輸出文件包含 k 行,如果第 i 組測試用例輸入的初始局面可以通過有限次操作達到目 標狀態,則輸出”You still have a chance.”否則輸出” You are destined to be single.”(均不含冒號)

Sample Input

2
3
1 2 3
4 5 6
0 7 8
3
1 2 3
4 5 6
0 8 7

Sample Output

You still have a chance.
You are destined to be single.

Data Constraint

對于 30%的測試數據n = 3, k ≤ 10
對于 50%的測試數據n ≤ 10, k ≤ 10
對于 70%的測試數據n ≤ 30, k ≤ 10
對于 100%的測試數據n ≤ 100, k ≤ 10

Solution

  • 這題……總之一句話——亂搞。

  • 首先把矩陣“拉開”變成一條鏈,可以發現,是否成功與該序列的逆序對數有關。

  • 由于左右交換其相對順序不變,上下交換改變了 N-1 個數,而 N 為單數。

  • 所以當逆序對數為單數時不可行、偶數時可行(腦補一番即可)。

  • 我用權值線段樹處理出逆序對。(或用樹狀數組、歸并排序等)

Code

#include<cstdio> #include<cstring> using namespace std; const int N=101; int ans; int a[N*N],f[N*N*4]; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } inline void insert(int v,int l,int r,int x) {if(l==r){f[v]++;return;}int mid=(l+r)>>1;if(x<=mid) insert(v<<1,l,mid,x); else insert(v<<1|1,mid+1,r,x);f[v]=f[v<<1]+f[v<<1|1]; } inline void query(int v,int l,int r,int x,int y) {if(l==x && r==y){ans+=f[v];return;}int mid=(l+r)>>1;if(y<=mid) query(v<<1,l,mid,x,y); elseif(x>mid) query(v<<1|1,mid+1,r,x,y); else{query(v<<1,l,mid,x,mid);query(v<<1|1,mid+1,r,mid+1,y);} } int main() {int k=read();while(k--){int n=read(),m=ans=0;memset(f,0,sizeof(f));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int x=read();if(x) a[++m]=x;}insert(1,1,m,a[1]);for(int i=2;i<=m;i++){insert(1,1,m,a[i]);if(a[i]<m) query(1,1,m,a[i]+1,m);}if(ans&1) printf("You are destined to be single.\n");else printf("You still have a chance.\n");}return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。