HDU 5225 枚舉

題目鏈接:

hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5225

bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=580&pid=1002

題解:

數組a保存輸入

考慮當前位i,對于1<=j<i,使得x[j]=a[j],對于第i位,枚舉1<=x[i]<a[i],并且x[i]!=x[j](1<=j<i),這樣,對于i<j<=n的部分,任意排列都是滿足條件的

這樣,我們每次計算逆序對可以分為三個部分:

1~i-1的貢獻:

  計算出所有的a[j](即x[j])>a[k]的個數(1<=j<=i-1,j<k<=n)cnt1(可預處理出來)

第i位的貢獻:

  計算出所有的x[i]>a[k] (i<k<=n) cnt2

由上面兩部分得:1~i的貢獻:cnt12 =(cnt1+cnt2)*(n-i)!

最后考慮i+1~n的逆序對:

  在后n-i個位置中,有一半的排列方式中,第j小的數在第k小的數(j>k)的前面。共有(n-i)!種排列方式,所以對于一對數,有(n-i)!/2種排列方式中是逆序對。共有(n-i)*(n-i-1)/2對數,所有這類逆序對共(n-i)*(n-i-1)*(n-i)!/4對。

  即cnt3=(n-i)*(n-i-1)*(n-i)!/4

綜上:第i位的答案是cnt12+cnt3;

注意:

  cnt3=(n-i)*(n-i-1)*(n-i)!/4,這里的4要在取模之前處理掉!!!取模之前處理掉!!!取模之前處理掉!!!

  總共4天提交了11次,CE了2次,wa了6次,ac了3次,最后一次ac告訴我,三天前錯的地方就只有一個!除4沒有提前處理!!!

代碼:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 const int maxn = 100 + 10;
 7 const int mod = 1e9 + 7;
 8 typedef long long LL;
 9 
10 int arr[maxn], used[maxn];
11 
12 int n;
13 
14 LL cnt[maxn];
15 void pre_for_solve() {
16     memset(cnt, 0, sizeof(cnt));
17     for (int i = 1; i <= n; i++) {
18         cnt[i] = cnt[i - 1];
19         for (int j = i + 1; j <= n; j++) {
20             if (arr[i]>arr[j]) cnt[i]++;
21         }
22     }
23 }
24 
25 LL fac[maxn], fac2[maxn];
26 void get_fac() {
27     memset(fac, 0, sizeof(fac));
28     memset(fac2, 0, sizeof(fac2));
29     //求1*3*4*...*n
30     fac[0] = 1, fac[1] = 1, fac[2] = 1;
31     for (int i = 3; i < maxn; i++) {
32         fac[i] = fac[i - 1] * i%mod;
33     }
34     //求1*2*3...*n
35     fac2[0] = 1;
36     for (int i = 1; i<maxn; i++) {
37         fac2[i] = fac2[i - 1] * i%mod;
38     }
39 }
40 
41 void init() {
42     memset(used, 0, sizeof(used));
43 }
44 
45 int main() {
46     get_fac();
47     while (scanf("%d", &n) == 1 && n) {
48         init();
49         for (int i = 1; i <= n; i++) scanf("%d", arr + i);
50         pre_for_solve();
51         LL ans = 0;
52         for (int i = 1; i <= n; i++) {
53             for (int x = 1; x<arr[i]; x++) {
54                 if (!used[x]) {
55                     //cnt1
56                     LL sum = cnt[i - 1];
57                     //cnt2
58                     for (int xx = 1; xx <= n; xx++) {
59                         if (!used[xx] && x>xx) sum++;
60                     }
61                     //cnt12
62                     sum = sum*fac2[n - i] % mod;
63                     //cnt3
64                     LL tmp = fac[n - i] * (n - i)*(n - i - 1) / 2 % mod;
65                     //cnt12+cnt3
66                     sum = (sum + tmp) % mod;
67                     ans += sum;
68                     ans %= mod;
69                 }
70             }
71             used[arr[i]] = 1;
72         }
73         printf("%lld\n", ans);
74     }
75     return 0;
76 }

