2019 ICPC上海站 网络赛 部分题解

2020icpc上海站(正式赛) 部分题解 目录 B. Mine Sweeper II 大致题意: 思路: 代码: D. Walker 大致题意: 思路: 注意: 第一种: 第二种: 第三种: 代码: I. Sky Garden 大致题意: 思路: 代码: G. Fibonacci(正宗签到题) 大致题意: 思路: 代码: M. Gitignore 大致题意: 思路: 代码: B. Mine Sweeper II 大致题意: 给你一个n×m的矩阵,X代表雷,.代表没有雷。扫雷的游戏。为X. 阅读详情

L. Digit sum

打表。

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=100010;
using namespace std;
ll a[1000010][12];
ll solve(int n,int b)
{
    ll ret=0;
    while(n>0)
    {
        ret+=(n%b);
        n/=b;
    }
    return ret;
}
int main()
{
    for(int i=1;i<=1000000;i++)
        for(int j=2;j<=10;j++)
            a[i][j]=0;
    for(int i=1;i<=1000000;i++)
        for(int j=2;j<=10;j++)
            a[i][j]=a[i-1][j]+solve(i,j);
    int T;scanf("%d",&T);
    int TT=0;
    while(T--)
    {
        int n,b;
        scanf("%d%d",&n,&b);
        printf("Case #%d: %lld\n",++TT,a[n][b]);
    }
    return 0;
}

B. Light bulbs

思维题,不过不太好想。

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=100010;
using namespace std;
int a[2010];
int n,m;
int main()
{
    int T;scanf("%d",&T);
    int TT=0;
    while(T--)
    {
        scanf("%d%d",&n,&m);
        m*=2;
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&a[i]);
            if(i%2==0)
                a[i]++;
        }
        sort(a+1,a+m+1);
        int ans=0;
        for(int i=2;i<=m;i+=2)
            ans+=(a[i]-a[i-1]);
        printf("Case #%d: %d\n",++TT,ans);
    }
    return 0;
}

 J. Stone game

倒着完全背包。

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=100010;
const ll mod=1e9+7;
using namespace std;
int n;
ll a[310],ans,sum;
ll dp[150010],p[310];
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        mem(dp,0);
        mem(p,0);
        dp[0]=1;
        ans=0;
        sum=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%lld",&a[i]),sum+=a[i];
        sort(a+1,a+n+1);
        p[n+1]=0;
        for(int i=n;i>=1;i--)
            p[i]=p[i+1]+a[i];
        ll p1=(sum+1)/2,p2;
        for(int i=n;i>=1;i--)
        {
            p2=(sum+a[i])/2;
            for(int j=p1;j<=p2;j++)
            {
                if(j<a[i])
                    continue;
                ans=(ans+dp[j-a[i]])%mod;
            }
            for(int j=p[i];j>=1;j--)
            {
                if(j-a[i]>=0)
                    dp[j]=(dp[j]+dp[j-a[i]])%mod;
                else
                    break;
            }
        }
        printf("%lld\n",ans);
    }
    return 0;
}

D. Counting Sequences I

参考博客:https://blog.youkuaiyun.com/yzsjwd/article/details/100867148

暴力打表。

打表代码:

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
using namespace std;
ll f[3010],N,ans;
ll invf[3010],cnt[6010];
ll pow_mod(ll a,ll b)
{
    ll ret=1;
    while(b>0)
    {
        if(b&1)
            ret=(ret*a)%mod;
        a=(a*a)%mod;
        b>>=1;
    }
    return ret;
}
void init()
{
    f[0]=1;
    f[1]=1;
    for(int i=2; i<=3000; i++)
        f[i]=f[i-1]*i%mod;
    for(int i=1; i<=3000; i++)
        invf[i]=pow_mod(f[i],mod-2);
}
/*
d:当前序列中非1的数的个数
p:序列中元素的最大值
n:非1元素最多有多少个
sum:当前和
prod:当前积
*/
void dfs(ll d,ll p,ll n,ll sum,ll prod)
{
    ll t;
    if(d==n)    //非1的数的个数已经达到了
    {
        if(N>13)
            t=N-13;
        else
            t=0;
        if(sum+t==prod) //如果和等于积了
        {
            ll x=f[N];
            x=(x*invf[cnt[1]+t])%mod;
            for(int i=2;i<=6000;i++)
                x=(x*invf[cnt[i]])%mod;
            ans=(ans+x)%mod;
        }
        return ;
    }
    if(prod>6000)
        return ;
    for(int i=p;i<=6000/prod;i++)
    {
        cnt[i]++;
        dfs(d+1,i,n,sum+i,prod*i);
        cnt[i]--;
    }
}
int main()
{
    freopen("output.txt","w",stdout);
    init();
    f[0]=1;
    invf[0]=1;
    mem(cnt,0);
    cout<<1;
    for(N=2; N<=3000; N++)
    {
        ans=0;
        ll t=min(N,1ll*13);
        dfs(0,1,t,0,1);
        cout<<","<<ans;
    }
    return 0;
}

