细胞色素训练3

排名:100/193

2018年ICPC沈阳站,学长在这里拿金了。听学长说开始时候很快的出了两题,排名第四,是可以进final的,然后一直没过题,直到最后封榜时候连过两题,金牌最后一名。

如果我们第三题能做出来,再少点罚时,是可以银的。结果:铜......

How Much Memory Your Code Is Using?

题意:给出每种数据类型占用的字节数,然后输入n条语句,数据类型+数据名或者数组,输出这n条语句占用的总的内存。

程磊写这题的时候竟然忘了输出Case......

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long longconst ull p = 233;
const int maxn = 1e5+100;
char s[maxn];
ll getval(char *s)
{int len = strlen(s);ll base = 0;if(s[0] == 'b' || s[0] == 'c') base = 1;else if(s[0] == 'i' || s[0] == 'f') base = 4;else if(s[0] == 'd' || (s[0] == 'l' && s[4] == ' ' && s[5] == 'l' && s[6] == 'o' && s[7] == 'n' && s[8] == 'g' && s[9] == ' ')) base = 8;else if(s[0] == '_' || (s[0] == 'l' && s[4] == ' ' && s[5] == 'd' && s[6] == 'o' && s[7] == 'u' && s[8] == 'b' && s[9] == 'l' && s[10] == 'e' && s[11] == ' ')) base = 16;int flag = 0;for(int i = len - 1; i >= 0; i --){if(s[i] == ' '){flag = i;break;}}ll cnt = 0;int f = 0;for(int i = flag + 1; i <= len - 1; i ++){if(s[i] == '[')f = 1;if(f && s[i] >= '0' && s[i] <= '9')cnt = cnt * 10 + s[i] - '0';}if(cnt == 0) cnt = 1;return base * cnt;
}int main()
{int Case = 0;int T;scanf("%d", &T);while(T --){int n;scanf("%d", &n);getchar();ll ans = 0;for(int i = 1; i <= n; i ++){gets(s);ans += getval(s);}ll aans = ans / 1024;if(ans % 1024)aans ++;printf("Case #%d: %lld\n", ++ Case, aans);}return 0;
}

Insertion Sort

题意:题意可以转化为:输入n,k,p,输出满足以下条件的n的全排列有多少种(模p):进行k轮或者小于k轮排序后,能使这个序列的逆序数为0。大概就是这么个意思吧。

然后韩巍推出了公式:solve(n,k)=k!*(1+(n-1)*(n-k))


#include <bits/stdc++.h>
using namespace std;#define ll long long
#define ull unsigned long long
const int maxn = 100;ll n, k;
ll p;
ll f[maxn];
ll solve(ll n, ll k, ll p){ll ans = f[k] * ((1 +  (n-1) * (n-k) % p) % p) % p;ans %= p;return ans;
}
int main()
{int Case = 0;int T; scanf("%d", &T);while(T --){scanf("%lld %lld %lld", &n, &k, &p);f[0] = 1;for(int i = 1; i <= n; i ++)f[i] = 1ll * f[i-1] * i % p;ll ans;if(k >= n - 1) {ans = f[n];}else {ans = solve(n, k, p);}printf("Case #%d: %lld\n", ++Case, ans);}return 0;
}

Best ACMer Solves the Hardest Problem

题意:给你n个点的坐标和点权,然后让你进行m次操作,操作共有四种:1、插入一个点(x,y),点权为w;2、删除位于(x,y)的点;3、给距离点(x,y)的所有点的点权都加上sqrt(k);4、输出距离点(x,y)的距离为sqrt(k)的所有点的点权和。

这题到最后我们都没做出来......T了。