?

轉載于:https://www.cnblogs.com/fenice/p/5406330.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373205.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

河南上oracle客戶,解決Oracle監聽服務報錯

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓如果只是本機的訪問 sqlplus system/manager這樣是沒有問題的。但是如果使用 sqlplus system/managerorcl的時候卻會報ora-12514的錯誤。解決方法&#xff1a;1. 打開D:\oracle\product\10.2.0\db_1/network/admin/listener.ora文件…

【BZOJ2073】[POI2004]PRZ 狀壓DP

【BZOJ2073】[POI2004]PRZ Description 一只隊伍在爬山時碰到了雪崩,他們在逃跑時遇到了一座橋,他們要盡快的過橋. 橋已經很舊了, 所以它不能承受太重的東西. 任何時候隊伍在橋上的人都不能超過一定的限制. 所以這只隊伍過橋時只能分批過,當一組全部過去時,下一組才能接著過. 隊…

運行時vs編譯時類路徑

這確實應該是一個簡單的區別&#xff0c;但是我一直在回答有關Stackoverflow的許多類似問題&#xff0c;并且經常有人誤解此事。 那么&#xff0c;什么是類路徑&#xff1f; 應用程序所需的一組所有類&#xff08;以及帶有類的jar&#xff09;的集合。 但是有兩個或實際上三個不…

Unity3d 實現頂點動畫

在今年GDC上發現一個非常有趣的演講&#xff0c;叫做Animating With Math&#xff0c;遂實現之&#xff0c;是講述頂點shader動畫的&#xff0c;舉了幾個經典的例子&#xff0c;但是講者并沒有給代碼&#xff0c;而是像虛幻引擎那樣的節點&#xff0c;這樣更加清楚明了之前博主…

php codeigniter ext,php – 私有服務器上CodeIgniter不正確的系統路徑

上傳到服務器的codeigniter項目給我以下錯誤.Your system folder path does not appear to be set correctly. Pleaseopen the following file and correct this: index.php它在當地運作良好在000webhost.com托管.When uploaded to private server of parallels it gives the a…

對于表單的一些想法

表單 <form id"" name"" method"get/post" action""> 其中get提交長度有限制&#xff0c;并且編碼后內容在地址欄可見&#xff0c;post與其相反。 </form> 文本輸入 文本框<input type"text" id""…

REST端點,可使用Apache Camel進行集成

REST是一種用于組織資源的體系結構樣式&#xff0c;當應用于基于HTTP的服務時&#xff0c;REST可以構建無狀態的&#xff0c;解耦的&#xff0c;可伸縮的服務。 HTTP方法&#xff0c;HTTP標頭和mime類型都允許開發人員實現REST樣式。 諸如Jersey和Fuse Services Framework&…

Appium+Python API相關知識了解

首先&#xff0c;要先了解&#xff0c;官方Appium API // https://testerhome.com/topics/3144 剛開始的時候&#xff0c;沒有看官方API&#xff0c;然后在網上瞎找學習資料&#xff0c;發現python相關的很少&#xff0c;看了API才知道&#xff0c;就是selenium webdriver的定位…

JSON用于多態Java對象序列化

長期以來&#xff0c;JSON已成為客戶端和服務器之間各種數據序列化的事實上的標準。 除其他外&#xff0c;它的優勢是簡單和易于閱讀。 但是&#xff0c;簡單起了一些限制&#xff0c;我今天要談的其中一個限制是&#xff1a;存儲和檢索多態Java對象。 讓我們從一個簡單的問題開…

linux 命令分類,常用linux 命令分類整理(篇一)

