CSP S模擬測試94 題解

2022-03-16 16:22:26 字數 1742 閱讀 4348

高精硬上似乎跑不過,其實可以都取個$log$。那麼只需要比較$y\times log ^x$和$\sum \limits _^y log^i$就好了。

#includeusing namespace std;

int t;

double x,y;

void work()

int main()

顯然目標區間合法的充要條件是:把位置按照$mod \ k$意義分組,每組的權值和應該相等。

必要性:每次操作對於每一組的改變量都相同,所以最終的和也必然相等。

充分性:……很顯然吧。

直接hash表維護就好了,每次修改完判斷是不是只有一種權值和即可。

#include#include#include#define ol

using namespace std;

int read()

while(isdigit(ch))x=x*10+ch-'0',ch=getchar();

return x*f;

}const int n=2e6+5;

int n,k,q,a[n],sum[n];

struct hashtable

}s;int main()

$,除以2可以留在外面做。

#include#include#include#define ol

using namespace std;

typedef long long ll;

int read()

while(isdigit(ch))x=x*10+ch-'0',ch=getchar();

return x*f;

}const int n=2e5+5;

int n,fa[n],a[n],pos[n];

int to[n<<1],head[n],nxt[n<<1],tot;

ll v[n],ans;

void add(int x,int y)

int root[n],type,lp[n*30],rp[n*30],ls[n*30],rs[n*30];

ll w[n*30];

void up(int k,int l,int r)

if(lp[ls[k]]==mid)lp[k]=lp[rs[k]]?lp[rs[k]]:mid;

if(rp[rs[k]]==mid+1)rp[k]=rp[ls[k]]?rp[ls[k]]:mid+1;

}void update(int &k,int l,int r,int pos)

int mid=l+r>>1;

if(pos<=mid)update(ls[k],l,mid,pos);

else update(rs[k],mid+1,r,pos);

up(k,l,r);

}int merge(int x,int y,int l,int r)

void dfs(int x)

ans+=w[root[x]]/2*v[x];

}int main()

for(int i=1;i<=n;i++)

a[i]=read(),pos[a[i]]=i;

for(int i=1;i<=n;i++)

v[i]=read();

for(int i=n;i;i--)

v[i]-=v[fa[i]];

dfs(1);

printf("%lld\n",ans);

return 0;

}

csp s模擬測試94

一場簡單題,打爆了。t1 腦抽分解質因數準備分子分母消,想了半天發現 jb 互質直接上天,果斷碼了高精滾蛋。t2 無腦手玩大樣例,突然靈光一閃想到對映到前 k 大小的區間,t3 寫完暴力準備划水,突然發現特殊性質可寫,10 分鐘拯救了 25 分。8003 24 46 7003 24 58 6503 ...

CSP S模擬測試69 題解

一如既往的垃圾,又回到了那個場場墊底的自己,明明考場上都想到正解了,但是就是拿不到分,可能是互奶把rp用光了吧以後一定加強訓練 能力。t1 考場上一直yy矩陣快速冪,雖然自己矩陣快速冪一點都不會還是硬著頭皮yy,發現不可做之後並沒有及時轉化思路,但其實自己預處理的陣列就是正解。切記 不僅矩陣快速冪是...

CSP S 模擬測試 51 題解

慣例先看一遍三道題,t1 一開始反應要求割點,但是這是有向圖,肯定不能求割點,康了一下資料範圍,有40 是樹的,還不錯,決定待會在打。看t2 字串題,完了我字串最弱了,肯定只能打暴力了,帶著前兩題都不會的心情,看了t3發現是期望,完了爆0了,在一看,發現是sb原題,還簡單一點,趕緊把t3碼了一遍過大...