Time of Update: 2018-12-05
這個題比較坑。。。。但是主要是一下三點:1:IP由四個整數跟3個‘.’組成。2:整數必須的0-255的範圍內,並且整數的位元是1-3。3:不能有除了數字和‘.'之外的字元出現。#include<cstdio>#include<cstring>#include<cctype>using namespace std;int main(){ //freopen("in.txt","r",stdin); char str[110];
Time of Update: 2018-12-05
還是比著葫蘆畫瓢,按照UVA439的思路,只是把二維的數組改成三維的,因為對u的計算馬虎了,、wa了6,7次,,55555555,太馬虎了。#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int dist[35][35][35],vis[35][35][35],q[50003],m,r,c;int dx[]= {1,-1,0
Time of Update: 2018-12-05
做的第一個歐拉迴路的題目,參考的一篇部落格。。。。。#include<cstdio>#include<cstring>using namespace std;int g[1010][1010],vis[55];int count,num[51],colornum,cnt,c;void dfs(int a){ vis[a]=1; cnt++; for(int i=0; i<51; i++
Time of Update: 2018-12-05
題意很簡單,輸入n,k,有k種小球,要拿n種,要求每種小球都至少要拿一種,很經典很直白的排列組合問題,就是高中學過的插空法,有n-1個空,插入k-1個隔板,有多少種插法。百度文庫中的例子:擋板的使用例20.10個名額分配到八個班,每班至少一個名額,問有多少種不同的分配方法?分析:把10個名額看成十個元素,在這十個元素之間形成的九個空中,選出七個位置放置檔板,則每一种放置方式就相當於一種分配方式。因而共36種。 組合數公示:c(n,m)=p(n,m)/m!=n!/((n-m)
Time of Update: 2018-12-05
比賽時做讀完這個題,感覺一般的類比過不了,就放過去了,結果發現就是個類比題,按照題目意思做就可以了,另外要注意n要開方,否則會逾時。#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n,m,digit[100];int ans;void comp(int a){ int aa=a;
Time of Update: 2018-12-05
給一個區間,每一個區間都有自己的價值屬性,選擇價值和最大的不相交的區間。方法排序+dp+二分尋找區間,最重要的是狀態轉移方程,dp[i]=max{dp[c]+a[i].v,dp[i+1]}; a是起點>=i的終點的結點,p[i]是i的價值。按照起點從小到大對a數組排序,然後從起點最大的點開始,對於每一個a[i],有兩種選擇,一是選擇這一區間,二是不選擇。如果選擇,那麼這時的總價值是dp[c]+a[i].v,如果不選擇,dp[i]=dp[i+1],#include<
Time of Update: 2018-12-05
比賽時想了倆小時都沒有想出來,當時只是想用dfs暴搜,好不容易寫出來了才發現用unsigned long long都存不下,沒想到其實找到規律大數乘法就行了。規律:2 3 7 43 1807
Time of Update: 2018-12-05
題意配上插圖很直白,但是由於資料量大,要最佳化,這個題是的線段樹的模板題,看了好長時間也沒看懂,學習別人的代碼,用離散化做的。 把所有區間端點離散到一條數軸上,用數組x[ ]存,(x[a]=b表示數軸上第a+1個點值是b)然後排序,去重(unique函數),剩下len個點。對於每一個區間,找到區間兩個端點在數軸上的位置a1和a2,用數組f[ ]標記,f[i]=j表示數軸上第i+1個點是海報j.
Time of Update: 2018-12-05
真是個奇葩的題目!卡了N次。 1.並不一定是連續的子串,這個題相當於從n個數中挑出合格數。 2.很容易逾時,我逾時的原因是用了 maxx=max(maxx,num);而換成 maxx=maxx>num?maxx:num;就不會逾時。
Time of Update: 2018-12-05
剛看到這個題時還以為是用動規求最長公用子列的方法做,其實只要一個for枚舉判斷迴圈的長度就可以了。想複雜了。。。。。。。。#include<cstdio>#include<cstring>#include<iostream>#define MAXN 500010using namespace std;int main(){ //freopen("in.txt","r",stdin); char a[MAXN],
Time of Update: 2018-12-05
還是讀題理解題意是個大問題,這個題告訴你不斷的告訴你一些區間,然後如果兩個區間(a,b)(c,d)滿足 c < a < dorc < b < d. 那麼這兩個區間就是連通的,如果區間1和2
Time of Update: 2018-12-05
比賽中我最大的失誤:輸入的兩個數字先是寬,再是高,而我沒有注意到,按往常先高後寬做的,一直到最後沒有AC,事實上思路是對的。 #include<cstring>#include<cstdio>using namespace std;int main(){ char c; int x,y,cas; scanf("%d",&cas); getchar(); while(cas--) {
Time of Update: 2018-12-05
Time of Update: 2018-12-05
這題資料量相對比較小,可以暴力打表解決。不過我這裡用數位dp 剛開始學數位dp,參考了別人的代碼。//2013-06-27-15.30#include <stdio.h>#include <string.h>int dp[7][3];//dp[i][0] 表示不存在不吉利的數字//dp[i][1] 表示不存在不吉利的數字,且最高位是2//dp[i][2] 表示存在不吉利的數字int bit[10];void init(){ dp[0][0] = 1;
Time of Update: 2018-12-05
動規,求非連續的單調遞增的最長子序列的長度。 狀態轉移方程:d[i]=d[a]+1,如果num[a]<num[i]&&0<=a<=i,否則d[i]=1。一開始以為否則d[i]=d[i-1],這樣在輸出時是錯誤的,比如6008 13006000 2100500 20001000 40001100 30006000 20008000 14006000
Time of Update: 2018-12-05
Time of Update: 2018-12-05
Problem DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1], a[K + 1] = b[2], ...... , a[K + M -
Time of Update: 2018-12-05
這個題想了有兩天時間。。。。。。。。智商,IQ,,,,,,,,,,,,,,,,哎,,看了學姐的部落格,又研究了一下,下面這段話是她部落格中的:
Time of Update: 2018-12-05
題目連結 大概題意是有n個男的n個女的(原諒我這麼說,我是粗人),給你一個n*n的矩陣,第i行第j列表示第i個女(男)對第j個男(女)的好感度,然後要安排n對相親,保證都是正常的(無搞基百合之類的),然後求怎麼安排能使好感度和最大,求出最大值。 開始試了純暴力的方法,時間複雜度是n!果斷逾時#include <iostream>#include <string.h>#include <algorithm>using namespace
Time of Update: 2018-12-05
雖然結果比我們預期的好一些,拿了銀牌(本來感覺只能拿銅牌),但感覺還是很弱。 我們只A了三個最水的題目。 開始確實有些失策,晨晨看了第一題(給出等邊三角形的兩個點,計算第三個點),一道簡單的計算幾何,然後他就敲,40分鐘還沒搞定,我們沒有考慮到我們有個計算幾何的大牛成成部落格,失策,他雖然敲代碼的速度很慢,但效率極高,一上來就替我們A掉了第一題。感覺因為這個我們要浪費30多分鐘。 然後晨晨很快又A掉一題,兩個一A,我們的名次排在銀牌的前列。