AC代码:

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=100010;
using namespace std;
ll ans[3010]={1,1,1,6,12,40,30,84,224,144,135,715,627,1326,1274,420,480,2720,5202,16530,3800,2590,924,16951,552,9300,68575,82134,21168,24360,165300,3720,45632,199584,2244,22015,2520,29304,77330,57798,398320,1285760,4255062,81270,41624,48510,97290,1479889,106032,11760,180075,132600,3254004,429936,1267866,38115,2293060,20948298,40667106,299425,208860,2325320,344162,7394058,7636608,82875520,8580,305118,4013836,171258,173880,11850965,70320672,1866318,14396330,4872900,17100,895356,468468,499122,252800,20509200,7012845,1391827,578676,25229190,26418340,211474989,784847184,497121123,15339150,49140,393484,1972158,821748,2924575,53598240,55872,45638306,15086610,753390000,50040450,417498852,18788230,1649648,1168440,1202040,63736369,2461428,68719050,162308630,564673856,24864,5916680,12882,83753235,89751520,869785371,124424274,827222264,916501173,142157979,2679303,3661464,39416252,40718500,31500,4096512,135201152,132178560,5399940,191928100,764103895,303683688,755446880,403450390,878166801,7620488,63013698,181404174,188003060,1490370,40044,7198477,2965248,73807320,222581380,897305600,3241644,486312756,838638473,668099857,87240552,277345965,3652110,279481895,569777520,909958004,17438618,102598248,6080160,331917600,704201656,12886128,6522608,11108130,856576600,6916639,773139192,393768648,453484704,5029110,10088316,597113652,30102,2755725,479740800,6824611,490800468,6727676,453731610,810770040,174453052,127995139,76742980,579462920,6400260,197469008,621276832,63131059,3519180,655161515,315686842,28570176,246855106,708291090,7567560,468395047,15329358,7998606,803840600,57548093,624161197,809432154,689858065,197982428,630455180,357065367,320910720,936082576,87780,963476640,74767476,379431305,9754548,380663735,10031040,156955682,25639852,20815512,5347980,198166963,886901487,225570529,242056473,501024386,533868153,603037815,920524624,245275990,718210895,212520,12540528,543375195,461026027,32361615,540843679,392427831,168324999,208713599,700359503,28225920,380401421,67909312,81646278,630637420,1293931,889031838,949548624,259817649,549967486,898626104,686911972,56583450,24419560,817851652,16842240,891525490,17040642,862442760,43568980,561311662,17984466,437032941,809577120,18959160,388056851,262408964,560202110,38713404,657023276,821728799,818922105,190585256,635328541,948130242,157183696,704797050,309867908,277830386,51523419,134870012,749747645,184738215,448245518,318027562,275886879,333883532,395070958,48524256,475894014,49114980,236370917,784569639,979573108,921821882,773970379,110038107,105145128,235499832,26910000,64267522,208632348,110356236,214584532,461333294,560051640,903997718,590609103,218012655,780213045,692419287,439786580,279209594,383153779,93074310,814843017,988535918,205584668,145543973,54218796,420841210,489026136,101531951,476789328,74482200,664404815,556029323,35179968,106293320,217140,72747180,127035152,215692694,111253064,388964221,61191507,848268878,659514248,487518216,265388569,771127213,748161940,681164077,541338475,70311036,85182422,882943718,804827001,59357303,21376250,43611750,43737408,807625711,44111586,713948361,860057995,984432333,137008032,883198273,305220824,581376307,283279826,758860975,670467540,619538990,874650824,656833322,504482780,851303417,791600048,321615528,207289111,969710687,224897578,969569932,975009846,12704182,147213128,181988425,550724752,138047730,536076394,19423120,474768550,534347422,277774654,873715625,305094536,448946783,855709629,60538530,209522824,693786590,927479183,18760111,123571800,467930686,548061617,339961478,377197825,929122116,510292238,260505648,898560496,606820688,73823363,167968493,753754165,643514715,617757502,468134774,139190904,429596203,499872283,804316856,158784988,500436898,330820304,833779290,309908865,798032191,19144628,330236216,227597688,791835097,548987726,78035958,933622580,464458901,606535622,336637759,837971159,466100351,501035131,722499131,998404247,40098260,401772714,106748090,42495200,86735880,877149,383556205,196692,263769300,896584125,250541410,706926755,322185268,663522473,595974710,915622764,342038221,55675413,585447394,719165182,809889789,569918083,97217522,72682038,663560186,103370673,909754905,634643969,791101815,701424289,688651692,481800017,873272360,331481464,944159323,607048176,450140201,307580852,633067279,507471325,680972531,932698257,847108034,329935200,841861733,931230222,86653572,298186557,317306433,382511484,941206421,998651093,269587042,223414638,901347339,381257681,299192826,716507553,865165128,88498570,843173027,268662409,919135809,671588778,222222296,816798687,794783532,382042584,329002916,363573101,606409032,111669003,820596994,868832953,599417016,293953140,806616576,764889370,63761101,853583648,276375792,65522872,998575523,883199315,676000997,149580165,348663191,678678481,255020512,485229036,109282577,448477583,149990544,76877264,304513527,150568236,655124776,151988148,534097455,270093859,221569978,619992276,544538574,150812922,389192157,202124556,637466796,904314865,928886810,154958903,986123802,493231088,174281319,670239135,620110933,863183249,934326167,819168264,7982499,709372942,504356707,254984246,388526852,40220645,796202131,485121798,860777029,845478466,228206320,616806504,373998577,548461368,270464656,47395831,356441469,376758112,144582797,511930601,460865219,191102400,759228371,706166393,656083619,483915676,233711788,334721218,366744996,256254932,939464893,820630126,744833546,727795522,280642674,886252016,350529523,205557637,252080132,562214776,526787415,474826371,467447759,426265164,903873639,814861053,652325400,373440437,687691947,369572971,323140786,69302116,43642259,660284932,778084009,340284840,31054896,788787168,688336753,145029237,985504152,789054774,962884714,395571569,233780504,168115571,494552394,67447035,202266088,798703541,395891121,135046153,403981400,159247666,143493859,798227695,55224865,357009419,454515132,150274489,178570260,210983813,498819674,361042201,426347031,720670392,170511627,29604571,941026002,196725873,117997015,558944842,993648602,775173055,482897329,216451053,588351508,69968544,839465698,267745819,497919246,707866547,515002033,457109086,791806544,756143730,501423063,621969865,65435703,1760928,294520520,295850520,171480964,75037306,746533086,735283669,993956457,761593809,576182646,29796753,307091250,750194451,127938676,113624041,684683623,559264596,910352698,632570004,922079143,700674648,107768085,12803389,315230643,69719392,684737497,713196061,500895558,489199334,118998513,154225376,601094140,605921272,635704768,226235052,487165332,520733089,660828412,510296466,70596855,87989882,814956472,989764782,509684340,105100373,56635131,878945228,75750103,889601833,805395626,1018164,550074525,591104443,507686325,106832893,121280127,252901789,754281360,55124492,539232854,378979248,37596279,871423269,46434673,303502248,831327476,682341354,984281639,518822386,209012379,373818194,280886837,200784330,835954781,952391185,708363654,854813534,31991942,892048110,573477097,726697464,481008185,838200926,184369893,235370739,451975003,442549874,346154363,664956781,751500417,766800077,612475552,603329623,900187875,480110290,124363866,359437181,75806737,428987741,280183261,255034614,138883350,744685088,284786294,118056680,857162814,86710025,111734528,902382760,671383828,390551308,330049507,268637353,432803347,734228779,52835114,1215240,794111495,169789549,974873498,2455488,7533512,434190168,275570612,631324980,694449373,796264418,520361981,566911084,141925319,310049960,259421112,389584998,465612970,741650255,15626799,817985602,955298916,373067244,749792253,519072048,709957667,352435327,307806691,103532642,931274568,55054546,508958223,334183064,784907041,514706626,765771029,654170840,327024525,265119102,997643052,198350910,662827123,380189614,818560301,792090648,648806412,565603500,370645480,697510117,191781902,714187644,68919578,775673314,802156026,327313830,981974078,353487139,356667790,612781218,123314900,720381882,234631072,725805855,662954402,249842351,851066342,815392996,425744774,876287207,974652300,945822500,514375749,436698245,389982090,638765679,953468095,254442313,374933677,546717955,718111373,785286672,40983236,854513483,869334736,706111287,760755468,477779463,106101468,555653287,467970542,448928923,244409126,132202982,45032659,183576156,723789448,331709380,646468723,7618074,634316500,507395929,739563824,358168213,307141879,906239919,383552291,603072554,927872338,992793541,106993994,959368012,239359520,958645519,97766556,731202273,524097717,897101113,696767626,119789136,506989682,454761793,260903034,924524905,436819382,460758311,350337118,742856580,632420149,647647472,119844310,736127169,625054057,951065689,523298143,55071410,495972022,948411706,661284847,543872197,327608264,717372706,816254369,365398585,849672317,892787726,91534997,561260042,200048155,615104795,893042933,398432214,686351665,720195287,512767529,354028115,730207706,758504201,989913501,338764389,727411977,595038002,181853274,396483757,432243270,485643332,877319158,140454505,745000975,611498115,395296858,292419313,191311267,853411926,446691238,580623351,397273986,740302027,954140674,368525042,496213255,99729633,819445721,223561524,791028285,725818523,391350585,1864380,471961435,460468174,110523007,188242539,601916944,869058584,154915878,373400807,566756325,525860165,283085347,96330146,735389956,947087381,931924086,914515318,998942683,972426722,825933663,917666394,34729893,639560602,6392083,997565381,357134307,688692967,810741123,779912339,146525680,451628321,76797290,548922635,837490667,170994838,423345877,129090457,818477932,59887299,921448552,696661704,376243808,23624929,593822289,7631378,669643487,457636516,966360400,169535581,221258907,804640886,946579310,759818681,502069767,488732898,189768562,874303301,139105262,74788345,342563828,814987229,518441160,486616097,264157861,781755606,220233735,293262794,47192702,744589011,502087245,644009612,698703472,933094451,437047482,973869717,353009606,311989248,891410657,574727666,112067918,586375307,881918259,178185268,777795697,383723936,833629481,705150479,74265245,146538580,8917416,364089236,603597984,669065439,56801053,340987474,491430879,167637977,795083390,514321126,628034835,73435079,331767,587868050,925257726,296025157,4583880,94548187,27129928,687485123,153476345,971505419,240975411,655010663,784968058,730969296,549515837,190402315,812520333,837233823,580225672,214692760,968382817,349551304,872030955,913289980,727860843,904421703,525699547,718377743,86469381,290404560,349078279,893847202,18047457,532613704,687247627,2426604,48290411,565094863,952919356,929554956,331258640,442063720,109848068,546344621,689175476,639256606,61256976,666659774,900152643,609635265,59764974,747453865,82276239,608996864,188466878,754517941,873055451,767056914,376133080,452677803,236489791,894446733,124367604,798555100,929966018,218211120,159167283,832017848,764662630,12452848,291468549,310525484,224341245,461404668,171786431,424308103,659875206,914488331,233375053,88095382,705038270,127859679,727692572,845393508,275751707,924561422,821163746,823207036,198946905,361117238,855245947,882535045,661613930,922227576,132563739,700201660,134187592,378134320,206304426,647483758,446869221,537761316,836501507,737942573,101462914,254976945,984195498,820249000,513006904,883675686,557168210,450052408,525873517,546387405,452391975,919501853,832568757,15771841,484526551,175134775,16034822,211327375,330263119,617274503,691022710,7120151,858681594,335637869,433252481,458555250,651254990,663858506,194778510,921937639,458334254,851969973,369221056,832965539,224982723,278741460,208135475,527091615,13727746,933648460,979217271,977908109,699347534,605275061,680006844,138207385,476420524,454337834,432857762,329129493,249917198,635207838,925775672,319266038,887064863,955698465,800487244,890273204,197837460,772046625,448568903,994270983,2202083,337825364,314855310,571777590,100930605,804271258,896561440,209505045,636202604,654077994,354744867,654916048,892346636,900874886,875082407,820397405,744408326,319524142,857109769,825251278,139189036,740415394,734723593,549082845,449981465,682193071,264849052,548097428,256591101,904105174,216886060,546346517,925358843,354864453,722718671,321846273,425509709,550501155,887998324,242630205,341203401,567799310,945919477,234461536,992565773,532984267,706692878,477501163,907735581,385409880,24084117,152826686,535828167,505728432,576019572,637926206,63597142,486048180,175547747,204747271,448146096,457727918,488912075,108205956,810889345,741657960,989265235,90709325,667608082,363714689,842189216,938344764,621625602,73955312,150044362,114626882,431495595,507500775,572205175,382879956,114216690,806893429,210570498,455186137,425417333,386398714,596827545,263703787,703382548,761557694,277792423,862325960,812639623,493319930,395541306,568546355,292602262,842784527,988275384,5275735,9710626,591395332,275741918,827299964,84102555,794676041,449558369,968205208,118854753,217545063,638934535,577554378,445509020,359426758,531701358,413836019,645845897,478408830,210980547,484616283,736453663,134784663,230072569,594470544,199456481,687245914,944400397,367422508,502407246,327525248,2409329,637838117,460451360,620429823,385772555,444059169,663166708,905797888,150216305,925211932,967581856,856604826,633524252,818608774,779154260,351933796,241245687,539079581,380121579,358363358,656464946,744407036,445509866,623576335,552371119,243859757,767639129,916565394,780997900,345270688,45337896,365937901,918769991,737716077,872053942,745882925,304107437,742913162,152591197,504005602,745963069,339027008,648158708,356979055,251658644,350267449,218396195,528325581,853128591,61960438,934101045,545726740,164051638,318390731,344462276,628428015,941306094,416249377,403965815,124891583,493241663,719780684,704028812,738481155,477766621,480078395,205758213,788722302,940576196,530403854,644491372,147765447,730407129,526483058,839247469,953647876,230174645,738401499,252016089,839168584,318135333,691236099,522885642,57852387,665872925,610449631,335587637,38225843,873941520,860129357,411876821,650600889,78154329,249283617,234331961,768939567,213615420,941385655,948215702,330205876,110301667,511776193,237458114,833816311,732543873,332144563,824338191,344405298,255873062,268201855,388755074,530063844,725604699,437231399,767499657,412006069,727898630,959761288,368963259,753594261,941168673,895390098,324029172,223503548,123695774,708347793,234357695,276680917,874921399,808351598,185838366,689388859,374465797,188032072,909068155,8103993,921653969,110434802,23592891,863079363,530641790,745174775,398849683,982492459,30669775,460755580,676159524,466381915,171201376,490088863,626115977,339492394,260661008,808962706,783494263,757057702,650205840,671600850,395289600,268699433,200749052,760092115,854974626,617918852,146480360,367958301,665443459,651958596,591996333,529141385,103042755,635875078,229543266,975622787,990059255,526296735,124207077,779086258,127431824,478615557,194940896,549034158,838633292,630929695,992660528,179905595,797408180,286079740,54997013,531739658,160399507,533581146,669649060,567027529,834300318,782811285,834852547,268762765,673491579,752621948,181327100,987648234,994705061,935860549,48395022,549649238,26096245,67139606,533925322,615363850,889938131,470733890,13002602,532459537,409148235,584397893,586072331,858764587,427977500,110641909,831590950,906744401,917704525,342763113,428849488,998462639,578275833,51671902,834310940,843525388,170077969,421311707,774941292,372210264,957332890,938318941,756823220,249986665,281293021,190083027,500167713,567291252,587178315,300549645,806113912,516253563,55634069,401950511,317126622,369911780,652840113,995547002,333897128,746359351,76209238,839552484,118141423,241283438,751474087,203444846,32164240,638177450,547414034,894616496,106931614,637581208,52040668,331409981,670064014,759726278,373057342,728961125,398421321,600741147,664406486,873395333,828186101,682634524,599791867,210650856,704668342,771258344,593207903,637940973,832297357,711254335,228743345,561644275,741275954,152879080,765704746,886538877,264033059,769721022,452249881,765404529,263878981,529906201,424675564,123370262,862734196,275732613,108121357,168897336,745259944,275432564,804959304,921962888,725908689,337253841,190937005,954433122,319125904,951881672,279216420,978112731,790310060,418123021,341506955,879497486,439639234,309283317,811120551,5175526,502449372,515256688,579419243,229419994,995589181,866246760,26610876,516875986,37065936,507816804,365834308,441987874,965406799,366042511,245802532,264579631,651328115,533437999,978270999,902688496,948335674,938252023,548615466,866583655,192236829,469532833,608959286,829987660,98460012,350364548,353524134,273438762,751361525,104696494,724719530,635381352,873474376,24492933,870561443,890772582,64841777,188736251,708591998,434240511,586686106,995174017,919069658,422661660,989767876,779664326,568742428,555571170,331095961,743189129,679638082,173723643,795843190,843437031,191954921,164546533,709767378,530779693,951738508,37529444,830757701,851230860,336572181,464724213,806214991,103681548,482107178,779781178,568834211,828359381,794619755,119224858,144284441,221489584,217832265,409643065,666067174,17805710,847806650,884710707,79469595,650370309,416226143,460498390,964744198,772525458,823037564,978423245,642109060,291791327,887427390,691797252,460317501,245566383,305470990,87733481,353487672,824102564,991301856,711556084,531020430,720557952,844714453,491631445,63851524,434703155,2435425,790404246,904657164,438661023,151033395,396172161,418835087,206614697,457074720,608773629,264116201,223275367,245993799,496965931,565076367,537794619,367113924,252100958,709127314,955740165,717448530,994033575,401632962,479531706,771835736,582097172,974725684,120159476,176935535,370842860,230417041,443706478,623894274,125138058,847667397,965552842,503036584,238729727,771366596,846308038,385665487,144000504,971774721,862963782,676308938,306748904,214162181,798645022,965147303,221783444,968638180,596118398,613689375,440199970,326609542,200407677,188180453,311644091,437387952,492429919,295268147,207642414,387827252,387204044,286727804,992211167,801906940,182465008,717529343,109496137,56346212,817066611,722093165,278338119,125519775,339560430,95097088,954781013,606165034,440895227,323946877,322883952,204899821,242128720,987880142,420098921,37923330,958225089,122221704,772855662,688733852,719240677,623219519,368476454,826744655,121794566,580055217,21017408,58334458,723669214,646117361,919270103,713591804,414167117,749255488,387744086,481431314,778935000,765824383,99751371,290751602,99100808,745302997,150845735,285271048,640059268,72688131,885179308,563557137,627116239,467926228,154038981,855078908,239847057,224974902,122188560,630966900,948703110,111762527,643314729,458317020,347201947,12260974,290362454,634790741,326860120,762906451,189110897,144685453,338136139,486192267,542560718,390360006,768623878,555237875,200618633,411646662,640902819,375122720,859840755,926440334,983901029,644361167,557768887,471531181,839019911,492236151,302466426,619067868,105040990,331785240,925654069,57844772,692034765,48498242,173578244,330210638,604566249,943490380,769799859,66924496,614397810,483134411,548440861,611172651,182043044,836488615,267112763,36899421,170177389,284124493,209747550,646096654,66428152,640009911,417026703,204258590,680746748,368803537,249840809,924665621,411817689,558003974,349799126,315013999,572137860,120833284,174118387,790884748,611641624,245313746,493071659,149624586,26381110,755522217,21853784,220111412,180053444,457340982,886562009,173724526,951327622,926270785,220543246,980743241,758691577,520939772,920838631,205931308,939756328,127209836,49345476,427346061,157072463,788168698,789011320,387408827,805584922,520587768,344833484,944402100,505371045,858708031,721939765,123885123,181672954,984166396,544325554,902088524,63682305,743280884,98282317,705755871,446819467,514887133,787448645,217889683,121213294,427078898,708917990,878460076,455497803,188688702,32845539,148203353,739564502,962381246,730353844,350822169,300896832,593976448,58898711,876865498,803005309,104990357,367204649,502881890,125815409,111510829,435176333,509278129,501575299,39102238,823765969,946483679,306248971,708800537,662005514,323003352,262757830,660921811,609033158,806699587,376532152,653905608,771074077,403966670,699051879,751148442,667523617,293892043,216700826,475523317,611175855,349750403,397122770,600991650,811873949,490600655,56091305,341631112,7687611,644789227,306289630,385652175,51610979,146413842,345076831,318654777,659542972,358176183,728989702,403151556,135326157,485219462,322725678,893250857,199042878,42398970,225008067,20707686,910835055,281018401,869115498,560751993,570799146,186189152,82012912,446308901,116332513,407369447,439749755,803681666,423959206,967926299,802286977,315528585,643645200,264777346,571374721,133368312,389173633,899240221,174467132,412823343,21849670,366777395,337371546,824215722,407041089,766446890,426284226,309134906,45999942,585261605,689507865,546107746,961896000,636500332,135133533,295001698,981121543,310622632,646664316,853242302,286506103,830315517,164079343,157584893,98928198,714493736,846792037,118567936,524596615,742292678,718601928,882939162,530683041,82716066,419412605,241084210,127563843,496286870,168923909,497701150,64884037,907404815,412595578,243295012,64070595,847374357,108407193,285510730,105702210,512649952,586758748,761333635,579114732,580055349,965005046,650791737,33850971,119466849,550688638,140298310,717293427,712850525,100756288,810543135,246124914,863189769,337306457,249857916,531007670,139659082,866771448,97020004,662357536,105708199,767804835,532480484,350672723,866120656,377313835,961461578,714816787,888420842,562365416,793124261,676364684,535627784,345437779,588558905,947122281,185010198,122699228,448688298,401386588,769858791,158355617,702201105,877622978,489166721,851037457,113428131,164322101,711992816,296377603,126433807,180450232,146837392,607717358,563604593,356043954,922055014,319182365,174193926,377458326,18507492,143952738,823582808,911429426,440611855,182016880,489811390,453582279,501061568,265897023,242575754,590437149,701707491,368361266,873217515,206915966,477560642,195945276,800255933,146328848,238086060,64124447,568639082,825639698,37835610,459285599,405655713,264184088,811118450,771538314,758568653,67288752,442678232,513740510,249153131,631804884,745225615,303368839,92091573,907775472,192991161,236563759,25776285,131890473,21132408,847102938,149488348,148778253,843822831,163190499,283941706,842734246,29230259,744428930,144384672,350981976,369149228,499015910,998276706,923782806,583341467,887420440,547851984,944178640,925745128,259534405,676669256,21008387,595626741,795993673,687487400,878932432,262993325,132916880,288019935,303500548,798425037,967539431,130866909,690889743,2256339,47921417,167151952,172000018,569932621,181260821,854724929,615055120,990557991,184519647,696726312,165633744,18611998,94903228,108907137,784609625,46356688,111175813,95565207,921448284,965725965,629304430,34924296,21198028,797483283,212669536,976406737,352447176,218531740,655441606,771430154,792985102,270095956,395491706,631203998,141112477,129095841,713050733,361092102,582080861,989296009,765944610,449622199,562260454,60008778,924177229,730633959,531523490,305988364,137309655,467422290,59364172,245102202,884904070,851933726,8498945,363027638,478241543,376816288,647176824,900548916,714776422,398586738,754134414,949513695,812482309,738765334,96373561,456583815,778396146,824708228,169241669,18513247,248953188,866649542,925833075,879168660,686521069,294429425,678005040,225667101,476975131,563022008,257669221,359816064,964823152,949198453,942487694,550498060,149911444,265842716,848412399,712541894,262004030,990279140,397094833,385436353,349417395,343346366,793922093,505807774,206700717,923970484,617836626,654647686,92296771,656850619,106462179,332302661,395494094,300769295,416862903,250124878,328061056,363399471,89342190,996824166,110025828,493324057,340271519,515307727,500719764,296308480,375927426,99937293,739326961,171481824,603207978,317624308,824560460,718392046,473621824,658907409,120298672,935512512,957477156,550497051,314368608,79592957,735904230,947458707,97663817,516391131,936369964,201869156,148854868,105101392,757013867,579559607,867993522,590082342,654916098,232871119,497801638,795057605,879031953,20536976,984651426,417681904,618101543,827509797,22145237,558974756,571472687,729136028,934819037,408198760,660348706,490104187,672922042,265997754,160698662,665096775,199606210,738727709,902511005,738641098,951490713,170465881,791853629,603824480,869243557,874763267,794397707,547857170,653126256,846302493,774655222,599648854,236412620,912437371,32727778,554859775,25994353,271780454,292906854,378285222,233557402,751320564,529931475,371953160,533539382,463597568,470933499,916267699,929447279,645679550,928931634,594083681,892537734,388048241,839147883,340716716,799113275,600857249,293924167,868198295,556913221,912657133,120917217,870176863,96911369,456964969,969501857,96227060,137468292,12325728,844016408,51534403,656437267,868256084,200485713,568923513,439337409,852619174,634116035,356331473,644072860,608828254,679830843,408364825,819994273,708409577,33289493,729955094,596908384,552676290,804063672,642210283,87969249,139856655,573837082,585204162,709919080,62019450,690340904,134375538,239873992,248897451,344866625,929545102,553885732,378658393,844885049,839814934,567317169,38067232,429000062,781481111,237895107,782073191,337473894,141506057,492977927,460288582,745195402,482110822,102004165,152293447,685882358,485879386,848080146,599355957,488608364,19053402,423318689,471333487,188166164,302107539,372743633,177700432,978971079,366701808,401596902,927509072,171361096,95127688,424301456,399542853,768237456,601860578,499990629,187805495,191279700,481600043,305424704,222429969,602590712,904063876,842352983,944208736,819657360,49463685,538026209,906352779,419674963,930518965,778141124,255585286,33994747,519787112,79986460,226108045,524476702,27656221,255579862,646238174,847099521,272965646,865493485,385727148,126314306,37843618,788938122,618363112,928198145,400264960,871653169,62240715,364773082,617467205,972975522,710291243,636653364,440799981,141210740,57867049,423646746,714493511,177625722,617783970,274650380,687499716,611743818,664745550,378779532,204366492,162895731,549949937,442481335,525455322,740477352,481424096,305714815,51047601,438699099,262169947,133720731,478955102,436063979,595492260,936083246,863122159,945175103,263539607,510732407,282342468,686191734,492765857,436266853,1776510,904247837,612920718,48007182,239884386,11204682,40517916,620896715,428051563,228035641,81480630,987941217,506734291,827420210,315533927,873321075,194012513,701591193,469021066,977224823,287810653,418116475,229914328,680362293,685870845,221377050,217438428,436976820,956610315,609746286,995059943,834130154,620333413,129424212,85123869,684341657,372232483,849850868,39008962,334692007,441172896,441332548,832399170,559399752,817223339,368656463,508150161,982500386,805756404,361093783,782516904,227697402,552864398,376648315,131219359,824310464,88378402,105093721,931111394,978424570,462045876,775812495,375392919,974899300,472606090,544185580,50284084,401130151,414301598,593630705,917370510,658630453,411490799,178655844,380745385,325174122,3082222,682403282,550267455,841077458,610783619,361233023,793693746,460107087,799438353,760107599,52044074,119468097,44303927,132339297,573405675,272388138,43419227,411058183,220220432,611745919,805350568,970746014,764062232,393882739,983284303,272507287,577270472,846617654,491819287,206119318,521558324,910021282,639310249,620356611,64059745,687961292,625991240,25907400,59892214,88040640,776895239,818968695,160783525,954869542,293693723,468987937,446082996,916942884,311292313,658592565,634756596,70358162,210975824,253238476,832920931,963525669,882776534,763829888,717755102,134562859,992220619,532109146,425961811,493677646,107786653,207818522,196066339,111474900,257644627,274562332,307727812,717836315,326865766,873090201,124492385,846032717,722268565,757127484,332116994,432329903,443274582,610441402,698528081,310044953,260046011,554112619,703742007,402774419,292306979,760774539,402066147,752998364,271696960,177313912,309878494,540104932,779043454,569185053,160233288,325474984,756301940,892820990,500053160,231334896,794606267,404678875,980732369,283755839,368386613,86296858,67762572,75074675,991932675,688983358,913104550,786957021,879078663,146575829,191767008,638549864,146213572,79225954,65949125,267399617,616601372,31296380,534786460,871570500,417735380,771785110,376385944,154401309,234734748,631694290,542886380,102226975,785537721,242796494,777292172,650777687,121632024,490436396,331066103,939668693,433716263,980024850,797678562,305812176,982021027,688100320,829876446,125002285,364614521,219921143,245211624,309829642,43455167,364536486,85737790,425628595,859372492,471784346,403385340,96571820,837277437,386811318,745690100,28585286,438708382,6635488,915376438,487080701,247830110,935059609,76336473,816549921,272103268,768416972,859456661,463819251,32608561,698776266,688501880,939605786,5192087,844383395,550698387,396220525,25232358,122324978,874042807,493690026,447201459,855822480,585455069,894491961,989605241,539114271,273794598,517458429,753561258,41854924,936179443,534463507,784177424,645763670,839030396,385673367,619137125,536106422};
int main()
{
    int T;scanf("%d",&T);
    int n;
    while(T--)
    {
        scanf("%d",&n);
        printf("%d\n",ans[n]);

    }
    return 0;
}

