CF round 336 div2 总结
来源:互联网 发布:淘宝网站推广软件 编辑:程序博客网 时间:2024/05/29 15:11
A
模拟或者取最大值均可
struct node{ int x,y; bool operator < (const node &b)const{ return x<b.x; }}s[10001];int main(){ int n,m;cin>>n>>m;int ans=0; for(int i=1;i<=n;i++){ //cin>>s[i].x>>s[i].y; int x,y;cin>>x>>y; ans=max(ans,max(y,m-x)+x); } cout<<ans<<endl; //sort(s+1,s+n+1); /*int now=m,t=0,ans=0; for(int i=n;i>=1;i--){ t=max(s[i].y,t+now-s[i].x); now=s[i].x; } cout<<t<<endl;*/}B
没开longlong和数组没开够。。wa了2发
#define ll long longll num[2][200010];char s[200010];char c[200010];ll S,T;ll ans;void pre(){ for(ll i=1;i<=S;i++){ num[0][i]=num[0][i-1]; num[1][i]=num[1][i-1]; if(s[i]-'0'==0) num[0][i]++; else num[1][i]++; } }void work(){ for(ll i=1;i<=T;i++){ ll l=1,r=S; r=min(r,i);l=max(l,i+S-T); ans+=(num[0][r]-num[0][l-1])*abs(0-(c[i]-'0')); ans+=(num[1][r]-num[1][l-1])*abs(1-(c[i]-'0')); }}void print(){ cout<<ans;}int main(){ scanf("%s%s",s+1,c+1); S=strlen(s+1),T=strlen(c+1); pre();work();print();}
C
二分+判断,开始读错题辣然后wa了好久
最后还有,题目中没有保证读入有序啊!
#define inf 1000000000ll#define ll long longusing namespace std;struct node{ ll x;ll y;}t[1000010];ll n,a[1000010],b[1000010],s[1000010],ans=inf<<2ll;bool comp(const node &a,const node &b){ return a.x<b.x;}void init(){ cin>>n; for(ll i=1;i<=n;i++)R(t[i].x),R(t[i].y); sort(t+1,t+n+1,comp); for(ll i=1;i<=n;i++)a[i]=t[i].x,b[i]=t[i].y; }void work(){ a[0]=-inf;s[0]=0; for(ll i=1;i<=n;i++){ ll head=0,tail=i; while(head!=tail){ ll mid=(head+tail)>>1; if(a[i]-a[mid]>b[i]){ head=mid+1; } else{ tail=mid; } } while(a[i]-a[head]<=b[i] && head!=0){ head--; } while(a[i]-a[head+1]>b[i] && head+1<i && head!=i){ head++; } s[i]=s[head]+i-head-1; } }void print(){ for(ll i=1;i<=n;i++){ ans=min(ans,n-i+s[i]); } cout<<ans;}int main(){ init();work();print(); }D
n^3区间dp
dp[i][j] 意为i到j最少用多少串
枚举断点,转移就好
因为把最优解覆盖了又WA14
int dp[505][505]; int a[505],n;int update(int sta,int end){ if(sta==end)return 1; if(sta>end)return 0; if(a[sta]==a[end])dp[sta][end]=min(dp[sta][end],dp[sta+1][end-1]); if(a[sta]==a[end] && sta==end-1)dp[sta][end]=1; dp[sta][end]=min(dp[sta][end],dp[sta+1][end]+1); dp[sta][end]=min(dp[sta][end],dp[sta][end-1]+1); return dp[sta][end];}int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; dp[i][i]=1; } for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ dp[i][j]=inf; } } for(int i=1;i<=n-1;i++){ for(int j=1;j<=n-i;j++){ int sta=j,end=i+j; update(sta,end); for(int k=sta;k<=end-1;k++){ dp[sta][end]=min(dp[sta][end],update(sta,k)+update(k+1,end)); } } } cout<<dp[1][n]<<endl;}
因为加了很多头文件和各种数据结构,就只发有用的部分了
1 0
- CF round 336 div2 总结
- CF #190(DIV2)总结
- CF round #79 div2 D bues
- CF #Round 367.Div2 字典树
- CF Round 418(div2) E题解
- CF round 419 (div2)C题
- Codeforces Round #336 div2
- CF Round #324 (Div2) D. Dima and lisa
- CF Round#324 (Div2) E. Anton and Ira
- CF Round #325 Div2 D. Phillip and Trains
- CF Round#333 Div2 C. The Two Routes
- CF Round#333 Div2 B. Approximating a Constant Range
- cf round 384 div2 E,二分 + 状压DP
- CF-Round#403 Div2 A. Andryusha and Socks
- CF round 277 (div2) D题 树形dp
- CF Round 423 Div2 PC(思维题)
- CF Round#424(div2)D题 二分+贪心
- CF Round#381(div2)C 思维+构造
- 二维码和相片在SQLite中的图片保存和查询
- linux常用命令
- 深入理解javascript之设计模式
- 《线程的同步》 与 Linux 查看系统硬件信息(实例详解)
- c语言小游戏测试总结
- CF round 336 div2 总结
- objective-c语言_内存管理
- Android 新浪微博开发—OAuth2.0
- Hello world!
- 导出你的开发者档案
- swift中获取网络图片
- 完整的创建数据库及实例,数据泵的导入、导出 impdp expdp
- ESXi为虚拟机选择网络适配器 (2093486)
- 创建型:设计模式之单例模式(三)