Codeforces Round #427 (Div. 2)——ABCD
发布日期:2021-08-31 13:57:47 浏览次数:30 分类:技术文章

本文共 3449 字,大约阅读时间需要 11 分钟。

 

A.拼英语水平和手速的签到题

1 #include 
2 3 using namespace std; 4 5 int s, v1, v2, t1, t2; 6 7 int main() { 8 cin >> s >> v1 >> v2 >> t1 >> t2; 9 int a1 = t1 + v1 * s + t1;10 int a2 = t2 + v2 * s + t2;11 if(a1 < a2) puts("First");12 else if(a1 > a2) puts("Second");13 else puts("Friendship");14 return 0;15 }
View Code

 

B.同签到

1 #include 
2 3 using namespace std; 4 5 int k, n, a[10]; 6 7 string s; 8 9 long long sum;10 11 int main() {12 cin >> k >> s;13 for(int i = 0;i < s.size();i ++)14 a[s[i] - '0'] ++, sum += s[i] - '0';15 if(sum >= k) {16 puts("0");17 return 0;18 }19 k -= sum;20 for(int i = 0;i < 10;i ++)21 for(int j = 1;j <= a[i];j ++) {22 k -= 9 - i, n ++;23 if(k <= 0) {24 printf("%d\n", n);25 return 0;26 }27 }28 return 0;29 }
View Code

 

C.看到xyc的数据范围就能明白是道水题...然后就WA了

1W个位置10W个点,可能一个位置好几颗星星...令人无语

1 #include 
2 3 using namespace std; 4 5 vector
c[11][110][110]; 6 7 int n, q, cc, b[11][110][110]; 8 9 int main() {10 scanf("%d %d %d", &n, &q, &cc), cc ++;11 for(int u, v, w, i = 1;i <= n;i ++) {12 scanf("%d %d %d", &u, &v, &w);13 c[0][u][v].push_back(w);14 }15 for(int i = 1;i < cc;i ++)16 for(int j = 1;j <= 100;j ++)17 for(int k = 1;k <= 100;k ++)18 if(c[i - 1][j][k].size() != 0) {19 for(int p = 0;p < c[i - 1][j][k].size();p ++)20 c[i][j][k].push_back((c[i - 1][j][k][p] + 1) % cc);21 }22 for(int i = 0;i < cc;i ++)23 for(int j = 1;j <= 100;j ++)24 for(int k = 1;k <= 100;k ++) {25 b[i][j][k] += b[i][j - 1][k] + b[i][j][k - 1] - b[i][j - 1][k - 1];26 for(int p = 0;p < c[i][j][k].size();p ++)27 b[i][j][k] += c[i][j][k][p];28 }29 for(int t, A, B, C, D, i = 1;i <= q;i ++) {30 scanf("%d %d %d %d %d", &t, &A, &B, &C, &D);31 t %= cc, printf("%d\n", b[t][C][D] + b[t][A - 1][B - 1] - b[t][A - 1][D] - b[t][C][B - 1]);32 }33 return 0;34 }
View Code

如果没有亮度变化,坐标到1e9,会有新的星星在某个位置出现,询问不变

允许离线的话可以CDQ分治解决,O(nlog^2n)

强制在线的话可以树状数组套主席树,时间复杂度相同,常数略大,空间O(nlogn)

当然这个模型感觉都快被写烂了...

 

D.注意到1阶回文是普通回文

而k阶回文决定了它一定也是回文,而且它也是1...k-1阶回文

想清楚了它的性质,就是个区间DP了

1 import java.util.Scanner; 2  3 public class D { 4     public static void main(String []args) { 5         Scanner cin = new Scanner(System.in); 6         int[][] dp = new int[5005][5005]; 7         int[] ans = new int[5005]; 8         String s = cin.nextLine(); 9         int n = s.length();10         for(int d = 1;d <= n;d ++)11             for(int i = 0;i + d - 1< n;i ++) {12                 int j = i + d - 1;13                 if(d < 3) dp[i][j] = (s.charAt(i) == s.charAt(j) ? d : 0);14                 else if(s.charAt(i) != s.charAt(j) || dp[i + 1][j - 1] == 0) dp[i][j] = 0;15                 else if(s.charAt(i) == s.charAt((i + j - 1) / 2)) dp[i][j] = dp[i][(i + j - 1) / 2] + 1;16                 else dp[i][j] = 1;17                 ans[dp[i][j]] ++;18             }19         for(int i = n - 1;i > 0;i --)20             ans[i] += ans[i + 1];21         for(int i = 1;i <= n;i ++)22             System.out.printf("%d ", ans[i]);23     }24 }
View Code

转载于:https://www.cnblogs.com/ytytzzz/p/7270106.html

转载地址:https://blog.csdn.net/weixin_34077371/article/details/93154104 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:移动小bug
下一篇:我对OpenAPI的理解

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月23日 09时15分01秒