F. Rhyme scheme

题意:求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1。

思路:dp求每个节点下面有多少种情况,如果此节点下的情况数大于等于k,那就输出这个节点,并且k-=这个节点下的情况数;否则,继续判断下一个节点。dp[n][i][j]表示输入的数为n时,第 i 层中某个节点下有多少种情况,并且这个节点需要满足的要求为这条线路上最大的字符为j(如果最大字符为‘A',那么j等1,如果最大字符为’Z',那么j等26)。

dp[i][j]=dp[i+1][j]*j+dp[i+1][j+1]。初始化dp[i][i][j]=1。i为1到26,j为1到i。详见代码。

因为当n等26的时候,dp会很大,long long存不下,所以要用到__int128,输出的话,必须用快读。听说用java会超时。

ACcode:20ms

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
#define ll __int128
//#define ll long long
const int inf=0x3f3f3f3f;
const int N=100010;
using namespace std;
ll n,k;
ll dp[30][30][30];
void init()
{
    mem(dp,0);
    for(int i=1;i<=26;i++)
    {
        for(int j=1;j<=i;j++)
            dp[i][i][j]=1;
        for(int j=i-1;j>=1;j--)
        {
            for(int k=1;k<=j;k++)
                dp[i][j][k]=dp[i][j+1][k]*k+dp[i][j+1][k+1];
        }
    }
}
inline __int128 read()
{
    __int128 x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
//inline void print(__int128 x)
//{
//    if(x<0)
//    {
//        putchar('-');
//        x=-x;
//    }
//    if(x>9)
//        print(x/10);
//    putchar(x%10+'0');
//}
int main()
{
    init();
    int T;scanf("%d",&T);
    int TT=0;
    while(T--)
    {
        //scanf("%lld%lld",&n,&k);
        //read(n);read(k);
        n=read();k=read();
        printf("Case #%d: ",++TT);
        int p=1,mx;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                mx=max(p,j);
                if(dp[n][i][mx]>=k)
                    {printf("%c",char(j+'A'-1));p=max(p,j);break;}
                else
                    k-=dp[n][i][mx];
            }
        }
        printf("\n");
    }
    return 0;
}

