寒假第二周 1.18 --- 1.24

1.18

cf 581c

581C - Developing Skills

重新自己写了一遍,注意都是0 的时候

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7
 8 const int maxn = 1e5+5;
 9 int n,k;
10
11 struct node{
12     int x,y;
13 }p[maxn];
14
15 int cmp(node n1,node n2){
16     return n1.y < n2.y;
17 }
18
19 int cmp0(node n1,node n2){
20     return n1.x < n2.x;
21 }
22
23 int a[105];
24
25 void solve(){
26     for(int i = 1;i <= n;i++){
27         int pos = lower_bound(a+1,a+10,p[i].x) - a;
28         if(a[pos] == p[i].x) pos++;
29         p[i].y = a[pos] - p[i].x;
30      //  printf("a[%d] = %d  p[%d].x = %d\n",pos,a[pos],i,p[i].x);
31     }
32    /* for(int i = 1;i <= n;i++){
33         printf("p[%d].x = %d  y = %d\n",i,p[i].x,p[i].y);
34     }*/
35     sort(p+1,p+n+1,cmp);
36     int ans = 0;
37     for(int i = 1;i <= n;i++){
38         if(k >= p[i].y){
39             ans += (p[i].x + p[i].y)/10;
40             k -= p[i].y;
41             p[i].x = p[i].x + p[i].y;
42         }
43         else {
44             ans += p[i].x/10;
45         }
46        // printf("i = %d  k = %d  ans = %d\n",i,k,ans);
47     }
48     if(k){
49         for(int i = 1;i <= n;i++){
50             int l = 10 - p[i].x/10;
51             int r = k/10;
52             if(r >= l){
53                 ans += l;
54                 k = k-l*10;
55             }
56             else{
57                 ans += k/10;
58                 k = k%10;
59             }
60             if(k < 10) break;
61             //printf("l = %d  r = %d  k = %\n",l,r,k);
62         }
63     }
64     printf("%d\n",ans);
65 }
66
67 int main(){
68     for(int i = 1;i <= 10;i++) a[i] = i*10;
69     a[11] = 100;
70   //  freopen("in.txt","r",stdin);
71    // freopen("out.txt","w",stdout);
72     while(scanf("%d %d",&n,&k) != EOF){
73         for(int i = 1;i <= n;i++){
74             scanf("%d",&p[i].x);
75         }
76         solve();
77     }
78     return 0;
79 }

cf 614e

614E - Necklace

先不理解题解说的 part 是什么意思,,就是所有a[i] 的gcd

然后像题解说的那样构造

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<vector>
  4 #include<iostream>
  5 #include<algorithm>
  6 using namespace std;
  7
  8 const int maxn = 1e5+5;
  9 char s[maxn];
 10 int n,a[maxn],aa[maxn];
 11
 12 int gcd(int a,int b){
 13     return (!b) ? a:gcd(b,a%b);
 14 }
 15
 16 void solve(){
 17     int part = a[1];
 18     for(int i = 2;i <= n;i++){
 19         part = gcd(part,a[i]);
 20     }
 21     for(int i = 1;i <= n;i++){
 22         aa[i] = a[i]/part;
 23     }
 24
 25     if(part%2 == 0){
 26         printf("%d\n",part);
 27         vector<char> c;
 28         for(int i = 1;i <= n;i++){
 29             for(int j = 1;j <= aa[i];j++){
 30                 c.push_back(i+‘a‘-1);
 31             }
 32         }
 33         int flag = 1;
 34         for(int i = 1;i <= part;i++){
 35             if(flag){
 36                 for(int j = 0;j < c.size();j++){
 37                     printf("%c",c[j]);
 38                 }
 39             }
 40             else{
 41                 for(int j = c.size()-1;j >= 0;j--){
 42                     printf("%c",c[j]);
 43                 }
 44             }
 45             flag = !flag;
 46         }
 47         printf("\n");
 48         return;
 49     }
 50     int ji = 0;
 51     for(int i = 1;i <= n;i++){
 52         ji += (aa[i]%2);
 53     }
 54     if(ji > 1){
 55         puts("0");
 56         for(int i = 1;i <= n;i++){
 57             for(int j = 1;j <= a[i];j++){
 58                 char z = i+‘a‘-1;
 59                 printf("%c",z);
 60             }
 61         }
 62         printf("\n");
 63     }
 64     if(ji == 1){
 65         vector<char> l;
 66         vector<char> r;
 67         int pos;
 68         for(int i = 1;i <= n;i++){
 69             if(a[i]%2){
 70                 pos = i;
 71                 break;
 72             }
 73         }
 74         for(int i = 1;i <= n;i++){
 75             if(i == pos) continue;
 76             for(int j = 1;j <= aa[i]/2;j++){
 77                 l.push_back(i+‘a‘-1);
 78                 r.push_back(i+‘a‘-1);
 79             }
 80         }
 81         for(int j = 1;j <= aa[pos];j++){
 82             l.push_back(pos+‘a‘-1);
 83         }
 84         reverse(r.begin(),r.end());
 85         for(int j = 0;j < r.size();j++){
 86             l.push_back(r[j]);
 87         }
 88         printf("%d\n",part);
 89         for(int i = 1;i <= part;i++){
 90             for(int j = 0;j < l.size();j++){
 91                 printf("%c",l[j]);
 92             }
 93         }
 94         printf("\n");
 95     }
 96 }
 97
 98 int main(){
 99     while(scanf("%d",&n) != EOF){
100         for(int i = 1;i <= n;i++){
101             scanf("%d",&a[i]);
102         }
103         solve();
104     }
105     return 0;
106 }

