Codeforce Flea CodeForces - 32C 规律|思维
生活随笔
收集整理的這篇文章主要介紹了
Codeforce Flea CodeForces - 32C 规律|思维
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意
給我們一個n*m的表格 告訴我們每次跳躍的格子數量s
只能垂直或者水平跳躍 可以跳躍無限次 那么某格子能到達的不同格子的數量就是這個格子的值 求表格中值最大的格子的數量
分析
表面上看像是搜索 然而1e6的數據搜索行不通
其實分析下是個規律題 也就是符合能夠互相抵達的格子最多的在一個表格中是符合某種計算規律的 我們發現 任意一個表格 都可以根據不同的跳躍數量得到規律從而計算出如果在表格中盡可能放更多的石子 石子時間橫豎相差s步 然后發現這樣的一種放置其實就是符合條件的一種解 也就是可以互相抵達 不同長寬的表格 或許會有很多個不同的最大放置數量 所以最后再算一下倍數 然后乘上最大放置數量就可以得到解
code
import java.util.Arrays; import java.util.Scanner;public class Main{public static void main(String[] args){int n,m,s;Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();s = sc.nextInt();long ans = 0;long l,w; // 計數if(s>=Math.max(n, m))System.out.println(1l*n*m);else{l = (n%s!=0?n/s+1:n/s);w = (m%s!=0?m/s+1:m/s);// 倍數long lt = 0,wt=0;if(n%s==0)lt+=s-1;else lt+=n-(n/s)*s-1;if(m%s==0)wt+=s-1;else wt+=m-(m/s)*s-1;long time = lt*wt==0?lt+wt+1:(lt+1)*(wt+1);// 如果橫向可以平移最大放置策略 縱向也可以平移 那么最后的倍數是橫向倍數*縱向倍數 ans = 1l*l*w*time;System.out.println(ans); }}}最大放置多少個以及倍數之間的計算關系寫錯了好幾次。。。
總結
以上是生活随笔為你收集整理的Codeforce Flea CodeForces - 32C 规律|思维的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad字体修改方案分享-缺少SHX字体、
- 下一篇: Simscape Multibody 多