C. Triple

 题意:输入n,然后给你三个长度均为n的数组a、b、c,问你存在多少对i、j、k满足|Ai-Bj|<=C[k],且|Bj-Ck|<=Ai,且|Ai-Ck|<=Bj。

思路:FFT+容斥。

实际上题意可以转化一下,问的就是存在多少对ijk满足两边之和大于等于第三边,也就是满足“能构成三角形”或者“两边之和等于第三边”。那我们可以容斥一下,答案就是n*n*n-“有多少种情况满足任意两边之和小于第三边”。至于“有多少种情况满足任意两边之和小于第三边”我们可以FFT求。

还有,FFT的时间复杂度是O(n*longn)。当n小于等于1000的时候,可以直接O(n*n)暴力跑一下;如果n大于1000,再用FFT。至于为什么不能直接用FFT,好像是因为FFT的复杂度有一个很大的常数,当n小于等于1000的时候,O(n*n)是小于O(n*logn)+常数的。这个题还比较坑,就是如果你写成n小于等于1000直接O(n*n)就能过,但是如果写成n小于1000直接O(n*n)就会T......应该是因为有组n等1000的数据等着卡你。

ACcode:1986ms。

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=0x3f3f3f3f;
using namespace std;
ll N;
ll A[100010],B[100010],C[100010];
ll suma[100010],sumb[100010],sumc[100010];
#define maxn 400005//开四倍所有数组。
const double pi=acos(-1.0);
struct Complex
{
    double x,y;
    Complex(double X=0,double Y=0)
    {
        x=X,y=Y;
    }
} a[maxn],b[maxn];
Complex operator + (Complex a,Complex b)
{
    return Complex(a.x+b.x,a.y+b.y);
}
Complex operator - (Complex a,Complex b)
{
    return Complex(a.x-b.x,a.y-b.y);
}
Complex operator * (Complex a,Complex b)
{
    return Complex(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);
}
int S,T,n,m,L,R[maxn];
long long F[maxn];//存储多项式相乘结果的系数从0-n
double f[maxn],g[maxn];