时间: 2024-10-12 03:25:11

寒假第二周 1.18 --- 1.24的相关文章

寒假第二周

这周主要是完善考核的管理系统,写的过程中加深了对bootstrap的理解,总的来说就是根据需求调用相应的bootstrap.看别人写的页面内容很多,自己的一比就显得少了,但我感觉还是应该切题,后台管理系统和网站的性质有点像,刚开始写的时候也是偏题所以重写了好多个页面. 寒假说快也快,转眼间就只剩几天的时间了,没有想象中的难熬,反而是比以前更加的沉下心了.就是长时间的不活动让我感觉到身体素质上的下降了,坐的特别难受,以后还是应该在学习之余多加锻炼.还有就是吃饭问题,学校周围的饭店大多都关了门,所以

20145327寒假第二周学习总结

集合论 ——集合代数.关系.函数.集合的基数 集合的元素具有的性质:无序性.相异性.确定性.任意性 集合与元素的关系:∈.∉  集合与集合的关系:⊆, =, ?,≠ 空集是任何集合的子集, ∅是惟一的 幂集:P(A)={x | x包含于A}   计数:如果|A|=n,则|P(A)|=2*n. 集合的运算:并 A∪B = {x | x∈A ∨ x∈B} : 交 A∩B = {x | x∈A ∧ x∈B}: 相对补 A-B = {x | x∈A ∧ x∉B} : 对称差 A异或B = (A-B)∪(

第二周:PSP&amp;进度条

PSP: 一.词频统计改进 1.表格:     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(hrs) 学习 <构建之法>.Java 8:46 12:18 28 152 3  分析 读需求.分析需求 13:12 14:52 30 130 1.5  编码 具体编码 14:54 20:17 82 241 4  调试 修改代码.代码复审 20:32 21:54 18 64 1 总结 总结结果 23:06 23:39 0 33 0.5 2.饼图: 3.总结分析

HarvardX: PH525.4x Introduction to Bioconductor第二周笔记

PH525.4x第二周内容围绕GRange类的操作和使用Annotation进行数据关联两个主题展开,并展示了几个比较“炫”的功能.由于内容繁多,信息量大,故笔记之以便日后参考.该课程的演示数据为ChIP-seq的实验数据,背景为人类肝细胞(cell line:HepG2和GM12878)中被ESRRA (estrogen related receptor alpha)绑定的基因片段.在展示数据操作之前,首先检查bioconductor的版本号,不同版本的输出可能存在差异. library(Bi

hiho 第二周

Trie树,第一次写,简单的建树+搜索 它的思路hiho上讲得很清楚,good~ 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 char word[11]; 5 int n,m; 6 struct trie 7 { 8 int num; 9 trie *next[26]; 10 trie() 11 { 12 num = 0; 13 for(int i = 0; i < 26; i++) 14

OneZero第二周第三次站立会议(2016.3.30)

会议时间:2016年3月30日  13:00~13:20 会议成员:冉华,张敏,王巍,夏一鸣. 会议目的:汇报前一天工作,全体成员评论,确定会后修改内容或分配下一步任务. 会议内容: 1.前端,完成功能点为“将获取信息转化为中端所需格式”,“发送获取的信息给中端”.以下是代码部分 1 package com.onezero.account; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 im

魏昊卿——《Linux内核分析》第二周作业:了解操作系统是怎样工作的

魏昊卿——<Linux内核分析>第二周作业:了解操作系统是怎样工作的 一.实验部分 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c 使用自己的Linux系统环境搭建过程参见mykernel,其中也可以找到一个简单的时间片轮转多道程序内核代码 mymain.c myinterr

软件质量与测试第二周作业 WordCount

第二周作业 WordCount 一.Github 地址 https://github.com/llag9810/Software-Quality-and-Testing-Wordcount 二.PSP2.1 表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 60 25 · Estimate · 估计这个任务需要多少时间 30 15 Development 开发 600 810 · Analysis · 需求分析 (包括学习新技术) 60 60 · D

马哥教育学习第二周总结

第二周总结 1.linux 各个文件夹的作用 2.挂载(关机挂载是可以自动挂载,开启挂在什么呢?) 3.ldd 查看程序的依赖 库 4. Linux的文件类型:管道符,字符,块设备 5.特殊文件的删除"-a"的方法 6.生成大文件的方式和查看二进制文件方法   dd if=/dev/zero of=/data/haha bs=1M count=1024:创建全是0的二进制文件.    查看二进制文件方法 xxd / hexdump -c(看16进制) 7.linux 的文件系统: