尽快调整回来,这可能是你人生最重要的一年,好好审视自己,拎得清一点,丢弃掉无谓的担心,清楚自己在做什么。
既然大二有能力去做好一些事,那么大三就更没必要畏首畏尾,认真做好每一件事,还是那句话,把握好你能掌控住的东西,脚踏实地得努力实现。只要愿意去做,就一定能做好,待人可以平和,但是心气不能掉,懒惰会毁掉一个人。
再做不到,直接remake去吧


J. Eat, Sleep, Repeat

思路还算简单,只有出现次数从0开始连续向上的数,才会卡住一些数让他们不能递减。
代码我敲的很卡,不知道怎么写好。
代码思路:
1.使用map存下所有的限制条件,单独筛选出出现次数为0的数字存到数组中记为id。
2.对于数组a和数组id都进行降序排列。对数组id进行循环,为每个数组a中数字找到下界。
3.对数组a进行循环,不断向上取,每一个数有mp进行数量限制。

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define PII pair<int,int>using namespace std;
const int N =7e5+5;
const int inf=1e18;
const int mod=998244353;
const double eps=1e-8;
int n,k,m,a[N],id[N],vis[N];
struct node
{int val,cnt;
}e[N];
bool cmp(int a,int b){return a>b;}
map<int,int>mp;
void solve()
{cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];for(int i=0;i<=n;i++) id[i]=vis[i]=0;mp.clear();m=0;for(int i=1;i<=k;i++){cin>>e[i].val>>e[i].cnt;mp[e[i].val]=e[i].cnt;if(e[i].cnt==0) id[++m]=e[i].val;}sort(a+1,a+n+1,cmp);sort(id+1,id+m+1,cmp);for(int i=1,j=1;i<=m;i++){while(id[i]>a[j]&&i<=m) i++;if(i>m) break;while(id[i]<a[j]) vis[j]=id[i]+1,j++;}int y=0,ans=0;for(int i=1;i<=n;i++){if(vis[i]){int x=vis[i];while(mp.count(x)&&mp[x]<=0) x++;ans+=a[i]-x;if(mp.count(x)) mp[x]--;}else{while(mp.count(y)&&mp[y]<=0) y++;ans+=a[i]-y;if(mp.count(y)) mp[y]--;}}if(ans&1) cout<<"Pico"<<endl;else cout<<"FuuFuu"<<endl;
}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}

C. Grass

首先要想到一块草坪若5个点共线肯定不存在,否则就能找到一块符合条件的草坪。因此我们只要固定四个点,去找不共线的第五个点。
对于5个点的判断:方法很多,都很难敲,看到个很巧妙的方法。用set集合,使用最大公约数化成最简形式,观察数量。比我想的一堆垃圾方法好多了。。。

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define PII pair<int,int>using namespace std;
const int N =3e4+5;
const int inf=1e18;
const int mod=998244353;
const double eps=1e-8;
int n;
struct Point
{int x,y;
}p[N],P[6];
bool check()
{for(int i=1;i<=5;i++){set<pair<int,int>>s;for(int j=1;j<=5;j++){if(j!=i){int x=p[i].x-p[j].x,y=p[i].y-p[j].y;int tmp=__gcd(x,y);tmp=abs(tmp);s.insert({x/tmp,y/tmp});}}if(s.size()==4){P[1]={p[i].x,p[i].y};int g=1;for(int j=1;j<=5;j++)if(j!=i) P[++g]={p[j].x,p[j].y};return 1;}}return 0;
}
void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y;int flag=0;if(n<5){cout<<"NO"<<endl;return;}for(int i=5;i<=n;i++){swap(p[i],p[5]);if(check()){flag=1;break;}}if(flag){cout<<"YES"<<endl;for(int i=1;i<=5;i++)cout<<P[i].x<<" "<<P[i].y<<endl;}elsecout<<"NO"<<endl;}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}

C. Complementary XOR

在题数没积累到一定量时,一眼是看不出来的,需要安静下来去分析,浮躁很难做出题来。
思路:
1.如果两个字符串的相同位置既存在值相同的情况,也存在值不同的情况,那么肯定是无解的。
eg: 0 1
—- 1 1
总会存在一个消不去的1。
2.将s1中的1全部化为0,需要g次。若g为偶数,则满足题意;若g为奇数,在最后一个1划掉后,s2全部变为1,进行如下三次操作:对s1的1~n进行翻转,再对1 ~1、2 ~n进行翻转。

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define PII pair<int,int>using namespace std;
const int N =1e6+5;
const int inf=1e18;
const int mod=998244353;
int n;
string s1,s2;
void solve()
{cin>>n>>s1>>s2;s1=" "+s1;s2=" "+s2;int f1=0,f2=0;for(int i=1;i<=n;i++){if(s1[i]==s2[i]) f1=1;  //各个位置相同else f2=1;              //各个位置不同}if(f1&&f2){cout<<"No"<<endl;return;}cout<<"Yes"<<endl;vector<pair<int,int>>e;int ans=0,g=0;if(!f1&&f2){ans++;e.push_back({1,n});for(int i=1;i<=n;i++) s1[i]^=1;}for(int i=1;i<=n;i++)if(s1[i]=='1') ans++,g++,e.push_back({i,i});if(g%2)ans+=3,e.push_back({1,n}),e.push_back({1,1}),e.push_back({2,n});cout<<ans<<endl;for(auto x:e)cout<<x.first<<" "<<x.second<<endl;
}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}

I. Dragon Bloodline

详细注释在代码中,实在是难写。。。。好菜啊好菜

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define PII pair<int,int>using namespace std;
const int N =7e5+5;
const int inf=1e18;
const int mod=998244353;
const double eps=1e-8;
int n,k,a[N],b[105],c[105],f[N],suma=0,sumb=0,sum=0,d[N];
bool check(int x)   //二分蛋的数量
{int kk=0,g=x;for(int i=1;i<=n;i++){d[i]=a[i]*x;    //每种物质需要数量kk+=d[i];if(kk>sum) return 0;}for(int i=1;i<=k;i++) f[i]=b[i];  //工作的龙数量for(int i=k;i>=1;i--){sort(d+1,d+n+1);    //物质排序、贪心for(int j=n;j>=1&&f[i]&&d[j];j--){int tmp=d[j]/c[i];  //需要的龙if(tmp>f[i]){d[j]-=c[i]*f[i];f[i]=0;}else{d[j]-=c[i]*tmp;f[i]-=tmp;}}sort(d+1,d+n+1);for(int j=n;f[i];j--){if(d[j]){d[j]=0;f[i]--;}else return 1;}}for(int i=1;i<=n;i++)if(d[i]) return 0;return 1;
}
void solve()
{suma=0,sumb=0,sum=0;cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i],suma+=a[i]; //需要的物质sort(a+1,a+n+1);for(int i=1;i<=k;i++)   //工作龙{cin>>b[i];sumb+=b[i];if(i==1) c[i]=1,sum+=c[i]*b[i];else c[i]=c[i-1]*2,sum+=c[i]*b[i];}int l=0,r=sum/suma,mid,ans;while(l<=r){mid=(l+r)>>1;if(check(mid)) l=mid+1,ans=mid;else r=mid-1;}cout<<ans<<endl;
}
signed main()
{ios;int T;cin>>T;while(T--)solve();return 0;
}