void FFT(Complex a[maxn],int opt)
{
    for (int i=0; i<n; ++i)
        if (i<R[i]) swap(a[i],a[R[i]]);
    for (int k=1; k<n; k<<=1)
    {
        Complex wn=Complex(cos(pi/k),opt*sin(pi/k));
        for (int i=0; i<n; i+=(k<<1))
        {
            Complex w=Complex(1,0);
            for (int j=0; j<k; ++j,w=w*wn)
            {
                Complex x=a[i+j],y=w*a[i+j+k];
                a[i+j]=x+y,a[i+j+k]=x-y;
            }
        }
    }
}
void calc(int opt)
{
    FFT(a,1);
    FFT(b,1);
    for (int i=0; i<=n; ++i)
        a[i]=a[i]*b[i];
    FFT(a,-1);
    for (int i=0; i<=n; ++i)//上限为n,在运用时灵活修改。
        F[i]=(long long)(a[i].x/n+0.5)*opt;
}
void solve()
{
/*
    多项式f和多项式g的乘积
    其中,多项式f的次数为0到S,多项式g的次数为0到T
    结果存在数组F中,F的系数为0到S+T
    时间:O(n logn)
*/
    m=S+T;
    L=0;//多组输入时,L要初始化为0
    for (n=1; n<=m; n<<=1) ++L;
    for (int i=0; i<n; ++i)
        R[i]=(R[i>>1]>>1)|((i&1)<<(L-1));
    for (int i=0; i<=n; ++i)
        a[i]=Complex(1.0*f[i],0.0),b[i]=Complex(1.0*g[i],0.0);
    calc(1);
}
void init()
{
    mem(f,0);
    mem(g,0);
    mem(F,0);
}
int main()
{
    int T1;scanf("%d",&T1);
    int TT=0;
    while(T1--)
    {
        init();
        scanf("%lld",&N);
        for(int i=1;i<=N;i++)
            scanf("%lld",&A[i]);
        for(int i=1;i<=N;i++)
            scanf("%lld",&B[i]);
        for(int i=1;i<=N;i++)
            //C[i]=read();
            scanf("%lld",&C[i]);
        sort(A+1,A+N+1);
        sort(B+1,B+N+1);
        sort(C+1,C+N+1);
        mem(suma,0);
        mem(sumb,0);
        mem(sumc,0);
        for(int i=1;i<=N;i++)
            suma[A[i]]++;
        for(int i=2;i<=A[N];i++)
            suma[i]=suma[i-1]+suma[i];
        for(int i=1;i<=N;i++)
            sumb[B[i]]++;
        for(int i=2;i<=B[N];i++)
            sumb[i]=sumb[i-1]+sumb[i];
        for(int i=1;i<=N;i++)
            sumc[C[i]]++;
        for(int i=2;i<=C[N];i++)
            sumc[i]=sumc[i-1]+sumc[i];
        ll ans=0;
        if(N<=2000)
        {
            for(int i=1;i<=N;i++)
                for(int j=1;j<=N;j++)
                {
                    if(A[i]+B[j]>C[N])
                        break;
                    ans+=(N-sumc[A[i]+B[j]]);
                }
            for(int i=1;i<=N;i++)
                for(int j=1;j<=N;j++)
                {
                    if(A[i]+C[j]>B[N])
                        break;
                    ans+=(N-sumb[A[i]+C[j]]);
                }
            for(int i=1;i<=N;i++)
                for(int j=1;j<=N;j++)
                {
                    if(B[i]+C[j]>A[N])
                        break;
                    ans+=(N-suma[B[i]+C[j]]);
                }
            printf("Case #%d: ",++TT);
            ans=N*N*N-ans;
            printf("%lld\n",ans);
            continue;
        }

        S=A[N] + 10;
        T=B[N] + 10;
        n=S+T+10;
        for(int i=1;i<=N;i++)
            f[A[i]]++;
        for(int i=1;i<=N;i++)
            g[B[i]]++;
        solve();
        for(int i=2;i<=n;i++)
        {
            if(i>C[N])
                break;
            ans+=(F[i]*(N-sumc[i]));
        }

        init();
        S=A[N];
        T=C[N];
        n=S+T;
        for(int i=1;i<=N;i++)
            f[A[i]]++;
        for(int i=1;i<=N;i++)
            g[C[i]]++;
        solve();
        for(int i=2;i<=n;i++)
        {
            if(i>B[N])
                break;
            ans+=(F[i]*(N-sumb[i]));
        }

        init();
        S=C[N];
        T=B[N];
        n=S+T;
        for(int i=1;i<=N;i++)
            f[C[i]]++;
        for(int i=1;i<=N;i++)
            g[B[i]]++;
        solve();
        for(int i=2;i<=n;i++)
        {
            if(i>A[N])
                break;
            ans+=(F[i]*(N-suma[i]));
        }
        printf("Case #%d: ",++TT);
        ans=N*N*N-ans;
        printf("%lld\n",ans);
    }
    return 0;
}