一个是找整点是可以初始化的,我们没有;还有就是不能用map存点,map太慢,要用数组存,数组初始化不能memset,而是要用set记录一下哪些点被用到了,只需要初始化这些用过的点即可,对于每组数据都要clear那个set。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
set<pair<ll,ll> > s;
set <pair<ll,ll> >::iterator it;
vector<pair<ll,ll> >v[10000010];
ll a[6005][6005];
const ll p = 6000;
ll n, m;
ll judge(ll x, ll z)
{ll y = z - x * x;if(y < 0) return -1;ll yy = sqrt(y);if(yy * yy == y)return yy;return -1;
}
bool ok(ll x,ll y)
{if(x>=1&&x<=p&&y>=1&&y<=p)return true;return false;
}
void init()
{ll Max=10000000;for(ll i=0;i*i<=Max;i++)for(ll j=0;i*i+j*j<=Max;j++)if(i*i+j*j<=Max)v[i*i+j*j].push_back(make_pair(i,j));return ;
}
int main()
{init();ll Case = 0;ll T;scanf("%lld", &T);while(T --){printf("Case #%lld:\n", ++ Case);scanf("%lld %lld", &n, &m);s.clear();for(ll i = 1; i <= n; i ++){ll x, y;ll z;scanf("%lld%lld%lld",&x,&y,&z);s.insert(make_pair(x,y));a[x][y]=z;}ll ans = 0;while(m --){ll op, x, y, k;ll w;scanf("%lld%lld%lld",&op,&x,&y);x =(x + ans) % p + 1, y =(y + ans) % p + 1;if(op == 1){scanf("%lld",&w);a[x][y]=w;s.insert(make_pair(x,y));}else if(op == 2){a[x][y]=0;}else if(op == 3){scanf("%lld%lld",&k,&w);if(k == 0){s.insert(make_pair(x,y));a[x][y]+=w;continue;}for(int i=0;i<v[k].size();i++){ll xx=v[k][i].first,yy=v[k][i].second;if(ok(x-xx,y-yy)&&a[x-xx][y-yy]!=0){a[x-xx][y-yy]+= w;s.insert(make_pair(x-xx,y-yy));}if(ok(x-xx,y+yy)&&yy!=0&&a[x-xx][y+yy]!=0){a[x-xx][y+yy] += w;s.insert(make_pair(x-xx,y+yy));}if(xx!=0&&ok(x+xx,y-yy)&&a[x+xx][y-yy]!=0){a[x+xx][y-yy] += w;s.insert(make_pair(x+xx,y-yy));}if(xx!=0&&yy!=0&&ok(x+xx,y+yy)&&a[x+xx][y+yy]!=0){a[x+xx][y+yy]+= w;s.insert(make_pair(x+xx,y+yy));}}}else if(op == 4){scanf("%lld",&k);ll tmp = 0;if(k == 0){tmp += a[x][y];ans = tmp;printf("%lld\n", ans);continue;}for(int i=0;i<v[k].size();i++){ll xx=v[k][i].first,yy=v[k][i].second;if(ok(x-xx,y-yy))tmp+=a[x-xx][y-yy];if(ok(x-xx,y+yy)&&yy!=0)tmp+=a[x-xx][y+yy];if(xx!=0&&ok(x+xx,y-yy))tmp+=a[x+xx][y-yy];if(xx!=0&&yy!=0&&ok(x+xx,y+yy))tmp+=a[x+xx][y+yy];}ans = tmp;printf("%lld\n", ans);}}for(it=s.begin();it!=s.end();++it){ll xx=(*it).first,yy=(*it).second;a[xx][yy]=0;}}return 0;
}

