這次考試多多少少還是表現了自己在一些能力的缺失,還是太容易不審清楚題目就放開去做了,這一點不好,比如今天第一題與第三題,第一題真的水,但是自己卻因為水而想的過於簡單,直接就爆0了,血的教訓,第三題是因為自己沒有合理地估計答案範圍,貪心出來了,但是卻少開了long long 導致直接只有40分,改為long long後滿分,所以還是得好好反思啊;
第一題
設乙個含有 n 個數的序列的優雅度為滿足 ai< ai+1(1≤ i < n) 的 i 的個數。現在給出乙個含有 n 個數的序列,小 x 想要將這 n 個數調整順序,使得新序列的優雅度最大。同樣喜歡優雅的你,能否求出這個最大的優雅度
呢?輸入格式:
第 1 行:乙個整數 n
第 2 行:n 個整數,表示原始序列
輸出格式:
輸出 1 個整數,為新序列的最大優雅度
樣例輸入
5 1 3 2 4 1
樣例輸出
3ac思路
直接上**吧
**
#include
#include
#include
using
namespace
std;
int n;
int sum=0;
int a[100055];
int main()
cout
<第二題
如果乙個無自環無重邊無向連通圖的任意乙個點最多屬於乙個簡單環,我們就稱之為仙人球。所謂簡單環即不經過重複的結點的環。現在,小 z 有一張仙人球圖,他想知道兩個點之間不同的非複雜路徑的條數。這裡複雜路徑指的是經過某條邊至少兩次的路徑,兩條路徑不同當且僅當它們之中的邊不同。這個問題太難了,所以小 z 想要請教請教你。當然,為了不讓你特別尷尬,你只需要求出條數 mod 1000000007 的值即可
輸入格式:
第 1 行:兩個整數:n、m,分別代表仙人球圖的點數和邊數
第 2~m+1 行:每行兩個整數 xi、yi,表示 xi 和 yi 之間有一條邊
第 m+2 行:乙個整數 k,表示詢問個數
第 m+3~m+k+2 行:每行兩個整數 ai、bi,表示小 g 的詢問
輸出格式:
輸出 k 行,每行乙個整數,為 ai 到 bi 的不同的非複雜路徑的條數 mod
1000000007 的值。
樣例輸入
10 11
1 2
2 3
3 4
1 4
3 5
5 6
8 6
8 7
7 6
7 9
9 10
6 1 2
3 5
6 9
9 2
9 3
9 10
樣例輸出
2 2
2 4
4 1
樣例解釋
畫圖易看出詢問 1、3、4、6 的答案;詢問 2 有兩種方案:3->5 和
3->4->1->2->3->5 , 這 裡 應 注 意 3->4->1->2->3->5 和
3->2->1->4->3->5 是同一條路徑;詢問 5 同理。
ac思路
這道題一看就知道是強聯通分量縮點建圖,然後求經過路徑上環的個數(起點終點也算),注意這是求兩點間而不是哪一點到哪一點的路徑,意味著連這個詢問都不是有向的!所以只要統計路上環的個數,再用快速冪乘一下就是了;
但是我們發現,如果一次次迴圈遍歷,絕對會超時,那麼就需要找lca求最短路就可以了,2的個數就是這兩個的2的個數減去2倍的lca的2的個數,但是我們發現,如果lca是個就環的話,會算不到那個環,所以還要判斷一下加回去;
**
#include
#include
#include
#include
#include
using namespace std;
int n,m,k;
int tot=0,head[200030],belong[200030];
long long shu[200030];
int biao[200030];
int zz=0,hh[200030];
int vis[200005];
ints=0,sum=0,top=0;
int dfs[200030],low[200030],stack[200030];
long long xian[200005],fa[200005];
struct node
e[400030],l[400030];
struct nn
q[400030];
int build(int f,int t)
int build2(int f,int t)
int tarjin(int u,int f)
else
if(biao[v])
low[u]=min(low[u],dfs[v]);
}
}if(low[u]==dfs[u])
top--;
belong[u]=sum;
biao[u]=0;
shu[sum]++;
}}int getfa(int u)
int yy(int u)
}vis[u]=1;
for(int i=head[u];i;i=q[i].nt)
l=l*l;
l%=10000007;
h=h/2;
}q[i].ans=sum;
if(i%2==1)q[i+1].ans=q[i].ans;
else
q[i-1].ans=q[i].ans;
} }
}int bb(int f,int t)
int main()
for(int i=1;i<=n;i++)
tarjin(1,1);
for(int i=1;i<=tot;i+=2)
}memset(biao,0,sizeof(biao));
memset(head,0,sizeof(head));
cin>>k;
tot=0;
/* for(int i=1;i<=n;i++)
coutyy(1);
for(int i=1;i<=k*2;i+=2)
//真的有些工業。。。
第三題
雖然說是dp,其實很水,貪心就過去了,所以就不寫了。。。。。
11月03日解題報告
今天的考試應該還算在狀態的吧,第一題雖然在lemon上面只有30分,但是在洛谷上是a掉了,emmm 雖然是這樣但還是要注意不要開太大才是,畢竟不怕一萬就怕萬一嘛 還是要注意一下就是 題面 從前有一棵樹,確定乙個根節點,最大化所有點深度之和 輸入 第一行n 接下來n 1 行表示樹的每條邊 輸出 乙個整...
11月04日解題報告
今天考試情況不好,策略上還存在問題,記憶體定義的問題又出現了,看來還是不能放鬆啊,第一題沒有開long long 直接從80掉到20,第二題超記憶體本來可以搞到的35分直接爆0,啊 本來可以有100多分的,看來還是自己能力有欠缺啊,還是要多多向大佬學習,好好改正才是,至於解題策略,還是要力求第一題要...
11月06日解題報告
今天考試感覺在狀態上還可以,但是覺得還是出現了一些心態上的問題,尤其是到後面改第二題的時候,整個人都是一種比較方的狀態,這樣可不行,還是要好好調整心態才是,emmmm,離考試也沒幾天了,要好好加油啊 題面 小a教室的牆上掛滿了氣球,五顏六色,小朋友們非常喜歡。剛一下課,小朋友們就打算去搶這些氣球。每...