E. Counting Sequences II 

题意:让你构造一个长度为n的序列满足:1、序列中每个元素的值都在1到m之间;2、对于序列中任意一个偶数,需要满足它出现的次数是偶数。

思路:推公式,然后预处理,然后O(1)求组合数。

至于公式怎么退,我不会......

有篇感觉讲的很不错的博客,可我还是不会。https://www.cnblogs.com/heyuhhh/p/11545443.html

还有,这个题有个我不知道的地方就是,对于除法,除完后要取模,比如ans=a/b%mod,不能直接写成ans=a/b%mod,应该写成ans=a*pow_mod(b,mod-2,mod)%mod,也就是说要写成逆元的形式。

推公式的过程:

ACcode:148ms

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
typedef long long LL;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
using namespace std;
ll n,m;
ll pow_mod(ll a,ll b)
{
    ll ret=1;
    while(b)
    {
        if(b&1)
            ret=ret*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return ret;
}
const int maxn = 2e5;
LL A[maxn];
LL B[maxn];
void Init()
{
    A[0] = 1;
    for(int i=1; i<=maxn; i++)
        A[i] = (A[i-1] * i ) % mod;
}

LL Ext_Gcd(LL a, LL b, LL &x, LL &y)
{
    if(b==0){
        x=1;
        y=0;
        return a;
    }
    LL d = Ext_Gcd(b, a%b, y, x);
    y-=a/b*x;
    return d;
}

LL Inv(LL a, LL n)
{
    LL x,y;
    LL d = Ext_Gcd(a,n,x,y);
    if(d == 1)
        return ((x%n)+n)%n;
    return -1;
}
LL get()
{
    for(int i=0;i<maxn;i++)
        B[i] = Inv(A[i],mod);
}
LL C(LL a, LL b, LL mod)
{
    if(a < b)
        return 0;
    return (A[a] * B[b] %mod)*B[a-b]%mod;
}
inline LL mmp(int x)
{
    if(x & 1)
        return -1;
    else
        return 1;
}
int main()
{
    Init();
    get();
    int T;scanf("%d",&T);
    while(T--)
    {
        scanf("%lld%lld",&n,&m);
        ll cnt0=m/2,cnt1=(m+1)/2;
        ll ans=0;
        for(int i=0;i<=cnt0;i++)
            ans=(ans+C(cnt0,1ll*i,mod)*pow_mod(1ll*(cnt1-cnt0+2*i),n)%mod)%mod;
        //ans=ans/pow_mod(1ll*2,cnt0)%mod;  
        //不能这么写,要用逆元写
        ll anss=pow_mod(1ll*2,cnt0);
        ans=(ans*pow_mod(anss,mod-2))%mod;
        printf("%lld\n",ans);
    }
    return 0;
}

其他的真不会了,以后再说吧......

 

 

 

2019 ICPC南昌邀请赛网络赛部分题解 A. 题目:https://nanti.jisuanke.com/t/38220 题意:求前5个因子和等于它本身的数(不算自身) 线性筛 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N = 4e6 + 100; ... 阅读详情

相关推荐

2023 ICPC 网络赛 第一场 部分题解 (待完善)

ch1 即上一层所有字符的方案数 - 上一层ch1的方案数。2.所有连通块都是满连通块。

cs1414358917的博客 2334

【题解】2019icpc网络赛上海站部分题解

B.Light bulbs 题意:n盏灯,开始时都是关闭的,每次对区间内的灯的状态进行翻转,问最终有几盏灯是开着的。 特别注意:内存+时间(我们第一发t了 题解:只有区间的反转次数为奇数次的时候才有效,可以对l和r进行排序然后求区间和。左区间减一也行,右区间加一也行,按住一个进行变动即可(保证作差后为区间内所有更换过状态的灯的数目)。 #include <iostream> ...

MoonLight_月亮 776

2023 ICPC 网络赛 第二场 部分题解 (待完善)

对于一条路径(u,v), 不断的找他们的LCA,并标记中途经过的点,如果途中经过的点是线路的话,就加入队列中,然后把步数+1即可.dp[l][r] |= dp[l+ Min][r-Min];化简得: dp[i] = ( p + (1-p)*(i-a[i]+1) ) /p;nxt[id][i]表示在字符串 s[id]...s[n]中 以第i个字母为右端点的。2.失败的概率是 1-pi,那么从i点回到a[i]点,然后从a[i]点再到 i号点。设dp[l][r]表示区间[l,r] 是否是超级字符串.

cs1414358917的博客 1751

2019ICPC(上海) - Counting Sequences I(dfs打表)

题目链接:点击查看 题目大意:对于n>1,求的长度为n的数组个数 题目分析:因为长度为n的数组中,组成数字相同但排列组合不同的数组,不算同一种情况,所以我们在求出一种满足条件的数组后,需要考虑所有排列组合的情况,然后枚举的时候也有技巧,如果盲目枚举3000位,那得枚举到何年何月。。我们需要分析一下这个式子,可以得出一个简单地结论,就是当n很大的时候,绝大部分都是1,为什么这么说呢,现在假...

Falcon的博客 949

题解 (The 2019 ICPC Asia Shanghai Regional Contest - Online Contest).pdf

题解 (The 2019 ICPC Asia Shanghai Regional Contest - Online Contest).pdf

Windows下OpenMBEE项目MMS部署失败经历及改正

在Github里找到了上面的第一份文档,下载了MMS源代码(不知道为什么这个代码跟上面操作克隆得到的MMS代码不一样?好像是因为Gradle的版本问题,我本地之前已经安装过7.6.4的Gradle了,于是我找到gradle-wrapper.properties文件。后面在VScode中运行了一下依然是报这个错误,我在VScode终端直接执行。不知道为什么依然没什么用。打开“Windows PowerShell”。(如果是第一次运行它,将看到更长的输出)导航到要克隆存储库的文件夹,例如,

Yo_lan_da的博客 1869

2022 ACM-ICPC 网络赛(1) A题

A 01 Sequence只要字符串中,不相邻的1的个数大于等于区间长度 / 3的话,就可以完全删除了.

m0_61949623的博客 1681

9.9元ESP32-C3开发板实战:手把手教你用VSCode搭建RT-Thread最小系统(附避坑指南)

本文提供了一份详尽的实战指南,教你如何在售价仅9.9元的ESP32-C3开发板上,使用VSCode搭建RT-Thread最小系统。内容涵盖从ESP-IDF环境配置、BSP源码获取、内核补丁应用到编译下载与调试的全流程,并重点分享了版本选择、补丁应用等关键避坑技巧,旨在帮助开发者低成本、高效地启动嵌入式实时操作系统开发。

o4p5q6r7s的博客 227

ICPC网络预选赛(第一场)(一)

那么对于 一个排好序的数 1 2 3 ~n(中位数可能是里面的数),应该符合一种大致规律,就是越靠近中位数,那么某种影响应该越小,而在中位数的两边的数,应该会产生不同的影响,在最逼近时,也就是l==r时,即为答案,根据这种性质采用二分的方法逼近答案。发现15可以晋级,尝试让14晋级,因为14对于之前的队是很大的,所以应该放在A1的位置,为了使得C1,D2小于14,应该尽量让D2小于14,发现A1是和B2进行比较,意味着B1可以放一个比14大的数,发现15满足,条件。因此晋级4强的条件是>=14。

ccdme的博客 3593

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 306

手把手教你学Simulink--双足机器人分数阶PID控制仿真

分数阶PID(Fractional-order PID, FOPID)控制是一种先进的控制策略,它扩展了传统的整数阶PID控制器的概念。FOPID控制器允许积分和微分项的阶次不是严格的整数,而是可以是任意实数,这为系统提供了更多的设计自由度,并可能带来更好的性能。在双足机器人控制中,分数阶PID控制可以用于改善机器人的平衡控制、轨迹跟踪等任务的性能。下面我们将详细介绍如何使用Simulink进行基于分数阶PID控制方法的双足机器人仿真研究。

MHD0815的博客 883

ICPC程序设计题解系列

ICPC亚洲区域赛题解系列 The 2019 ACM-ICPC China Shannxi Provincial Programming Contest题解 - 海岛Blog - 优快云博客 2019 ICPC中国邀请赛(南昌)暨国际丝绸之路程序设计竞赛-网络赛题解 - 海岛Blog - 优快云博客 2018-2019 ACM-ICPC, Asia Nanjing Regional Co...

海岛Blog 2872

基于SSD2828和STM32的MIPI显示屏驱动系统设计与实现

在硬件层面,需要将STM32、SSD2828和MIPI显示屏连接起来。STM32与SSD2828的连接:通过SPI接口连接STM32和SSD2828,用于配置和控制SSD2828。SSD2828与MIPI显示屏的连接:通过MIPI DSI接口连接SSD2828和MIPI显示屏,用于传输显示数据。

qq_38334677的博客 7150

2023ICPC第一场网络赛 VP题解

2023ICPC第一场网络赛VP题解~

doyowhat的博客 2648

2025年软件测试职业院校技能大赛—ERP管理平台-基础信息管理商品管理测试用例

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 326

即插即用系列(代码实践)| 2025 Strip R-CNN:大尺寸条形卷积——遥感目标检测新SOTA,专治细长目标(桥梁、船只)

摘要: 论文《Strip R-CNN: Large Strip Convolution for Remote Sensing Object Detection》针对遥感图像中细长目标(如桥梁、道路)检测难题,提出创新性解决方案。通过设计StripBlock模块,将传统方形卷积核替换为大尺寸条形卷积(水平1×19与垂直19×1组合),有效捕获长距离空间特征,同时减少背景噪声。结合CenterPooling增强目标中心定位,该模块可即插即用至现有网络,显著提升遥感检测任务(如DOTA数据集)的精度。代码已开源,

分享顶会顶刊论文即插即用模块 189

2019 ICPC 台湾网络赛题解

變更於 14 小时前 2019 ICPC TOPC 簡易講評 tags: ICPC TOPC TOPC2019 題組資源 以下為 2019 ICPC Asia Taiwan Online Programming Contest 的競賽主席兼裁判長謝旻錚對此題組的簡易講評。 Problem A – Animal King Election Problem setter: Min-Zheng Shie...

weixin_44014982的博客 1169

32、高光谱遥感技术在军事领域的应用解析

高光谱遥感技术凭借其高分辨率和精细光谱分析能力,在军事领域广泛应用于战场详细侦察、伪装目标识别及目标实际温度与发射率的检测,显著提升了目标识别精度和作战支持能力。同时,该技术在内陆水体成分反演、海洋环境监测和农业管理等领域也展现出巨大潜力。尽管面临数据量大、处理复杂、技术融合不足和仪器性能限制等挑战,未来通过人工智能融合、高效算法研发和先进仪器开发,高光谱遥感技术将在多领域实现更深入应用与发展。

blue的专栏 235

2018-2019 ACM-ICPC 徐州区域赛 部分题解

题目链接:2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest A. Rikka with Minimum Spanning Trees 题意: 给出一个随机算法生成边的信息,然后求最小生成树的个数以及其权值的乘积。 题解: 这个随机算法有点神奇...基本不会有重复的边出现,所以其实只用求MST就行了。当然,其实通过样例也可以猜...

dft539533的博客 1644

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

日常补题——ICPC网络赛上海站第二题B Light bulbs

日常补题——ICPC网络赛上海站第二题B Light bulbs 题目链接: https://nanti.jisuanke.com/t/41399 博客借鉴: https://blog.youkuaiyun.com/weixin_43701790/article/details/100867368 题目大意: 每次操作使 L,R区间内的等的状态改变,最后一共有多少开着的灯 题解: 这...

208

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ICPC 2019 徐州网络赛

ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才反应过来没看完全部题, J题树形dp没写太亏了。。。 // 几何旋律AK了,太强了Orz // 虽然我们队A了8题,但如果时间分配好,认真读题避免看错题的话,应该至少多A一题 A. W...

weixin_30879833的博客 360

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ACM-ICPC 2017南宁赛区网络赛题目题解收集

本篇文章的主要代码来自于优快云博客或者网络,感谢网络ACMdalao的AC代码,佩服他们,本文最后会写出各个AC代码的原作者和网址。

Georgebillion的博客 3229

2024ICPC网络赛第二场题解

个机器人,每一秒会随机通过一条边前往下一个点,如果你在过程中被抓到了,就会逃离失败。的距离,超过距离会爆炸;设计一条线路,保证一定能逃离,或者说不可能。初始分数1500,n个数,问到第几次总和至少4000分。的贡献并不会减去,因此还是需要暴力跳,但是直接跳会超时。失配的过程中,减去对应的值,但是这会漏掉一些情况。排序即可,如果不清楚大于和小于就两个都试一下。肯定不行,因为二进制末位必然会有两个。条边,每条边是双向的有向边,期望从点。实际上是z函数,但是需要动态维护。那么贡献不同的只有一部分,按。

weixin_73725403的博客 2333

2019ACM-ICPC网络赛 沈阳 F题 二分的灵活运用

2019沈阳站ICPC网络赛 F题 二分的灵活运用 2019沈阳ICPC网络赛 F题题面 题意 有n个池塘,第i个池塘里初始状态有a[i]个单位的水,每天都进行一次操作:把水最多的池塘里(如果有多个随机取一个)的一个单位的水搬到水最少的池塘里(如果有多个随机取一个),问k次之后的水最多的池塘的水量减去水最少的池塘的水量是多少个单位? 限制:1000ms 262144K 思路 通常情况下二分的对象要...

Time Limit Exceeded on test 99 618

ICPC2025网络赛(一)个人做题记录

本文记录了ICPC2025网络赛个人解题过程。A题为签到模拟题,通过时间排序处理提交记录;B题通过数学推导得出最优解为连续数列;C题采用贪心策略,利用优先队列优化操作区间选择;D题运用树形DP,分析链结构对答案的贡献等。

weixin_51060666的博客 1172

2019 ICPC 南昌网络赛 H. The Nth Item

2019 ICPC 南昌网络赛 H. The Nth Item 题目大意:已知一个数列F(n): F(0)=0,F(1)=1 F(n)=3∗F(n−1)+2∗F(n−2),(n≥2) ​ 给你一个操作次数Q,再给你一个初始n的值,令A1=F(n1),A2=F(n2),…Aq=F(nq),其中n1=n,ni=Ai-1*Ai-1^ni-1,输出所有A的异或和。 解法:偷鸡成功!不知道多少人是按题解那...

yzsjwd的博客 407
上一篇: C++ 计时方法
下一篇: 2018 ICPC 沈阳站
flyzer
博客等级 码龄9年 27粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值