22CCPC威海+思维相关推荐

  1. 2020CCPC(威海) - Labyrinth(bfs+思维)

    题目大意:给出一个 n * m 的矩阵,在矩阵内部最有 k 个黑洞(表示不可行走的区域),现在给出 q 次询问,每次询问给出两个点 ( x1 , y1 ) 和 ( x2 , y2 ) ,问从点 ( x ...

  2. 2020威海CCPC D,思维训练

    ABC Conjecture 题意:给定一个数c,请你判断是否存在这样的两个数a和b,满足a+b=c,并且abc的质因子的乘积小于c(重复的质因子视为一个). 思路:我首先发现对于这个题来讲,第一个条 ...

  3. 智能车竞赛技术报告 | 智能车视觉 - 山东大学(威海) - 山魂五队

    简 介: 本文详细介绍了山东大学(威海)山魂五队在第十六届"恩智浦"杯全国大学生智能汽车竞赛智能视觉组中的系统方案,包括硬件电路设计.机械结构设计.巡线算法以及识别算法的设计等.本 ...

  4. 2020CCPC威海

    2020CCPC威海 2020CCPC威海榜单 题号 题目 知识点 难度 A Golden Spirit 思维,推导题 签到题 B Labyrinth dfs+思维 金牌题 C Rencontre D ...

  5. Gym 102798A(思维) acm寒假集训日记21/12/31or22/1/1

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  6. 一体化大威海的战略抉择

    编者按 为深入实施市第十四次党代会提出的"中心崛起.两轴支撑.环海发展.一体化布局"战略部署,今年以来,市委.市政府着眼于加速推进市域一体发展,对城市发展空间进行了新的谋划,全面启 ...

  7. 计算机保研夏令营预推免面试经验(吉林大学+哈工大威海+北京理工医工融合

    2021年保研,最终去向哈尔滨工业大学威海,计算机专硕 基本情况:211,rank 7%,少许竞赛少许科研少许项目,无论文,本科软件工程 夏令营面试: 7月初入营了吉林大学软件学院,优秀营员排名第7 ...

  8. C9高校【哈工大威海校区】拟建未来技术学院

    为了进一步推动高等工程教育改革,加快培养具有前瞻交叉思维的科技创新人才,切实推进新工科建设再深化.再拓展.再突破.再出发, 8月10日上午,哈工大威海校区"未来技术学院"建设研讨会 ...

  9. 17届智能车竞赛-极速越野 | 山东大学(威海)-越野三队

    学校:山东大学(威海)     队伍名称:越野三队       参赛队员:郑睿.茅陈昕.余海波 带队教师:王小利刘萍萍     01 引  言   第十七届全国大学生智能车竞赛将于 2022年七至八月 ...

最新文章

  1. android 开启一个定时线程_Android异步、延迟和定时任务的简易用法
  2. 《精通ArcGIS Server 应用与开发》——第 1 章 ArcGIS 10简介1.1 ArcGIS 10体系结构1...
  3. 信息检索(IR)的评价指标介绍-准确率、召回率、F1、mAP、ROC、AUC
  4. 高低配系统直流控制电源技术知识点
  5. 计算机视觉方面代码和论文
  6. 【搭建web服务器】以及web的所有配置
  7. Visual Studio 2005 Tip:编辑项目文件
  8. jquery-autocomplete学习(转)
  9. POS机移动刷卡机自适应网站源码 dedecms织梦模板
  10. 使用Hutool来实现深拷贝
  11. 16进制转ascii,转字符串
  12. mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
  13. 数据呈现—ListView x Adapter
  14. List常用方法总结
  15. CIF、DCIF、D1分辨率
  16. 桌面好看的linux系统,可以当桌面的LINUX漂亮壁纸
  17. iphone 如何获得系统时间和日期
  18. ArcGIS坡度分析(解决坡度分析80-89°高值居多)
  19. js股票K线图,比较专业的K线图插件
  20. 谷歌教你25招构建一个优秀的移动网站

热门文章

  1. Android 两种方式优雅实现按钮防重复点击,防抖功能
  2. 打造高质效的技术团队 —— 酝酿篇
  3. 面试官问到布隆过滤器,还好我阅读过这篇博客
  4. int main()与void main()区别?
  5. PowerDesigner学习--概要介绍
  6. 【Java开发】设计模式 03:建造者模式
  7. 1060 爱丁顿数 (极简)
  8. Linux 光盘刻录和windows光盘刻录不能兼容问题
  9. 零打碎敲学Android(四)—跳跃的火之意志!
  10. 淘宝、抖快在前,B站直播带货的“小黄车”剑指何方?