工作中接觸linux時間也不算短了&#xff0c;不同于Windows的圖形化操作&#xff0c;使用linux幾乎百分之九十五的情況是在命令行下過日子&#xff0c;過去的兩年里&#xff0c;零零碎碎整理過一版自己工作中涉及到和學習過的命令(不過常用的只有三十個左右)&#xff0c;思前想后…

考研復習策略

考研復習是一個不容易的過程&#xff0c;有好的策略事半功倍&#xff0c;以我曾經失敗的教訓和成功的實踐給出了我認為不錯的策略&#xff0c;只要能做到&#xff0c;我相信一定能考研成功。 院校選擇&#xff1a;985院校在選擇考研院校是有優勢的&#xff0c;院校考慮的因素有…

js中的this指針(二)

在 js 中聲明并定義一個函數后&#xff0c;除了定義時傳入的形式參數&#xff0c;函數還會接收到 2 個附加的參數&#xff1a;this 和 arguments。 this 指針的值取決于調用時的模式。 當這個函數被保存為對象的一個屬性時&#xff0c;它被稱為“方法”。當一個方法被調用時&am…

使用AspectJ和Spring簡化了AOP

我最近開始研究面向方面的編程&#xff08;AOP&#xff09;&#xff0c;至少可以說使我興奮。 當然我很熟悉它&#xff0c;因為我看到它在Spring中用于事務管理&#xff0c;但是我從未深入研究它。 在本文中&#xff0c;我想展示通過AspectJ可以快速掌握AOP和Spring。 本文中的…

第一沖刺階段 工作總結 04

1、昨天我繼續我的任務&#xff0c;連接數據庫。 2、今天打算繼續做數據庫的連接。 3、遇到的問題&#xff1a;昨天在數據庫連接時&#xff0c;老是連接不上&#xff0c;顯示錯誤&#xff0c;所以今天打算接著弄。轉載于:https://www.cnblogs.com/zz0906/p/5422510.html

windows2012同步linux時間,Windows server2012時間同步NTP配置

遇到經常服務器時間無法同步&#xff0c;可以自己建立一臺時間同步服務器&#xff0c;NTP配置如下&#xff1a;一、服務端配置 (Ntp服務器&#xff0c;客戶端將根據這臺服務器的時間進行同步)1、微軟鍵R鍵&#xff0c;進入“運行”&#xff0c;輸入“regedit”,進入注冊表2、 H…

反差萌

反差萌 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 0 Accepted Submission(s): 0 Problem Description有2N個人&#xff0c;每人有個萌值Mi(1<i<2N)。 要求將他們分為N對&#xff0c;使得反差值之和…

Java EE 6示例– Galleria第2部分

您可能在最后一篇Java EE 6 Galleria示例帖子中關注了我。 第一個是基本介紹。 第二個是關于在最新的GlassFish上運行它。 有人提到RedHat&#xff0c;我們應該研究將這個示例從GlassFish中移除。 很好;&#xff09;感謝您的好主意。 這正是我們今天要做的。 我將把Galleria示例…

suggest

http://lovebeyond.iteye.com/blog/941633轉載于:https://www.cnblogs.com/sunxun/p/5421251.html

linux的tar命令壓縮26g文件,linux如何使用tar命令大包壓縮進文件

linux如何使用tar命令大包壓縮進文件發布時間&#xff1a;2020-05-29 12:30:14來源&#xff1a;億速云閱讀&#xff1a;206作者&#xff1a;Leah本篇文章主要介紹linux中使用tar命令大包壓縮進文件的方法。內容比較詳細&#xff0c;文章包含了命令的使用示例&#xff0c;希望大…

與reCAPTCHA的Spring集成

有時我們只需要CAPTCHA &#xff0c;這是一個可悲的事實。 今天&#xff0c;我們將學習如何與reCAPTCHA集成。 因為主題本身并不是特別有趣和高級&#xff0c;所以我們將通過使用Spring Integration處理低級細節來過度設計&#xff08;&#xff1f;&#xff09;。 Google決定使…