Code Forces 1030E

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Code Forces 1030E相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/span' title='span'>span   class   sum   pre   娌℃湁   杩涘埗   鎬濊矾   array   鍏虫敞   

棰樼洰澶ф剰锛?/h1>

缁欎綘n涓暟锛屼綘鍙互浜ゆ崲涓€涓暟鐨勪换鎰忎簩杩涘埗浣嶏紝闂綘鍙互閫夊嚭澶氬皯鍖洪棿缁忚繃鎿嶄綔鍚庡紓鎴栧拰鏄?銆?/p>

鎬濊矾鍒嗘瀽锛?/h1>

鏍规嵁棰樼洰锛屽緢瀹规槗鐭ラ亾锛屽浜庢瘡涓暟锛屾垜浠彲浠ユ棤瑙嗗畠鐨?鍦ㄩ偅浜涗綅缃紝鍙鍏虫敞瀹冩湁鍑犱釜1鍗冲彲锛屽鏋滃畠鐨?鐨勬暟閲忓彲浠ラ€氳繃鍔犲噺涓?锛岄偅涔堣繖涓尯闂村氨鏄悎娉曠殑銆?/p>

鍙互鐪嬪埌锛屼袱涓暟锛堝垎鍒湁x锛寉涓?锛屼笖x銆墆锛夐€氳繃浜ゆ崲浣嶇疆鍐嶈繘琛屽紓鎴栨搷浣滐紝鍙兘鑾峰緱鐨勬柊鏁颁腑1鐨勬暟閲忎负y-x锛寉-x+2锛寉-x+4锛?..锛寈+y-2锛寈+y銆?/p>

閭d箞瀵逛簬姣忎竴涓乏绔偣锛坙锛夛紝瀹冪殑鍚堟硶鍙崇鐐癸紙r锛夌殑鏁伴噺涓簊um[r]-sum[l-1]涓哄伓鏁扮殑r鐨勪釜鏁帮紙sum涓哄墠缂€鍜屾暟缁勶級銆傚悓鏃讹紝杩欎釜鍖洪棿杩樿婊¤冻鍖洪棿鍐?鐨勬暟閲忔渶澶氱殑鏁帮紙鍋囪瀹冨湪绗琸浣嶏級瑕佸皬浜巗um[k]-sum[l-1]鐨勪竴鍗婏紝鍥犱负鍋囧璇村畠涓嶆弧瓒宠繖涓€鏉′欢鐨勮瘽锛岄偅涔堝氨娌℃湁瓒冲澶氱殑1鍚屽畠鐩告姷娑堬紝涔熷氨涓嶄細鍚堟硶銆?/p>

閭d箞鎴戜滑搴旇濡備綍閬垮厤杩欑鐘跺喌鍛紵

寰堢畝鍗曪紝鍙兘浼氭槸涓嶅悎娉曞彸绔偣鐨勫嚑涓偣锛堟渶澶?4涓級鐩存帴鏆村姏鍋氬氨琛屼簡銆?/p>

浠g爜锛?/h1>
var
  a,sum,odd,even:array[0..300000]of longint;
  i,j,s,max,n,m:longint;
  ans,x:int64;
begin
  read(n);
  for i:=1 to n do
  begin
    read(x);
    while x>0 do
    begin
      a[i]:=a[i]+x and 1;
      x:=x>>1;
    end;
  end;
  for i:=1 to n do
  begin
    sum[i]:=sum[i-1]+a[i];
    odd[i]:=odd[i-1]; even[i]:=even[i-1];
    if sum[i]and 1=1 then inc(odd[i]) else inc(even[i]);
  end;
  for i:=1 to n do
    if sum[i-1]and 1=1 then ans:=ans+odd[n]-odd[i-1]
      else ans:=ans+even[n]-even[i-1];
  writeln(ans);
  for i:=1 to n do
  begin
    if i+64>n then m:=n else m:=i+64;
    s:=0; max:=0;
    for j:=i to m do
    begin
      if a[j]>max then max:=a[j];
      s:=s+a[j];
      if (2*max>s)and(s mod 2=0) then dec(ans);
    end;
  end;
  writeln(ans);
end.

 

以上是关于Code Forces 1030E的主要内容,如果未能解决你的问题,请参考以下文章

code forces 990C

code forces 994B

code forces 994C

code forces 979C

code forces 999CAlphabetic Removals

Code Forces Gym 100886J Sockets