2018 ICPC 沈阳站相关推荐

  1. 21年icpc沈阳站记录

    icpc沈阳站记录 2021.11.22凌晨 从昨晚紧张到辗转反侧,虽然早就做好了打铁的心理准备,但待到比赛最后一刻两道铜牌题还没出时,满脑子的不甘心.当然最后肯定铁了395/576. 11.21也就 ...

  2. 2021 ICPC 沈阳站 D题 Journey to Un‘Goro (打表+找规律)

    2021 ICPC 沈阳站 D.Journey to Un'Goro [链接][http://codeforces.com/gym/103202/problem/D](http://codeforce ...

  3. ZOJ 4062 Plants vs. Zombies 2018 ICPC 青岛站 E Plants vs. Zombies

    ZOJ 4062 二分 哎,二分,二分,二分,我咋就没想到啊,在一篇博客上看到一句话: 一般此类最小值最大问题都是二分,此题显然也是可以二分植物的高度的. 博客链接:https://www.cnblo ...

  4. 训练实录 | 第 45 届ICPC沈阳站(牛客重现赛)

    第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳)(重现赛) 传送门:ICPC沈阳 F - The Witchwood 这重现赛,这数据,我既然被hack了,我写的代码太拉跨了????? ...

  5. 2018 ACM/ICPC 沈阳站小结

    第二次现场赛,能拿金已经很开心了 热身赛 开幕式后的热身赛都是训练过的三个题,40min基本就解决了,剩下的时间就是在调试机器什么的 现场赛 上来队友先过了J的模拟,我看了看G题,发现可做就直接上了, ...

  6. 2018 ACM/ICPC 沈阳站 J How Much Memory Your Code Is Using?

    题目描述 In the C++ language, the values of variables are stored somewhere in the computer memory as zer ...

  7. 2018 icpc 焦作站 自闭记

    今年三站,秦皇岛,徐州,焦作.全部打铜,心情不是一般的失落. 可能我真的只有铜牌的水平吧. 我们5题 14个小时罚时,离银牌线还差5个小时罚时. 如果我码力再强一点,F题不出bug 这里就能少3个小时 ...

  8. Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何

    去年暑假集训了两个月就去了焦作,这个题一直卡着到最后也没做出来,很遗憾的在人生中第一场 ICPC 比赛打了铁.当时也没有补题的习惯,这个题知道了大致做法后就放过了.今年准备银川赛区,翻出了往年的比赛真 ...

  9. 2020 ICPC沈阳站-D,H

    icpc好难啊,希望有生之年能拿牌ort..... D. Journey to Un'Goro (思维) 链接:https://codeforces.com/gym/103202/problem/D ...

最新文章

  1. hive创建mysql表,hiveMysql创建、修改、删除字段/表
  2. cmd c语言 图形,CMD-C彩图隐写方案
  3. 《中国人工智能学会通讯》——11.64 基于成对约束的属性特征选择
  4. delphi tpanel 内凹效果_别墅装修公司前十名|别墅装修效果图|现代精致简约
  5. futuretask java 并发请求_Java并发机制(9)--Callable、Future、FutureTask的使用
  6. 保持ssh的连接不断开
  7. 拓端tecdat|R语言用相关网络图可视化分析汽车配置和饮酒习惯
  8. 工作流引擎 开发框架 java源码 电商源码
  9. Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比
  10. js实现——鼠标单击事件-onclick和双击事件-ondblclick
  11. pdo操作oracle,PDO基础操作
  12. 常见安全漏洞及其解决方案
  13. 数据可视化——投掷两个6面的骰子
  14. 剑指offer——栈
  15. 不知道视频怎样提取音频?这里有详细教程分享
  16. SAP 采购申请、采购订单的审批策略
  17. 基于ruoyi+vue+elementUI实现列表,新增,附件上传,tab+springBoot+mybatis+oracle序列+批量新增
  18. vue合并表格excel导出_Vue实现导出excel表格功能
  19. iOS iPhone X 适配
  20. 在Python中使用StanfordOpenIE

热门文章

  1. java基本微信小程序的琴房预约管理系统 uniapp 小程序
  2. 收藏一篇访谈并做笔记:《[独家]与周鸿祎谈乔布斯》
  3. 终于修改了EXE的图标罗
  4. Matlab中的persistent变量
  5. 计算机底层:海明校验码。
  6. download 下载文件 IE兼容性处理
  7. OpenCV 形态学操作应用——提取水平与垂直线
  8. 怎样给证件照快速改底色?告诉大家一个简单方法
  9. 信息系统项目管理师对入户广州还能发挥作用吗?
  10. UG\NX二次开发 获取曲线上某个位置的点坐标、切线矢量、主法线矢量、副法线矢量 UF_MODL_ask_curve_props